Zadania i modele Computer Vision



Może i brzmi to cliché, ale czy zastanawialiście się kiedyś, jak wyjątkowy jest Wasz mózg? Ponieważ ja myślałem o tym w ostatnim czasie dość sporo, szczególnie przy okazji projektu związanego bezpośrednio z przygotowaniem modeli deep learning, które miały rozpoznawać obiekty na odpowiednio przygotowanych obrazach. W okresie pracy nad próbą dobrania odpowiedniej architektury modeli oraz danych, na których modele będą się uczyły i testowały swoje nowe zdolności, nauczyłem się wielu rzeczy – pomijając tak oczywiste kwestie jak wiedza teoretyczna w zakresie computer vision oraz granice swojej cierpliwości – nauczyłem się doceniać jak niesamowity jest ludzki mózg. Jest on zdolny do zidentyfikowania, analizy i wyciągnięcia wniosków z praktycznie wszystkiego co widzą ludzkie oczy. I co najlepsze, robi to w ułamkach sekundy.


Komputery tak dobre w tym nie są, a przynajmniej na chwilę obecną ich możliwości imitacji ludzkich zdolności w zakresie analizy obrazów są dość mocno ograniczone. Przejawia się to m.in. tym, że do odpowiednich zadań potrzebne są odpowiednie modele – nie ma aktualnie rozwiązania uniwersalnego. I tę właśnie kwestię chciałbym dzisiaj poruszyć – jakie właściwie są główne „zadania" identyfikowane w zakresie nauki i praktyki computer vision?


Zadania „klasyczne”


Już na samym początku natrafiamy na dość istotny problem. W publikacjach zarówno akademickich, jak i popularno-naukowych, można odnaleźć mniejsze lub większe różnice pomiędzy definicjami różnych podejść w zakresie opisywanym w tym artykule. Nie zamierzam się wgłębiać teraz w rozdźwięki pomiędzy definicjami, ale ważne jest, by Czytelnik zdawał sobie z nich sprawę.


Za bazę dla przykładów w niniejszym artykule niech służy pierwsze z brzegu zdjęcie znalezione w odmętach Internetu.


Przykładowe zdjęcie


Najprostsze” zadanie jakie może dotyczyć powyższego zdjęcia, to przypisanie mu odpowiedniego oznaczenia (z ang. label), choć nie jestem pewien czy jakikolwiek algorytm operujący na obrazach i zdjęciach, można z czystym sercem uznać za trywialny. Działanie takie opisywane jest jako image classification. Wynikiem modelu, którego celem byłoby wykonanie opisywanego zadania na wyżej przedstawionym zdjęciu, mogłoby być m.in. nadanie mu etykiety „profesjonalistki” (jakże by inaczej!) czy „biuro”. Samo to oznaczenie zależałoby od tego jakie klasy zostały uprzednio zdefiniowane na etapie nauki modelu. Co istotne, nie jesteśmy ograniczeni do jednego oznaczenia. Powyższemu obrazowi przypisać można jednocześnie np. „człowiek”, „komputer”, „biurko”, „uśmiech”. I zadać można sobie pytanie – to jest stosunkowo prosty mechanizm, do czego to może służyć? Odpowiedź na nie jest prosta, może on służyć chociażby do identyfikacji gatunków zwierząt czy roślin na podstawie ich zdjęcia. Chociaż algorytmowi rozpoznającemu grzyby jadalne od trujących raczej bym nie zaufał.


Ale przejdźmy do ciekawszych rzeczy. Znacznym ograniczeniem powyższego rodzaju modelu jest to, że nawet jeżeli w jakiś sposób dany obraz zostanie zaklasyfikowany do jednej z kilku klas, to nie wiemy właściwie dlaczego. Dotyczy to szerszego problemu czarnych skrzynek (z ang. black box, tutaj odsyłam do artykułu naszego kolegi Andrzeja, który w swoim krótkim artykule pokazał świetny przykład dlaczego nie zawsze powinno się ufać takim modelom – artykuł). Kontynuując przykład z poprzedniego akapitu – jeżeli model uznał, że na zdjęciu mamy psa rasy labrador, to właściwie czemu? A co, jeżeli na zdjęciu jest więcej niż jeden pies? Do którego z nich odnosi się przypisana klasa? To, czego brakuje takiemu algorytmowi, to określenie lokalizacji obiektów. To, co dokonywane jest zarówno poprzez zadania nazywane object localization oraz object detection, będzie naszym kolejnym „stopniem wtajemniczenia”. Przykładowe wyniki takich modeli przedstawiono poniżej.


Po lewej: przykład zastosowania modelu object localization Po prawej: przykład zastosowania modelu object detection


Opisuję je jednocześnie, gdyż w gruncie rzeczy są do siebie dosyć podobne. Object localization polega na identyfikacji położenia obiektu (lub wielu obiektów jednocześnie) na analizowanym obrazie oraz przekazaniu w odpowiedzi ramki (z ang. bounding box), w której znajduje się dany obiekt. Głównym ograniczeniem jest to, że dotyczy to tylko jednej klasy obiektów. Tak jak pokazano na przykładzie po lewej, model mógłby wskazać dwie osoby siedzące i uśmiechające się do zdjęcia. W praktyce częściej używane są modele, których zadaniem jest nie tylko wskazanie obiektu, ale też wskazanie odpowiedniej klasy. Takie zadanie można potraktować jako połączenie dwóch dotychczas opisywanych zadań – nie dość, że musimy znaleźć, gdzie obiekt się znajduje (określić jego ramkę, tzw. bounding box), to jeszcze dodatkowo trzeba mu przypisać odpowiednią klasę (klasyfikacja odnalezionego obiektu). W ten sposób na jednym zdjęciu można odnaleźć wiele obiektów i odróżnić je od siebie – tak jak na przykładzie powyżej, model mógłby odnaleźć dwie osoby oraz dwa komputery. Algorytmy takie stosowane są powszechnie m.in. do zliczania osób czy też pojazdów na nagraniach monitoringów.


