Quellen finden: „Kaskadenklassifikatoren“ – Nachrichten – Zeitungen – Bücher – Wissenschaftler – JSTOR (Juni 2019) (Erfahren Sie, wie und wann Sie diese Vorlage entfernen können)
Skalierung und DrehungenBearbeiten
Aus dieser Beschreibung geht hervor, dass der Klassifikator Gesichter nicht akzeptiert, die auf dem Kopf stehen (die Augenbrauen befinden sich nicht in der richtigen Position) oder an der Seite des Gesichts (die Nase befindet sich nicht mehr in der Mitte, und Schatten an der Seite der Nase könnten fehlen). Für jede Drehung, die nicht in der Bildebene liegt (Gesichtsseite), müssen separate Kaskadenklassifikatoren trainiert werden, und für jede Drehung, die in der Bildebene liegt (Gesicht auf dem Kopf oder zur Seite gekippt), müssen die Klassifikatoren neu trainiert oder auf die gedrehten Merkmale angewendet werden. Die Skalierung stellt kein Problem dar, da die Merkmale skaliert werden können (centerpixel, leftpixels und rightpixels haben nur eine Dimension relativ zum untersuchten Rechteck). In neueren Kaskaden wurden Pixelwerte aus einem Teil eines Rechtecks im Vergleich zu einem anderen durch Haar-Wavelets ersetzt.
StufeneigenschaftenBearbeiten
Um eine gute Gesamtleistung zu erzielen, müssen die folgenden Kriterien erfüllt sein:
- Jede Stufe muss alle Gesichter validieren und kann viele falsch-positive Ergebnisse liefern. Wenn beispielsweise Stufe 1 20% der Rechtecke, die ein Gesicht enthalten, als „enthält kein Gesicht“ markiert (Falsch-Negativ-Rate=20%), dann kann die Gesamtleistung der Kette nicht höher als 80% wahr-positiv sein, unabhängig von den nächsten Stufen, da 20% der Gesichter bereits abgelehnt wurden.
- Dies legt nahe, dass eine gute Stufe 100% wahr-positiv und z.B. 40% falsch-positiv sein muss, d.h. alle Rechtecke, die Gesichter enthalten, akzeptieren und fälschlicherweise viele Rechtecke als potentiell ein Gesicht enthaltend markieren, die von späteren Stufen eliminiert werden. Für eine erste Stufe, 100% richtig positiv und 40% falsch positiv ergibt immer noch eine Menge falsch negativ, wenn nur 1 von 1000 Rechtecken in einem Bild ein Gesicht enthält, wird es immer noch 400 bis 1 falsch mögliche Gesichter nach der ersten Stufe geben.
- Wenn die erste Stufe sehr schnell ist (ein paar Operationen), haben wir 60% der Rechtecke, die kein Gesicht enthalten, sehr schnell eliminiert.
Das Trainingsverfahren für eine Stufe besteht daher darin, viele schwache Lerner (einfache Pixeldifferenzoperatoren) zu haben, sie als Gruppe zu trainieren (ihr Gewicht zu erhöhen, wenn sie ein korrektes Ergebnis liefern), aber darauf zu achten, nur wenige aktive schwache Lerner zu haben, damit die Rechenzeit niedrig bleibt.
Der erste Detektor von Viola & Jones hatte 38 Stufen, mit 1 Merkmal in der ersten Stufe, dann 10, 25, 25, 50 in den nächsten fünf Stufen, für insgesamt 6000 Merkmale. In den ersten Stufen werden unerwünschte Rechtecke schnell entfernt, um die Rechenkosten der nächsten Stufen zu vermeiden, so dass die Rechenzeit darauf verwendet wird, den Teil des Bildes eingehend zu analysieren, der mit hoher Wahrscheinlichkeit das Objekt enthält.
KaskadentrainingBearbeiten
Kaskaden werden in der Regel durch kostenbewusstes ADAboost durchgeführt. Die Empfindlichkeitsschwelle (0,8 in unserem Beispiel) kann so eingestellt werden, dass es nahezu 100 % echte Positive und einige Falsch-Positive gibt. Das Verfahren kann dann für Stufe 2 erneut gestartet werden, bis die gewünschte Genauigkeit/Berechnungszeit erreicht ist.
Nach dem anfänglichen Algorithmus wurde verstanden, dass das Training der Kaskade als Ganzes optimiert werden kann, um eine gewünschte Erkennungsrate mit minimaler Komplexität zu erreichen. Beispiele für solche Algorithmen sind RCBoost, ECBoost oder RCECBoost. In ihren grundlegendsten Versionen können sie so verstanden werden, dass bei jedem Schritt zwischen dem Hinzufügen einer Stufe oder dem Hinzufügen eines schwachen Lerners zu einer vorherigen Stufe gewählt wird, je nachdem, was weniger kostspielig ist, bis die gewünschte Genauigkeit erreicht ist. Jede Stufe des Klassifizierers kann keine Erkennungsrate (Empfindlichkeit) haben, die unter der gewünschten Rate liegt, es handelt sich also um ein eingeschränktes Optimierungsproblem. Um genau zu sein, ist die Gesamtempfindlichkeit das Produkt der Empfindlichkeiten der Stufen.
Kaskadenklassifikatoren sind in OpenCV verfügbar, mit vortrainierten Kaskaden für Frontalgesichter und Oberkörper. Das Training einer neuen Kaskade in OpenCV ist auch mit den Methoden haar_training oder train_cascades möglich. Dies kann für die schnelle Objekterkennung von spezifischeren Zielen verwendet werden, einschließlich nicht-menschlicher Objekte mit Haar-ähnlichen Merkmalen. Das Verfahren erfordert zwei Gruppen von Proben: negative und positive, wobei die negativen Proben beliebigen Nicht-Objektbildern entsprechen. Die zeitliche Beschränkung beim Training eines Kaskadenklassifikators kann mit Hilfe von Cloud-Computing-Methoden umgangen werden.