Az előző leckében megismert objektumdetektálás megtalálja az objektumokat körülvevő téglalapokat, de bizonyos feladatoknál ennél sokkal pontosabb határvonalra van szükség. Ezt a feladatot szegmentálásnak nevezzük, és lényegében pixelenkénti osztályozásként fogható fel, ahol a kép minden egyes pixeléhez hozzárendelünk egy osztályt, a hátteret is beleértve.
A szegmentálásnak két fő fajtája van. A szemantikus szegmentálás csak azt mondja meg, melyik pixel melyik osztályba tartozik, de nem tesz különbséget az azonos osztályba tartozó egyedi objektumok között. Ha például egy képen több juh látható, a szemantikus szegmentálás mindegyiket egyetlen "juh" osztályba sorolja. Az instance szegmentálás ezzel szemben az egyes példányokat is elkülöníti egymástól, tehát minden juhot külön objektumként kezel.
A szegmentáló hálózat felépítése
A szegmentáló architektúrák szerkezete sokban emlékeztet az autoenkóderre, amelyről korábban már volt szó, azzal a különbséggel, hogy itt a cél nem az eredeti kép, hanem egy maszk rekonstruálása. Az enkóder rész kinyeri a bemeneti kép jellemzőit, a dekóder rész pedig ezekből a jellemzőkből felépíti a maszkot, amelynek mérete megegyezik a bemenettel, csatornáinak száma pedig az osztályok számával.
A veszteségfüggvény kiválasztása is eltér a hagyományos autoenkóderekétől. Mivel a maszk minden pixele valójában egy osztálycímke, nem használhatunk egyszerű négyzetes hibaátlagot, hanem osztályozásra szánt veszteségfüggvényre van szükség, jellemzően keresztentrópia veszteségre, amelyet az összes pixelre átlagolunk. Ha a maszk bináris, vagyis csak két osztályt különböztetünk meg, akkor bináris keresztentrópia veszteséget alkalmazunk.
Szegmentálás orvosi képalkotásban
A szegmentálás egyik legértékesebb alkalmazási területe az orvosi képalkotás. Egy tipikus feladat, hogy a hálózatot megtanítjuk felismerni az emberi anyajegyeket, latin nevükön nevusokat, dermoszkópiás felvételeken. Az ehhez használt PH2 adatbázis kétszáz képet tartalmaz három osztályból, tipikus anyajegy, atipikus anyajegy és melanoma, minden képhez pedig tartozik egy pontos maszk, amely körülhatárolja az anyajegy területét. A betanított modell így nemcsak felismeri, hanem pixelre pontosan el is választja az anyajegyet a környező bőrfelülettől, ami komoly segítséget jelenthet a diagnosztikában.
Az egyik legelterjedtebb architektúra erre a feladatra az U-Net, amely a nevét a jellegzetes U alakú felépítéséről kapta. Az enkóder ág fokozatosan csökkenti a kép térbeli felbontását, miközben egyre elvontabb jellemzőket von ki, a dekóder ág pedig ezekből fokozatosan visszaépíti a teljes felbontású maszkot. A hálózat két oldala között úgynevezett átugró kapcsolatok viszik át közvetlenül a magas felbontású jellemzőket, így a dekóder nemcsak a tömörített, elvont reprezentációra támaszkodik, hanem a finom térbeli részletekre is, ez pedig lényegesen pontosabb, élesebb maszkokat eredményez, még viszonylag kevés tanítóadat mellett is.
Túl az orvosi képeken
A pixelpontos szegmentálás nem korlátozódik orvosi felhasználásra. Emberekről készült képeken hasonló elven épül fel a csontváz felismerés és a testtartás felismerés is, amelyek a testrészek pontos elhelyezkedését azonosítják. Az ilyen technikák állnak a sportelemzés, a mozgáskövetés vagy akár a kiterjesztett valóság alkalmazások mögött is.
A szegmentálásnak van egy harmadik, egyre népszerűbb változata is, az úgynevezett panoptikus szegmentálás, amely a szemantikus és az instance szegmentálás előnyeit próbálja egyesíteni. Ebben a megközelítésben minden pixelhez egyszerre rendelünk osztálycímkét és, ahol értelmezhető, egyedi objektumazonosítót is, így egyetlen kimeneten belül kapjuk meg azt a teljes képet, hogy mi hol van, és hány külön példány tartozik ugyanahhoz az osztályhoz.
Miért érdemes vállalati oldalról ismerni
A szegmentálás azért különösen fontos üzleti szempontból, mert olyan feladatokat old meg, amelyeknél a puszta felismerés vagy a bounding box nem elég pontos válasz. Gyártásközi minőségellenőrzésnél például nem elég tudni, hogy egy alkatrészen van-e hiba, azt is látni kell, pontosan mekkora területet érint a sérülés. Mezőgazdasági dróntechnológiánál a szegmentálás segít elkülöníteni a beteg és egészséges növényi részeket egy táblán belül. Az orvosi diagnosztikában pedig a daganatok vagy elváltozások pontos körülhatárolása közvetlenül befolyásolja a kezelési tervet, ezért ott a pixelpontos eredmény nem luxus, hanem alapkövetelmény.
Fontos hangsúlyozni, hogy az orvosi felhasználású szegmentáló modellek önmagukban nem helyettesítik az orvosi szakértelmet, hanem döntéstámogató eszközként érdemes rájuk tekinteni. A modell gyorsan és következetesen kiemeli a vizsgálandó területet, a végső diagnózist és a kezelési döntést azonban minden esetben szakembernek kell meghoznia. Ez a szemlélet a legtöbb, kockázatosabb területen alkalmazott gépi látási megoldásra igaz, a szegmentálás egy erős asszisztens, nem egy önálló döntéshozó.
Gyakorlati kód
A szemantikus szegmentálás gyakorlati megvalósítását PyTorchban a Microsoft eredeti jegyzetfüzete mutatja be, a PH2 adatbázison. Gyakorlati kód a GitHubon.
Forrás
Ez a lecke a Microsoft nyílt forráskódú, MIT licenc alatt elérhető "AI For Beginners" tananyagának magyar adaptációja. Eredeti angol lecke. GitHub. Felhasznált magyar gépi fordítás. GitHub.
Workshop
AI Transformation Day
Egésznapos, vezetőknek szóló program. Feltérképezzük, hol tart a szervezet, mi az első reális lépés, és milyen belső feltételek szükségesek a sikerhez. A nap végén konkrét, prioritizált cselekvési lista.
Érdekel a program →