Próbuję zaimplementować algorytm, w którym biorąc pod uwagę obraz z kilkoma obiektami na stole w płaszczyźnie, pożądane jest wyjście z masek segmentacji dla każdego obiektu. W przeciwieństwie do CNN, celem jest wykrycie obiektów w nieznanym środowisku. Jakie są najlepsze podejścia do tego problemu? Czy są też jakieś przykłady implementacji dostępne online?
Edytuj: Przykro mi, pytanie mogło być nieco mylące. „Nieznane środowisko” mam na myśli to, że algorytm może nie znać obiektów. Algorytm nie powinien rozumieć, czym jest obiekt, ale powinien jedynie wykrywać obiekt. Jak mam podejść do tego problemu?
Odpowiedzi:
Szybka odpowiedź
Mean Shift LSH, który jest ulepszeniemO ( n ) słynnego algorytmu Mean Shift w dobrze znany ze swojej zdolności do segmentacji obrazuO ( n2))
Kilka wyjaśnień
Jeśli potrzebujesz prawdziwego, nienadzorowanego podejścia do segmentowania obrazów, skorzystaj z algorytmów klastrowania . Faktem jest, że istnieje wiele algorytmów o różnej złożoności i specyficzności czasowej . Weźmy najsłynniejszy, średnie, to jest w O ( n ) tak szybko, ale musisz określić, ile klastrów chcesz, a nie to, co zamierzasz, eksplorując nieznany obraz bez żadnych informacji o tym, ile kształtów jest przedstawia w nim. Co więcej, nawet jeśli przypuszczasz, że wiesz, ile kształtów jest obecnych, możemy przypuszczać, że kształty są losowe, co jest kolejnym punktem, w którym KK. O ( n ) K. -Środki zawodzą, ponieważ zaprojektowano je w celu znalezienia klastrów eliptycznych, a NIE tych o losowym kształcie.
Przeciwnie, mamy przesunięcie średnie, które jest w stanie automatycznie znaleźć liczbę skupień - co jest przydatne, gdy nie wiesz, czego szukasz - o losowych kształtach .
Oczywiście wymienić parametr K -Means przez innych parametrów Mean Shift, które mogą być trudne do dopracowany ale to nie istnieje narzędzie, które pozwoli Ci zrobić magii, jeśli nie ćwiczycie zrobić magii.K. K.
Porada dotycząca grupowania obrazów w segmenty
Przekształć przestrzeń kolorów z RGB na LUV, co jest lepsze dla odległości euklidesowej.
Średnie vs złożoność czasowa średniej zmiany LSHK.
Mean Shift LSH jest wolniejszy, ale lepiej pasuje do twoich potrzeb. Pozostaje liniowy i jest skalowalny dzięki wspomnianej implementacji.
PS: Moje zdjęcie profilowe jest aplikacją Mean Shift LSH na sobie, jeśli może pomóc zrozumieć, jak to działa.
źródło
Konieczne może być zapoznanie się z pracą przesłaną i zaakceptowaną do CVPR 2018: Nauka segmentowania każdej rzeczy
W tej pracy próbują segmentować wszystko, nawet obiekty nieznane w sieci. Zastosowano maskę R-CNN, w połączeniu z podsiecią uczącą transferu, uzyskują bardzo dobre wyniki w segmentacji prawie wszystkiego.
źródło
Najnowocześniejszym (SOTA) rozwiązaniem do segmentacji obrazów byłby Facebook Mask-RCNN .
Chociaż zwykle jest on szkolony na zbiorze danych, takim jak COCO lub Pascal, które zawierają rzeczywiste obiekty, możesz ponownie przeszkolić go na wybranym zbiorze danych, prawdziwym lub nie.
Facebook zapewnia implementację ( Detectron ) na licencji Apache2. Spróbuj!
źródło
W rzeczywistości twoje zadanie jest nadzorowane.
Segnet
może być dobra architektura dla celów którego można się dostać jednym z jego implementacji tutaj . SegNet uczy się przewidywać pikselowe etykiety klas z nadzorowanego uczenia się. Dlatego potrzebujemy zestawu danych wejściowych z odpowiednimi naziemnymi etykietami prawdy. Obrazy etykiet muszą być jednokanałowe, a każdy piksel oznaczony swoją klasą ... .Spójrz również na w pełni konwergentne sieci które są dobrze dostosowane do twojego zadania.
W oparciu o zmiany wprowadzone w pytaniu dodaję dodatkowe informacje. Istnieje wiele metod, które można zastosować do tego zadania. Zasadniczo najłatwiej jest użyć etykiety tła i sklasyfikować te klasy, których nie znasz jako tło, stosując wspomniane architektury. W ten sposób będziesz mieć etykiety, które mogą nakładać się na klasy tła, co jest prawdopodobnym minusem tego podejścia, ale jego zaletą jest to, że w przypadkach, w których wyuczone etykiety są często używane w danych wejściowych, możesz mieć stosunkowo lekką wersję architektury, która rozpoznaje nieznane klasy.
źródło
To może być coś, czego szukasz. Ponieważ prosisz o segmentację obrazu, a nie
semantic / instance
segmentację, zakładam, że nie wymagasz etykietowania dla każdego segmentu obrazu.Wywoływana jest metoda
scene-cut
dzieląca obraz na regiony agnostyczne bez nadzoru. Działa to bardzo dobrze w przypadku zagraconego środowiska wewnątrz.Link do papieru: arxiv
Kod: kod
źródło