Wcześniej nauczyliśmy się o Detekcji Obiektów, która pozwala na lokalizację obiektów na obrazie poprzez przewidywanie ich ramki ograniczającej. Jednak w niektórych zadaniach potrzebujemy nie tylko ramek ograniczających, ale także bardziej precyzyjnej lokalizacji obiektów. To zadanie nazywa się segmentacją.
Segmentację można postrzegać jako klasyfikację pikseli, gdzie dla każdego piksela obrazu musimy przewidzieć jego klasę (tło jest jedną z klas). Istnieją dwa główne algorytmy segmentacji:
- Segmentacja semantyczna określa jedynie klasę piksela, nie rozróżniając różnych obiektów tej samej klasy.
- Segmentacja instancji dzieli klasy na różne instancje.
W przypadku segmentacji instancji te owce są różnymi obiektami, ale w segmentacji semantycznej wszystkie owce są reprezentowane jako jedna klasa.
Obraz z tego wpisu na blogu
Istnieją różne architektury neuronowe do segmentacji, ale wszystkie mają podobną strukturę. W pewnym sensie przypomina to autoenkoder, o którym wcześniej się uczyliście, ale zamiast dekonstrukcji oryginalnego obrazu, naszym celem jest dekonstrukcja maski. Zatem sieć segmentacyjna składa się z następujących części:
- Enkoder wyodrębnia cechy z obrazu wejściowego.
- Dekoder przekształca te cechy w obraz maski, o tym samym rozmiarze i liczbie kanałów odpowiadających liczbie klas.
Obraz z tej publikacji
Szczególną uwagę należy zwrócić na funkcję straty używaną w segmentacji. W przypadku klasycznych autoenkoderów musimy zmierzyć podobieństwo między dwoma obrazami, i możemy do tego użyć średniego błędu kwadratowego (MSE). W segmentacji każdy piksel w docelowym obrazie maski reprezentuje numer klasy (zakodowany w formacie one-hot wzdłuż trzeciego wymiaru), więc musimy używać funkcji straty specyficznych dla klasyfikacji - straty krzyżowej entropii, uśrednionej dla wszystkich pikseli. Jeśli maska jest binarna - używa się straty krzyżowej entropii binarnej (BCE).
✅ Kodowanie one-hot to sposób kodowania etykiety klasy w wektorze o długości równej liczbie klas. Zobacz ten artykuł na temat tej techniki.
W tej lekcji zobaczymy segmentację w praktyce, trenując sieć do rozpoznawania ludzkich znamion (znanych również jako pieprzyki) na obrazach medycznych. Będziemy korzystać z Bazy Danych PH2 obrazów dermoskopowych jako źródła obrazów. Ten zbiór danych zawiera 200 obrazów trzech klas: typowe znamię, atypowe znamię i czerniak. Wszystkie obrazy zawierają również odpowiadającą im maskę, która obrysowuje znamię.
✅ Ta technika jest szczególnie odpowiednia dla tego typu obrazowania medycznego, ale jakie inne zastosowania w rzeczywistym świecie możesz sobie wyobrazić?
Obraz z Bazy Danych PH2
Nauczymy model segmentować każde znamię z jego tła.
Otwórz poniższe notatniki, aby dowiedzieć się więcej o różnych architekturach segmentacji semantycznej, poćwiczyć pracę z nimi i zobaczyć je w działaniu.
Segmentacja to bardzo potężna technika klasyfikacji obrazów, która wykracza poza ramki ograniczające, przechodząc do klasyfikacji na poziomie pikseli. Jest to technika stosowana w obrazowaniu medycznym, a także w innych zastosowaniach.
Segmentacja ciała to tylko jedno z powszechnych zadań, które możemy wykonywać z obrazami ludzi. Inne ważne zadania obejmują detekcję szkieletu i detekcję pozycji. Wypróbuj bibliotekę OpenPose, aby zobaczyć, jak można wykorzystać detekcję pozycji.
Ten artykuł na Wikipedii oferuje dobre podsumowanie różnych zastosowań tej techniki. Dowiedz się więcej na własną rękę o poddziedzinach segmentacji instancji i segmentacji panoptycznej w tej dziedzinie badań.
W tym laboratorium spróbuj segmentacji ciała ludzkiego używając Segmentation Full Body MADS Dataset z Kaggle.