Modele przygotowane pod wykonywania wyżej opisanych zadań mają w sobie jednak jeden solidny problem – wskazują położenie obiektu jedynie w ramach zidentyfikowanego bounding boxa. Do zastosowań wymagających jedynie informacji o istnieniu danego obiektu i jego generalnym położeniu są one wystarczające. Ale co w przypadku, gdy potrzebujemy zidentyfikować obiekty znacznie bardziej precyzyjnie, tak by dokładnie znać granice każdego z nich? W tym pomogą nam modele mające na celu segmentację obrazu.


Modele segmentacyjne


To czym wyróżnia się grupa modeli segmentacyjnych (z ang. segmentation models) na poziomie analizy obrazu to to, że w przeciwieństwie do modeli identyfikujących obiekty, modele segmentacyjne przypisują odpowiednie klasy poszczególnym pikselom. Jednym z takich podstawowych zadań, których podejmują się takie modele, jest semantic segmentation, która polega na przypisaniu każdemu, pojedynczemu pikselowi na obrazie odpowiedniej klasy.



Semantic Segmentation


Na wizualizacji powyżej możemy zobaczyć, jak analizowane zdjęcie mogłoby wyglądać po zastosowaniu takiego modelu. Kolorem zielonym zostały znaczone osoby, różowym komputery, żółtym elementy biurowe, a pomarańczowym ściana w tle. Istotnym jest pokreślenie, że każdy piksel na zdjęciu został w jakiś sposób sklasyfikowany – jeżeli brakuje odpowiednich klas, które można przypisać danemu punktowi, to jest on klasyfikowany jak tło. Co więcej, modele takie nie rozróżniają poszczególnych instancji obiektów. Na zdjęciu widoczne są dwie osoby, ale z perspektywy widzenia modelu nie są to dwa odrębne obiekty. Sztandarowym przykładem wykorzystania takich modeli są analizy obrazu z kamer wykorzystywanych w ramach samochodów autonomicznych – ważnym jest, by komputer pokładowy wiedział, że musi zacząć hamować, gdy przed maską pojawia się grupa pieszych. Nie ma jednak znaczenia, że piesi w ramach tej grupy są odrębnymi osobami, bo tak czy inaczej nie chcemy w nich wjechać.


Czasami jednak, potrzebujemy informacji dotyczącej tego, ile instancji poszczególnych klas znajduje się na obrazie. Do takich przypadków potrzebujemy innego rodzaju modeli. Szczególnie popularnym zadaniem jest instance segmentation, które polega na detekcji obiektów co do piksela przy jednoczesnym zachowaniu informacji o odrębności poszczególnych instancji. Analizowane przez nas zdjęcie po zastosowaniu modelu opartego na takim zadaniu mogło prezentować by się tak, jak przedstawiono poniżej.



Instance Segmentation

Kolorem zielonym oraz niebieskim zaznaczono osoby, a czerwonym i różowym, komputery (analogicznie do przykładu z object detection). Model taki mógłby mieć zastosowanie w ramach analizy zdjęć lotniczych lub satelitarnych. Gdyby celem analizy byłaby identyfikacja poszczególnych budynków czy dróg, to taki model mógłby znajdywać je bardzo dokładnie i zachowywać ich kształty, a jednocześnie zdawać sobie sprawę, że wszystkie widoczne na obrazie dachy należą do różnych budynków.


Czegoś nam tu jednak brakuje. W porównaniu do opisywanego chwilę wcześniej podejścia semantic segmentation, utraciliśmy informację o klasach niepoliczalnych, takich jak tło czy elementy biurowe! Problem ten stara się wyeliminować najświeższa klasa modeli, należących do grupy panoptic segmentation, która de facto jest połączeniem dwóch wyżej opisywanych modeli segmentacyjnych. Innymi słowy otrzymujemy zarówno informację o instancjach poszczególnych obiektów, ale zarazem każdemu pikselowi na obrazie przypisywana jest odpowiednia klasa. Pozwala to na większe zrozumienie tego, co znajduje się na analizowanym obrazku. Na poniższej wizualizacji przedstawiono w jaki sposób można by połączyć dwa powyższe zadania klasyfikacyjne.


Panoptic Segmentation

Rozpoznawanie obrazów nie jest problemem trywialnym. Modele, które podejmują się opisywanych w tym artykule zadań, są niezwykle skomplikowane i mogą składać się z setek warstw, a nauka takiego modelu zajmuje godziny. Dzisiaj musimy już na etapie projektowania rozwiązań, zdecydować się czego właściwie potrzebujemy – czy wystarczy nam jedynie informacja, gdzie znajdują się obiekty? Może jednak, potrzebujemy znacznie bardziej dokładnych wyników? Praktycznie w każdym miesiącu pojawiają się nowe pomysły, architektury modeli oraz sposoby podejść do znanych, jak i nowo napotkanych problemów. Na chwilę obecną, nasze mózgi są w tym niezaprzeczalnie najlepsze, jednak kto wie, może już za niedługi czas powstanie model w pełni wszechstronny, przygotowany na każdą ewentualność?




Piotr Więckiewicz

Data Scientist

piotr.wieckiewicz@bitpeak.pl

86 wyświetleń

Ostatnie posty

Zobacz wszystkie