Ich entwickelte eine Anwendung für Gesichtserkennung mit OpenCVs HAAR Cascade Gesichtserkennung. Der Algorithmus funktioniert gut, aber hin und wieder findet er Muster an der Wand oder andere Dinge, die keine Gesichter sind.
Ich möchte zusätzliche Prüfungen für Objekte, die als Gesichter vermutet werden, ausführen, aber ich möchte es nur für Objekte tun, die ich nicht vertraue, dass sie Gesichter sind. Gibt es eine Möglichkeit, ein "Vertrauensniveau" für ein Gesicht zu erreichen, das von der HAAR-Kaskaden-Gesichtserkennung erkannt wird?Gibt es eine Möglichkeit, das Konfidenzniveau zu messen, wenn Sie die Gesichtserkennung mit OpenCV verwenden?
Antwort
OpenCV findet tatsächlich mehr als ein Ergebnis für ein bestimmtes Objekt, wobei jeder erkannte Bereich sich weitgehend überlappt; Diese werden dann zusammen gruppiert und bilden eine Anzahl von Nachbarn. Diese Zählung ist das sogenannte Vertrauen.
Wenn Sie eine Objekterkennung durchführen, ist einer der Parameter die minimalen Nachbarn, bevor ein Treffer zurückgegeben wird. Durch Erhöhen wird die Anzahl der falsch erkannten Gesichter verringert und die Anzahl der erkannten Gesichter verringert.
Warum nicht mehrere Haarkaskaden (anders trainiert) gegen das gleiche Bild laufen lassen und sehen, ob sie ähnliche Ergebnisse erzeugen? Lassen Sie sie sozusagen abstimmen. Wenn also nur eine Kaskade ein gegebenes Gesicht findet und die anderen nicht, würde das dem gegebenen Gesicht weniger Vertrauen geben.
Ich konnte 3 Kaskaden gleichzeitig auf einem iPhone Video Feed in Echtzeit laufen lassen, so dass die Leistung in vielen normalen Szenarien kein Problem sein sollte. Mehr hier: http://rwoodley.org/?p=417
OpenCV bietet das Vertrauen über das Argument „Gewichte“ in Funktion „detectMultiScale“ aus Klasse CascadeClassifier, müssen Sie die Flagge „outputRejectLevels“ true
keine direkte Antwort auf Ihre Frage stellen , aber dies kann helfen, die falsche Erkennung zu reduzieren.
Sie können weniger Fehlalarme erzielen, indem Sie die Werte für MinNeibhbours, CV_HAAR_FIND_BIGGEST_OBJECT und Größe optimieren.
int MinNeighbours = 7;
face_cascade.detectMultiScale (frame_gray, Gesichter, 1.1, MinNeighbours, CV_HAAR_FIND_BIGGEST_OBJECT, Size (60, 60));
- 1. Gibt es eine Möglichkeit, die Parserzeit in PHP zu messen?
- 2. OpenCV/EmguCV Gesichtserkennung
- 3. OpenCV Gesichtserkennung echte Person
- 4. Gibt es eine Möglichkeit, das JavaScript-Attribut standardmäßig zu verwenden?
- 5. Gibt es eine Möglichkeit, SCOPE_IDENTITY zu verwenden, wenn Sie eine multiple insert-Anweisung verwenden?
- 6. Gibt es eine Möglichkeit zu identifizieren, wenn das Telefon klingelt?
- 7. Gibt es eine Möglichkeit, die Sortierung von Elementen zu steuern, wenn Sie jquery verwenden ui
- 8. Gesichtserkennung mit OpenCV in Android?
- 9. Gibt es eine Möglichkeit, neue DrawerLayout mit ActionBarSharlock zu verwenden?
- 10. CamShift + Gesichtserkennung in OpenCv
- 11. Gibt es eine einfache Möglichkeit, Hoptoad mit CakePHP zu verwenden?
- 12. iPhone OpenCV Gesichtserkennung
- 13. Gesichtserkennung mit Android SDK nicht opencv
- 14. Gibt es eine Möglichkeit, gespeicherte Elemente zu finden, wenn Sie die SaveOrUpdate-Methode in Nhibernate verwenden?
- 15. Gibt es eine Möglichkeit, eine Testdatenbank in Katalysator zu verwenden?
- 16. Gibt es eine einfache Möglichkeit, Gulture mit Django zu verwenden?
- 17. Gibt es eine Möglichkeit, gcloud mit python3 zu verwenden?
- 18. Gibt es freie OpenCV-Klassifikatorbibliotheken?
- 19. Gibt es eine Möglichkeit, wrapbootstrap Themen mit Angular2 zu verwenden?
- 20. Gibt es eine Möglichkeit, Wildcards mit git checkout zu verwenden?
- 21. Gibt es eine Möglichkeit, BigQuery mit Dataproc zu verwenden?
- 22. Gesichtserkennung in Video mit OpenCV gibt unbehandelt Ausnahme
- 23. Dart gibt es eine Möglichkeit, die Ausführungszeit für einen kleinen Code zu messen
- 24. Gibt es eine Möglichkeit, die Z-Reihenfolge festzulegen, wenn Sie MigLayout und die absolute Positionierung verwenden?
- 25. Gibt es eine einfache Möglichkeit, InternalsVisibleToAttribute zu verwenden?
- 26. OpenCV/JavaCV Android Gesichtserkennung Initialisierung
- 27. Gibt es eine Möglichkeit, einen DataAccessor von jena zu verwenden, um das Graphspeicherprotokoll virtuos zu verwenden?
- 28. Gibt es eine Möglichkeit, freigegebene Beispiele im Exunit zu verwenden?
- 29. Gibt es eine Möglichkeit, Funktionen in NSPredicate PrädikatWithFormat zu verwenden:
- 30. Gibt es eine Möglichkeit, lokale Variablen in Modulen zu verwenden?
ist dieser Parameter für openCV C++ API verfügbar? Ich sehe es nur in Python API?!? Gibt es zum Beispiel eine undokumentierte Möglichkeit, den Flags-Parameter für diesen Zweck zu verwenden? – Micka
[Anscheinend] (http://code.opencv.org/issues/3064) gibt es auch eine undokumentierte Funktion in der C++ API. 'Leere CascadeClassifier :: detectMultiScale (const Mat & Bild, Vektor & Objekte, Vektor & rejectLevels, Vektor & levelWeights, Doppelscalefactor, int minNeighbors, int flags, Größe minObjectSize, Größe maxObjectSize, Bool outputRejectLevels)' –
sietschie