2013-03-29 8 views
7

Ich möchte Trainingsdaten und HOG-Algorithmus verwenden, um Fußgänger zu erkennen. Jetzt kann ich defaultHog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector()); in opencv zur Erkennung verwenden, aber das Ergebnis ist nicht sehr gut zu meinem Test Video. Also möchte ich mit meiner Datenbank trainieren.Wie trainiere ich HOG und benutze meinen HOGDescriptor?

Ich habe 1000 + positive Probe und 1000 + negative Proben vorbereitet. Sie sind auf 50 * 100 zugeschnitten und ich habe die Listendatei gemacht.

Und ich habe ein paar Tutorials im Internet gelesen, sie alle so komplex, manchmal abstrus. Die meisten von ihnen analysieren den Quellcode und den Algorithmus von HOG. Aber mit nur wenigen Beispielen und einfachen anylize.

Einige Anweisungen zeigen, dass libsvm\windows\svm-train.exe kann zum Training verwendet werden, Kann jemand ein Beispiel nach 1000 + 50 * 100 positiven Proben geben?
Zum Beispiel, wie haartraing, können wir es von opencv, wie haartraining.exe –a –b mit einigen Parametern tun, und erhalten Sie eine *.xml als Ergebnis, das zur Personenerkennung verwendet werden?

Oder gibt es eine andere Methode zum Training und zur Erkennung?

Ich bevorzuge zu wissen, wie man es und die Detailverfahren verwendet. Als Detailalgorithmus ist es mir nicht wichtig. Ich möchte es nur implementieren.

Wenn jemand davon weiß, bitte geben Sie mir ein paar Tipps.

Antwort

7

Ich habe einige Beispielcode und Anweisungen zur Verfügung gestellt, um mit dem Training Ihres eigenen HOG-Deskriptors mit openCV zu beginnen: Siehe https://github.com/DaHoC/trainHOG/wiki/trainHOG-Tutorial.

Der Algorithmus in der Tat zu komplex ist, kurz gesagt zu schaffen, aber die Grundidee ist:

  1. Extract HOG Merkmale aus negativen und positiven Musterbildern von identischer Größe und Typ.
  2. Verwenden Sie die extrahierten Merkmalsvektoren zusammen mit ihren jeweiligen Klassen, um einen SVM-Klassifizierer zu trainieren. In diesem Schritt können Sie die Datei svm-train.exe mit einer generierten Datei im richtigen Format verwenden, die die Merkmalsvektoren und ihre Klassen enthält (oder direkt einschließen) und adressiere die libsvm-Bibliotheksklasse in deinen Quellen).
  3. Das resultierende SVM-Modell und die Unterstützungsvektoren werden in einen einzelnen Deskriptorvektor berechnet, der mit dem openCV-Detektor verwendet werden kann.

Mit freundlichen Grüßen

+0

es scheint, dass Ihr Beispielcode nicht mehr zugänglich ist. Es leitet auf opencv.org um. Weißt du einen anderen Weg dorthin? –

+0

@DaHoC Ich kann bestätigen, dass dieser Link nicht mehr funktioniert. –

+0

Die GitHub-Links funktionieren. Es scheint mir wirklich gut dokumentierter Code und ein nettes Tutorial zu sein. Ich persönlich würde diese Antwort als richtig betrachten. – nkint