Worek słów szkolenia i testy opencv, matlab

Implementuję worek słów w opencv za pomocą funkcji SIFT w celu dokonania klasyfikacji dla określonego zbioru danych. Do tej pory byłem apple, aby klasterować deskryptory i generować słownictwo. Jak wiem, muszę trenować SVM ... ale mam kilka pytań, które naprawdę mnie mylą. Głównym problemem jest koncepcja stojąca za implementacjami, oto moje pytania:

1 - Kiedy wyodrębnię funkcje, a następnie stworzę słownictwo, wyodrębnię funkcje dla wszystkich obiektów (powiedzmy 5 obiektów) i umieścić je w jednym pliku, więc robię je wszystkie w jednym pliku słownictwa, który ma wszystkie słowa? i jak będę je rozdzielać później, gdy zrobię klasyfikację?

2-Jak wdrożyć SVM? Znam funkcje, które są używane w openCV, ale jak?

3 - mogę wykonywać pracę w MATLAB, czyli mam na myśli wdrożenie szkolenia SVM, ale czy jest dostępny jakiś kod, który poprowadzi mnie przez moją pracę? Widziałem kod używany przez Andrea Vedaldi, tutaj ale pracuje tylko z jedną klasą za każdym razem i inną kwestią, że nie pokazuje, jak stworzyć .plik mat, którego używa w swoich ćwiczeniach. Wszystkie inne implementacje, które mogłem znaleźć, nie używają SVM. Więc, można prowadzić w tym punkcie zbyt!

Thank you

Author: Dima, 2012-07-22

2 answers

Local features

Podczas pracy z SIFT, Zwykle chcesz wyodrębnić lokalne funkcje. Co to znaczy? Masz swój obraz i z tego obrazu zlokalizujesz punkty, z których wyodrębnisz lokalne wektory funkcji. Lokalny wektor funkcji to po prostu wektor składający się z wartości liczbowych, który opisuje informacje wizualne obszaru obrazu, z którego został wydobyty. Chociaż liczba lokalnych wektorów funkcji, które można wyodrębnić z obrazu A, nie musi być tak samo jak liczba wektorów funkcji, którą można wyodrębnić z obrazka B, składowe liczbowe lokalnego wektora funkcji (tzn. jego wymiarowość) są zawsze takie same.

Teraz, jeśli chcesz użyć lokalnych wektorów funkcji do klasyfikacji obrazów, masz problem. W tradycyjnej klasyfikacji obrazów każdy obraz jest opisany przez globalny wektor funkcji, który w kontekście uczenia maszynowego może być postrzegany jako zbiór atrybutów numerycznych. Jednak po wyodrębnieniu zestawu funkcji lokalnej wektory nie masz globalnej reprezentacji każdego obrazu, która jest wymagana do klasyfikacji obrazu. Technika, która może być zastosowana do rozwiązania tego problemu jest worek słów, znany również jako worek słów wizualnych (Łuk).

Worek słów wizualnych

Oto (bardzo) uproszczony algorytm łuku:

  1. Wyodrębnij lokalne wektory funkcji SIFT z zestawu obrazów;

  2. Umieść wszystkie te lokalne wektory funkcji w jednym zestawie. W tym momencie Nie trzeba nawet zapisać, z którego obrazu wyodrębniono każdy lokalny wektor funkcji;

  3. Zastosowanie algorytmu grupowania (np. k-means) nad zbiorem lokalnych wektorów funkcji w celu znalezienia współrzędnych centroidowych i przypisania id każdemu centroidowi. Ten zestaw centroidów będzie twoim słownictwem;

  4. Globalny wektor funkcji będzie histogramem, który zlicza, ile razy każdy centroid wystąpił na każdym obrazie. Aby obliczyć histogram Znajdź najbliższy centroid dla każdego lokalny wektor funkcji.

Klasyfikacja Obrazu

Tutaj zakładam, że twój problem jest następujący:

Masz jako wejście zestaw oznaczonych obrazów i zestaw nie oznaczonych obrazy, którym chcesz przypisać etykietę na podstawie jej wyglądu wygląd. Załóżmy, że Twoim problemem jest klasyfikacja fotografii krajobrazowej. Etykiety obrazów mogą być na przykład "Góry", "Plaża" lub "Las".

Wektor funkcji globalnej wyodrębniony z każdego obraz (tj. jego worek słów wizualnych) może być postrzegany jako zbiór atrybutów numerycznych. Ten zestaw atrybutów numerycznych reprezentujących cechy wizualne każdego obrazu i odpowiadające im etykiety obrazów mogą być używane do szkolenia klasyfikatora. Na przykład możesz użyć oprogramowania do eksploracji danych, takiego jak WEKA, które ma implementację SVM, znaną jako SMO, aby rozwiązać twój problem.

Zasadniczo wystarczy sformatować globalne wektory funkcji i odpowiadające im etykiety obrazów zgodnie z formatem ARFF , który jest w zasadzie CSV globalnych wektorów funkcji, po których następuje Etykieta obrazu.

 24
Author: Alceu Costa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-24 12:39:53

Oto bardzo dobry artykuł przedstawiający Model worka słów do klasyfikacji za pomocą OpenCV v2. 2. http://app-solut.com/blog/2011/07/the-bag-of-words-model-in-opencv-2-2/

Kontynuacja artykułu na temat używania zwykłego klasyfikatora Bayesa do kategoryzacji obrazów. http://app-solut.com/blog/2011/07/using-the-normal-bayes-classifier-for-image-categorization-in-opencv/

Zawiera również ~ 200-liniowy kod demo na Caltech-256 dataset jest dostępny. http://code.google.com/p/open-cv-bow-demo/downloads/detail?name=bowdemo.tar.gz&can=2&q=

Tutaj jest coś, aby uzyskać intuicyjne odczucie procesu klasyfikacji obrazu: http://www.robots.ox.ac.uk / ~vgg/share/practical-image-classification.htm

Naprawdę pomógł mi wyjaśnić wiele pytań. Mam nadzieję, że to komuś pomoże. :)

 11
Author: sagunms,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-24 01:43:03