5.3 KiB
Segmentazione
Abbiamo precedentemente imparato il rilevamento degli oggetti, che ci consente di localizzare gli oggetti in un'immagine prevedendo le loro bounding boxes. Tuttavia, per alcune attività non ci servono solo le bounding boxes, ma anche una localizzazione più precisa degli oggetti. Questa attività si chiama segmentazione.
Quiz pre-lezione
La segmentazione può essere vista come una classificazione dei pixel, in cui per ogni pixel dell'immagine dobbiamo prevedere la sua classe (sfondo essendo una delle classi). Esistono due principali algoritmi di segmentazione:
- Segmentazione semantica indica solo la classe del pixel e non distingue tra diversi oggetti della stessa classe.
- Segmentazione per istanza suddivide le classi in diverse istanze.
Ad esempio, nella segmentazione per istanza, queste pecore sono oggetti diversi, ma nella segmentazione semantica tutte le pecore sono rappresentate da una sola classe.
Immagine tratta da questo articolo
Esistono diverse architetture neurali per la segmentazione, ma tutte hanno la stessa struttura. In un certo senso, è simile all'autoencoder che hai imparato in precedenza, ma invece di decostruire l'immagine originale, il nostro obiettivo è decostruire una maschera. Pertanto, una rete di segmentazione ha le seguenti parti:
- Encoder estrae le caratteristiche dall'immagine di input.
- Decoder trasforma queste caratteristiche nell'immagine maschera, con la stessa dimensione e numero di canali corrispondenti al numero di classi.
Immagine tratta da questa pubblicazione
Dobbiamo menzionare in particolare la funzione di perdita utilizzata per la segmentazione. Quando si utilizzano autoencoder classici, dobbiamo misurare la somiglianza tra due immagini e possiamo utilizzare l'errore quadratico medio (MSE) per farlo. Nella segmentazione, ogni pixel nell'immagine maschera target rappresenta il numero della classe (codificato in one-hot lungo la terza dimensione), quindi dobbiamo utilizzare funzioni di perdita specifiche per la classificazione: la perdita di entropia incrociata, mediata su tutti i pixel. Se la maschera è binaria, si utilizza la perdita di entropia incrociata binaria (BCE).
✅ La codifica one-hot è un modo per codificare un'etichetta di classe in un vettore di lunghezza pari al numero di classi. Dai un'occhiata a questo articolo su questa tecnica.
Segmentazione per Immagini Mediche
In questa lezione, vedremo la segmentazione in azione allenando la rete a riconoscere nevi umani (noti anche come nei) su immagini mediche. Utilizzeremo il Database PH2 di immagini dermoscopiche come fonte di immagini. Questo dataset contiene 200 immagini di tre classi: nevo tipico, nevo atipico e melanoma. Tutte le immagini contengono anche una maschera corrispondente che delinea il nevo.
✅ Questa tecnica è particolarmente adatta per questo tipo di immagini mediche, ma quali altre applicazioni reali potresti immaginare?
Immagine tratta dal Database PH2
Alleneremo un modello per segmentare qualsiasi nevo dal suo sfondo.
✍️ Esercizi: Segmentazione Semantica
Apri i notebook qui sotto per saperne di più sulle diverse architetture di segmentazione semantica, esercitarti a lavorare con esse e vederle in azione.
Quiz post-lezione
Conclusione
La segmentazione è una tecnica molto potente per la classificazione delle immagini, andando oltre le bounding boxes fino alla classificazione a livello di pixel. È una tecnica utilizzata nell'imaging medico, tra altre applicazioni.
🚀 Sfida
La segmentazione del corpo è solo una delle attività comuni che possiamo fare con immagini di persone. Altre attività importanti includono il rilevamento dello scheletro e il rilevamento della postura. Prova la libreria OpenPose per vedere come il rilevamento della postura può essere utilizzato.
Revisione & Studio Autonomo
Questo articolo di Wikipedia offre una buona panoramica delle varie applicazioni di questa tecnica. Scopri di più da solo sui sottodomini della segmentazione per istanza e della segmentazione panottica in questo campo di studio.
Compito
In questo laboratorio, prova la segmentazione del corpo umano utilizzando il Segmentation Full Body MADS Dataset da Kaggle.