3. Segmentació d'objectes
Segmentació d'Imatges
La segmentació d'imatges consisteix en classificar cada píxel d'una imatge en diferents categories o classes. A diferència de la detecció d'objectes, que només proporciona caixes delimitadores al voltant dels objectes, la segmentació ofereix una comprensió més detallada de la imatge, assignant una etiqueta a cada píxel.
Amb YOLO podem realitzar segmentació d'imatges utilitzant models específics dissenyats per a aquesta tasca, com ara YOLOv8 Segmentation. Aquests models són capaços de detectar i segmentar objectes en temps real, oferint una solució eficient per a diverses aplicacions.
Possibles cassos d'ús:
- Anàlisi mèdic: Segmentació d'òrgans o tumors en imatges mèdiques per a diagnòstics més precisos.
- Visió per computador en vehicles autònoms: Identificació i segmentació de carrers, senyals de trànsit i altres elements de l'entorn.
- Agricultura de precisió: Segmentació de cultius i detecció de malalties en plantes a partir d'imatges aèries.
- Seguretat i vigilància: Identificació i seguiment de persones o objectes en zones vigilades. Comprovar per exemple que en una obra tots els treballadors portin casc i armilla reflectant.
- Anàlisi esportiva: Seguiment i anàlisi del moviment dels jugadors i la pilota en esdeveniments esportius.
Conceptes bàsics de segmentació
Per entendre completament la utilitat de la segmentació per instàncies, és útil diferenciar-la d'altres tasques relacionades de processament d'imatges. Cada mètode ofereix un nivell diferent de granularitat depenent dels requisits de l'aplicació.
-
Segmentació semàntica: Aquest enfocament classifica cada píxel d'una imatge en una categoria (per exemple, "carretera", "cel", "cotxe"). Tanmateix, no distingeix entre objectes separats de la mateixa categoria. Si tres cotxes estan estacionats un al costat de l'altre, la segmentació semàntica els veu com una única regió "cotxe".
-
Segmentació per instàncies: Aquest mètode tracta cada objecte com una entitat única. Detecta instàncies individuals i assigna una etiqueta única als píxels de cadascuna. En l'exemple dels cotxes estacionats, la segmentació per instàncies crearia tres màscares diferents, identificant "Cotxe A", "Cotxe B" i "Cotxe C" per separat.
-
Segmentació panòptica: Un enfocament híbrid que combina l'etiquetatge de fons de la segmentació semàntica amb la identificació d'objectes comptables de la segmentació per instàncies.
Càrrega del model de segmentació
Primerament, cal carregar un model de segmentació preentrenat. Yolo ofereix diversos models per a aquesta tasca, com ara yolov8n-seg.pt, on el sufix -seg indica que és un model de segmentació.
| Python | |
|---|---|
A continuació seria carregar la imatge que volem processar i realitzar la segmentació:
| Python | |
|---|---|
També: - es pot processar una imatge amb la seuia ruta. - es pot processar un vídeo o una càmera en temps real, simplement passant la ruta del vídeo o l'índex de la càmera al model.
Resultats de la segmentació
Al aplicar una segmentació, el model retorna una objecte Results de manera similar a la detecció d'objectes, però amb informació addicional sobre les màscares de segmentació. Aquest objecte conté les següents propietats addicionals:
masks: Un array que conté les màscares de segmentació per a cada objecte detectat. Cada màscara és una imatge binària on els píxels que pertanyen a l'objecte tenen un valor de 1 i els altres tenen un valor de 0.masks.data: Un array de numpy que conté les màscares de segmentació en format binari.masks.xy: Un array que conté les coordenades dels píxels que pertanyen a cada màscara de segmentació.masks.xywh: Un array que conté les coordenades de les caixes delimitadores que envolten les màscares de segmentació.
És a dir, a banda dels BoundingBox que determinen cada objecte, també es pot accedir a les màscares de segmentació que defineixen la forma exacta de cada objecte detectat. Això permet una anàlisi més detallada i precisa de la imatge, ja que es pot treballar amb la forma completa dels objectes en lloc de només les caixes delimitadores.