Segmentacja, czyli jak klasyfikujemy obrazy w widzeniu komputerowym

Segmentacja to jedno z istotniejszych działań, które składają się na proces, jakim jest widzenie komputerowe. Z pozoru można by powiedzieć, że segmentacja segreguje nasze dane zawarte na obrazie czy w pliku wideo. Warto rozgraniczyć, co składa się na segmentację.

Musimy pamiętać, że dzielimy ją na dwa etapy:

  • Segmentację semantyczną
  • Segmentację instancji

Jeśli chcemy uzyskać dane wysokiej klasy, musimy przyłożyć dużą wagę do poszczególnych kroków stawianych w tych procesach. 

Segmentacja semantyczna to etap, w którym elementy na obrazie zostają poddane wstępnej analizie i przydzielone do ogólnej kategorii -> piksele obiektów zostają przypisane do określonej klasy. Mówiąc prościej: 

Wszystkie wykryte obiekty są przydzielane np. do kategorii - człowiek lub samochód bądź budynek.

Rozpoznawanie obrazu przez Visu.webp

Segmentacja instancyjna to już bardziej szczegółowe działanie. Na tym etapie wszystkie wcześniej przypisane piksele są jeszcze raz grupowane i oznaczane o wiele dokładniej. Idąc przykładem wcześniej zakwalifikowanego samochodu, tutaj następuje oznaczenie: samochód ciężarowy -> samochód ciężarowy klasy A -> samochód ciężarowy marki XYZ 

Aby wizja komputerowa przebiegała sprawnie, zarówno jedna, jak i druga segmentacja, muszą zostać odpowiednio wykonane. Jeśli problem z przypisaniem pikseli pojawi się już podczas segmentacji semantycznej, to w segmentacji piksele mogą zostać przydzielone do niewłaściwej klasy. Będzie możliwe wykrycie obiektu, jednak system nie będzie w stanie podać informacji szczegółowych na temat tego, co jest na obrazie. 

Rozpatrując to na przykładzie systemu firmy zajmującej się ochroną mienia i obiektów wygląda to następująco: 

Załóżmy, że system będzie trenowany za pomocą źle oznaczonych danych obrazowych, tj. osoby na zdjęciach nie zostaną w pełni oznaczone (np. zostanie zaetykietowana tylko część tułowia lub palce, które równie dobrze mogłyby przypominać gałęzie krzewów). Wypracowany „wzór człowieka” w systemie będzie inny, niż powinien. Właśnie na etapie segmentacji system nie będzie w stanie określić, co „widzi”, ponieważ dane, na których trenował, nie dały mu prawidłowego obrazu osoby. Efektem nauki na niepoprawnych danych będzie sytuacja, kiedy dojdzie do włamania w dziale księgowym i system nie zareaguje, ponieważ nie rozpozna prawidłowej sylwetki ludzkiej. Może to skutkować ogromnymi startami finansowymi zarówno dla klienta, jak i firmy zajmującej się ochroną.

Jak widać na powyższym przykładzie, poprawna segmentacja odgrywa kluczową rolę w prawidłowym określeniu tego, co znajduje się na obrazie. To dzięki niej także w przemyśle spożywczym AI jest w stanie wychwycić wszelkie nieprawidłowości produktów podczas ich wytwarzania. Im więcej dokładnie oznaczonych danych, tym lepsze efekty pracy systemu i oszczędność potencjalnych kosztów klienta.

Paweł CyrtaHead of AI @ DataLabeling.EU

Paweł Cyrta — specjalista ds. dźwięku, głosu, muzyki i multimediów. Doświadczony badacz i twórca oprogramowania specjalizujący się w analizie i przetwarzaniu sygnałów muzycznych, głosowych i dźwiękowych. Posiada obszerną wiedzę na temat systemów informatycznych, implementacji oprogramowania Open Source, Data Science, Data mining, Web mining, Text mining, NLP, Big Data, Machine Learning (HMM, GMM, SVM, ..., BDN, Deep Learning, ...). Dysponuje głęboką wiedzą z dziedziny dźwięku i rozwiązań audio, systemów emisji, przetwarzania, kompresowania i kodowania dźwięku. Są mu bliskie psychoakustyka, akustyka pomieszczeń, modelowanie 3D, programowanie i inżynieria dźwięku.