2009-12-17 6 views

Antwort

9

AdaBoost verwendet eine Reihe von Trainingsprobebildern (z. B. Gesichter), um eine Reihe guter "Merkmale"/"Klassifikatoren" auszuwählen. Für die Gesichtserkennung ist ein Klassifizierer typischerweise nur ein Rechteck aus Pixeln, das einen bestimmten durchschnittlichen Farbwert und eine relative Größe aufweist. AdaBoost wird eine Reihe von Klassifikatoren betrachten und anhand der Beispielbilder herausfinden, welcher der beste Prädiktor für ein Gesicht ist. Nachdem es den besten Klassifikator gewählt hat, wird es einen anderen und einen anderen finden, bis ein Schwellenwert erreicht ist und diese Klassifizierer zusammen das Endergebnis ergeben.

Dieser Teil, den Sie nicht mit nicht-technischen Personen teilen möchten :) aber es ist trotzdem interessant. Es gibt mehrere mathematische Tricks, die AdaBoost für die Gesichtserkennung schnell machen, wie die Fähigkeit, alle Farbwerte eines Bildes zu addieren und sie in einem zweidimensionalen Array zu speichern, so dass der Wert in jeder Position die Summe aller Pixel ist und links von dieser Position. Mit diesem Array kann der durchschnittliche Farbwert eines beliebigen Rechtecks ​​innerhalb des Bildes sehr schnell berechnet werden, indem der in der oberen linken Ecke gefundene Wert von dem in der rechten unteren Ecke gefundenen Wert subtrahiert und durch die Anzahl der Pixel im Rechteck dividiert wird. Mit diesem Trick können Sie schnell über ein ganzes Bild scannen und nach Rechtecken mit verschiedenen relativen Größen suchen, die einer bestimmten Farbe entsprechen oder nahe beieinander liegen.

Hoffe, das hilft.

12

Adaboost ist ein Algorithmus, der Klassifikatoren mit schlechter Leistung, auch schwache Lerner genannt, zu einem größeren Klassifikator mit viel höherer Leistung kombiniert.

Wie funktioniert es? In sehr vereinfachter Weise:

  1. Trainieren Sie einen schwachen Lerner.
  2. Fügen Sie es der Gruppe der schwachen Lernenden hinzu, die bisher trainiert wurden (mit einem optimalen Gewicht)
  3. Erhöhen Sie die Wichtigkeit von Stichproben, die noch nicht klassifiziert sind.
  4. Zum 1.

Es gibt eine breite und detaillierte Theorie hinter den Kulissen, aber die Intuition ist genau das: jeden „dummen“ Klassifikator Fokus läßt auf den Fehlern, die vorherigen zu beheben nicht in der Lage waren.

AdaBoost ist einer der am häufigsten verwendeten Algorithmen in der maschinellen Lerngemeinschaft. Insbesondere ist es nützlich, wenn Sie wissen, wie Sie einfache Klassifizierer (möglicherweise viele verschiedene, mit verschiedenen Funktionen) erstellen und diese optimal kombinieren wollen.

In Viola und Jones wird jede andere Art von schwach lernenden Personen mit einer der 4 oder 5 verschiedenen Haarfunktionen in Verbindung gebracht, die Sie haben können.

+0

Ich bin neugierig 1. Was für einen schwachen Lerner genau bedeutet das trainieren? Zum Beispiel, wenn ich Haarfunktionen verwende, was macht Training aus? – dicroce

+0

@dicroce bedeutet das Training eines schwachen Lerners die Suche nach der Klassifikationsregel (ein Haar-Merkmal in der Viola Jones-Arbeit), die einen minimalen gewichteten Fehler im Trainingssatz erreicht. Das heißt: Es klassifiziert die meisten wichtigen Beispiele (dh diejenigen mit hohem Gewicht) korrekt. –

3

Das ist verständlich. Die meisten Papiere, die Sie im Internet finden können, wiederholen die Viola-Jones und Freund-Shapire Papiere, die die Grundlage von AdaBoost sind, die für die Gesichtserkennung in OpenCV angewendet werden. Und sie bestehen meist aus schwierigen Formeln und Algorithmen aus mehreren mathematischen Bereichen zusammen. Hier ist, was Ihnen helfen kann (kurz genug) -

1 - Es wird in Objekt und vor allem in Gesichtserkennung-Erkennung verwendet.Die beliebteste und recht gute C++ - Bibliothek ist OpenCV von Intel ursprünglich. Ich nehme den Teil der Gesichtserkennung in OpenCV als Beispiel.

2 - Zunächst wird eine Kaskade von verstärkt Klassifikatoren mit Probenrechtecke arbeiten („feature“) auf der Probe von Bildern mit Gesichtern trainiert wird (genannt positiv) und ohne Gesichter (negativ).

Von einigen gegoogelt Papier:

„· Steigerung bezieht sich auf eine allgemeine und beweisbar wirksame Methode der durch die Kombination von Grob- und mäßig ungenau Faustregeln eine sehr genaue Klassifikator Herstellung

· Es ist auf der basiert. Beobachtung, dass viele groben Faustregeln zu finden kann viel einfacher sein als einen einzigen, sehr genauen Klassifikator zu finden.

· zunächst definieren wir einen Algorithmus für die Faustregeln zu finden, die wir einen schwachen Lerner nennen.

· Der Boosting-Algorithmus ruft diesen schwachen Lernenden wiederholt an und gibt ihm dabei jeweils eine andere Verteilung über die Trainingsdaten (in AdaBoost).

· Jeder Aufruf erzeugt einen schwachen Klassifizierer, und wir müssen alle diese in einem einzigen Klassifikator kombinieren, die hoffentlich noch viel mehr ist präziser als jeder eine der Regeln.“

Während dieses Prozesses die Bilder gescannt werden Die komplexen Berechnungs-Hypothesen basierten Algorithmen werden angewendet (die sind nicht so schwer zu verstehen, wenn Sie die Grundidee)

Dies kann eine Woche dauern und die Ausgabe ist eine XML-Datei, die die erlernten Informationen enthält, wie man das menschliche Gesicht, etwa in frontaler Position auf irgendeinem Bild, schnell erkennt (es kann jedes Objekt in einem anderen Fall sein)

3 - Danach geben Sie diese Datei an das Gesichtserkennungsprogramm OpenCV, das mit einer positiven Rate von bis zu 99% (abhängig von den Bedingungen) sehr schnell läuft. Wie hier erwähnt, kann die Abtastgeschwindigkeit mit der als "integrales Bild" bekannten Technik stark erhöht werden.

Und schließlich sind diese hilfreich Quellen - Object Detection in OpenCV und Generic Object Detection using AdaBoost von der University of California, 2008.

+0

"Der Boosting-Algorithmus nennt diesen schwachen Lernenden immer wieder, indem er ihm über die Trainingsdaten (in AdaBoost) jeweils eine andere Verteilung gibt." Kann ich verschiedene Klassifizierungsalgorithmen anstelle von verschiedenen Distributionen verwenden? – ndemir

Verwandte Themen