Lekcje wyciągnięte z rzeczywistego projektu wizji komputerowej, który przeszedł bokiem
Na początku naszego projektu wizji komputerowej można było wyczuć podekscytowanie w pokoju. Byliśmy pewni siebie, pełni energii i gotowi, by przekształcić fajny pomysł w coś realnego. Ze świeżym zestawem danych w ręku i chętnym do pracy zespołem, od razu wskoczyliśmy do gry - aby wkrótce przekonać się, jak nieprzewidywalne mogą być takie podróże.
Zastosowaliśmy klasyczną strategię: zbierz dane, wrzuć je do konwolucyjnej sieci neuronowej, a następnie iteruj wyniki. Na papierze nasze pierwsze modele działały świetnie. Ale przeniesienie ich do prawdziwego świata to już inna historia. Nagle, pozornie drobne rzeczy - takie jak zmiana oświetlenia, rozproszenie tła lub niewielka zmiana kąta - wytrąciły system z gry.
To, co naprawdę nas zaskoczyło, to to, jak często model upierał się, że zauważył coś, czego nawet tam nie było. Model wykrywał krzesło przy zwykłej ścianie lub wyobrażał sobie, że ktoś idzie pustym korytarzem. Te fałszywe alarmy nie były tylko uciążliwe. W miejscach takich jak ochrona mogą one powodować prawdziwe problemy.
Patrząc wstecz na nasze dane treningowe, powód stał się jasny: wszystko było trochę zbyt idealne. Sceny były uporządkowane, oświetlenie było odpowiednie i nic nigdy nie zaskoczyło systemu. Zdaliśmy sobie sprawę, że nasz zestaw danych bardzo potrzebuje większej różnorodności. Wróciliśmy więc w teren, zbierając obrazy w różnych warunkach - przy słabym oświetleniu, pod dziwnymi kątami, w zagraconych przestrzeniach. Wprowadziliśmy również agresywne rozszerzanie danych, aby model widział jeszcze więcej “niedoskonałości”.”
Wciąż jednak nie skończyliśmy. Pojawiło się kolejne wyzwanie: nasze najlepsze modele nie mogły działać płynnie na rzeczywistych urządzeniach brzegowych, których potrzebowaliśmy. Wymagały one zbyt dużej mocy obliczeniowej. Zajęliśmy się tym, stosując sztuczki kompresji modeli - kwantyzację, przycinanie, wszystko w zestawie narzędzi - i ostatecznie zdecydowaliśmy się na system hybrydowy. Lekki model obsługiwał szybką pracę na urządzeniu, podczas gdy większe, trudniejsze zadania były przenoszone do chmury.
Krok po kroku, przez każdą frustrującą przeszkodę, odpowiedzią nigdy nie było magiczne narzędzie lub pojedyncza poprawka. Rozwiązanie było zawsze mieszanką: bardziej realistycznych danych, inteligentniejszych poprawek modelu i elastycznego wdrażania. Gdy te elementy do siebie pasowały, pojawiały się wiarygodne wyniki - i one się utrzymywały. Wniosek? Nie ma drogi na skróty. Potrzebujesz elastyczności i chęci do kontynuowania iteracji, ponieważ każdy projekt wizji komputerowej napotyka trudności, które nie są widoczne w dokumentacji.
Nie ma co ukrywać - przejście od nadziei do satysfakcji wymagało wielu niepowodzeń. Ale jeśli wkraczasz w rzeczywistą wizję komputerową, spodziewaj się niespodzianek. To nie tylko niepowodzenia; to najlepsze okazje do nauki. Chcesz zobaczyć, dokąd zaprowadziła nas ta podróż? Więcej informacji tutaj.