Klasyfikacja obrazu przy użyciu funkcji SIFT i SVM

12

Mam nadzieję, że ktoś może wyjaśnić, w jaki sposób używać modelu worka słów do przeprowadzania klasyfikacji obrazów przy użyciu funkcji SIFT / SURF / ORB i maszyny wektorów pomocniczych?

W tej chwili mogę obliczyć wektory cech SIFT dla obrazu i zaimplementować SVM, jednak trudno mi zrozumieć literaturę na temat tego, jak korzystać z modelu słów w celu „kwantyzacji wektorowej” cech SIFT i budowania histogramów, które dają wektory o stałym rozmiarze, które można wykorzystać do szkolenia i testowania SVM.

Wszelkie linki do samouczków lub literatury na ten temat są mile widziane, dzięki

Jono Brogan
źródło

Odpowiedzi:

16

Jeśli możesz wdrożyć SVM, możesz skwantyfikować funkcje. :)

Zazwyczaj cechy są kwantowane za pomocą k-średnich grupowania. Najpierw decydujesz, jaki powinien być Twój „rozmiar słownictwa” (powiedz 200 „wizualnych słów”), a następnie uruchom k-oznacza grupowanie dla tej liczby klastrów (200). Deskryptory SIFT to wektory 128 elementów, tj. Punktów w przestrzeni 128-wymiarowej. Możesz więc spróbować je zgrupować, jak wszystkie inne punkty. Wyodrębniasz deskryptory SIFT z dużej liczby obrazów, podobnych do tych, które chcesz sklasyfikować za pomocą zestawu funkcji. (Idealnie powinien to być osobny zestaw obrazów, ale w praktyce ludzie często po prostu uzyskują funkcje z zestawu obrazów treningowych.) Następnie uruchamiasz k-średnich na tym dużym zestawie deskryptorów SIFT, aby podzielić go na 200 (lub cokolwiek) klastrów , tj. przypisać każdy deskryptor do klastra. k-średnich da ci 200 centrów klastrów,

Następnie bierzesz każdy deskryptor SIFT na obrazie i decydujesz, do którego z 200 klastrów należy on, znajdując środek klastra najbliżej niego. Następnie wystarczy policzyć, ile funkcji z każdego klastra masz. Zatem dla każdego obrazu z dowolną liczbą funkcji SIFT masz histogram 200 pojemników. To jest twój wektor cech, który podajesz SVM. (Uwaga: termin cechy jest rażąco przeciążony).

O ile pamiętam, wykonano wiele pracy dotyczącej sposobu znormalizowania tych histogramów. Mogę się mylić, ale wydaje mi się, że przypominam sobie artykuł, który twierdził, że wektor cech binarnych (tj. 1, jeśli obecna jest co najmniej 1 cecha z tego klastra, a 0 w przeciwnym razie) działał lepiej niż histogram. Musisz sprawdzić szczegóły w literaturze, a szczegóły są ważne.

Edycja: Zestaw narzędzi systemu wizyjnego Computer Vision dla MATLAB zapewnia teraz zestaw funkcji .

Dima
źródło
Cześć Dima, dziękuję za odpowiedź. Właśnie zadałem jedno pytanie, kiedy mówisz „następnie uruchamiasz k-znaczy grupowanie dla tej liczby klastrów”, na czym polega k-średnie grupowanie? ps Jestem prawie kuszony, by przyjąć tę odpowiedź za komentarz na temat rażącego przeciążenia funkcji, jestem całkiem nowy w przetwarzaniu obrazów i nie mogłem się zgodzić
Jono Brogan,
@JonoBrogan: Powinieneś zaakceptować moją odpowiedź, ponieważ jest poprawna. :) Zredagowałem odpowiedź, aby spróbować wyjaśnić k-średnich.
Dima,
Czy to ma teraz sens?
Dima,
Tak, dzięki. Przyjąłem odpowiedź, chociaż zastanawiam się, czy wiesz, jak zabierasz się do decydowania, ile „słów wizualnych” użyć?
Jono Brogan
3
Ale największym problemem jest to, że algorytm Kmeansa nie zawsze daje ten sam wynik. Jest bardzo losowy.