Korábban már tanultunk az objektumfelismerésről, amely lehetővé teszi számunkra, hogy azonosítsuk az objektumok helyét a képen az határoló dobozok előrejelzésével. Azonban bizonyos feladatokhoz nemcsak határoló dobozokra van szükségünk, hanem pontosabb objektumlokalizációra is. Ezt a feladatot szegmentációnak nevezzük.
A szegmentációt tekinthetjük pixelek osztályozásának, ahol a kép minden egyes pixeléről meg kell jósolnunk az osztályát (háttér is egy osztály). Két fő szegmentációs algoritmus létezik:
- Szemantikus szegmentáció, amely csak a pixel osztályát határozza meg, és nem különbözteti meg az azonos osztályba tartozó különböző objektumokat.
- Instance szegmentáció, amely az osztályokat különböző példányokra bontja.
Például az instance szegmentáció esetében ezek a juhok különböző objektumok, míg a szemantikus szegmentáció esetében az összes juh egy osztályba tartozik.
Kép ebből a blogbejegyzésből
Különböző neurális architektúrák léteznek a szegmentációhoz, de mindegyiknek ugyanaz a felépítése. Bizonyos értelemben hasonlít az autoenkóderhez, amelyről korábban tanultál, de az eredeti kép rekonstruálása helyett a célunk egy maszk rekonstruálása. Így egy szegmentációs hálózat a következő részekből áll:
- Kódoló: kivonja a jellemzőket a bemeneti képből.
- Dekódoló: ezeket a jellemzőket átalakítja a maszk képpé, amelynek mérete és csatornaszáma megegyezik az osztályok számával.
Kép ebből a publikációból
Különösen meg kell említenünk a szegmentációhoz használt veszteségfüggvényt. Klasszikus autoenkóderek használatakor mérnünk kell a hasonlóságot két kép között, és ehhez használhatjuk a négyzetes hibaátlagot (MSE). A szegmentációban a célmaszk kép minden egyes pixele az osztályszámot képviseli (egy-egy forró kódolással a harmadik dimenzió mentén), ezért osztályozás-specifikus veszteségfüggvényeket kell használnunk - keresztentrópia-veszteséget, amelyet az összes pixelre átlagolunk. Ha a maszk bináris, akkor bináris keresztentrópia-veszteséget (BCE) használunk.
✅ Az egy-egy forró kódolás egy olyan módszer, amely egy osztálycímkét egy olyan vektorrá alakít, amelynek hossza megegyezik az osztályok számával. Nézd meg ezt a cikket erről a technikáról.
Ebben a leckében a szegmentációt gyakorlatban is megfigyelhetjük, amikor a hálózatot arra tanítjuk, hogy felismerje az emberi anyajegyeket (más néven nevi) orvosi képeken. A képek forrásaként a PH2 adatbázist fogjuk használni. Ez az adatbázis 200 képet tartalmaz három osztályból: tipikus anyajegy, atipikus anyajegy és melanoma. Minden képhez tartozik egy maszk, amely körvonalazza az anyajegyet.
✅ Ez a technika különösen alkalmas az ilyen típusú orvosi képalkotásra, de milyen más valós alkalmazásokat tudnál elképzelni?
Kép a PH2 adatbázisból
Egy modellt fogunk betanítani arra, hogy bármilyen anyajegyet elkülönítsen a háttértől.
Nyisd meg az alábbi jegyzetfüzeteket, hogy többet megtudj a különböző szemantikus szegmentációs architektúrákról, gyakorold a velük való munkát, és lásd őket működés közben.
A szegmentáció egy nagyon erőteljes technika a képosztályozásban, amely túlmutat a határoló dobozokon, és pixel szintű osztályozást tesz lehetővé. Ez a technika az orvosi képalkotásban és más alkalmazásokban is használatos.
A test szegmentációja csak egy a gyakori feladatok közül, amelyeket emberekről készült képekkel végezhetünk. Más fontos feladatok közé tartozik a csontváz-felismerés és a testtartás-felismerés. Próbáld ki az OpenPose könyvtárat, hogy lásd, hogyan használható a testtartás-felismerés.
Ez a wikipedia cikk jó áttekintést nyújt ennek a technikának a különböző alkalmazásairól. Tanulj többet önállóan az Instance szegmentáció és a Panoptikus szegmentáció alágazatairól ezen a területen.
Ebben a laborban próbáld ki az emberi test szegmentációját a Segmentation Full Body MADS Dataset adathalmazzal a Kaggle-ről.


