Opracowałem aplikację do wykrywania twarzy za pomocą kaskadowej detekcji twarzy HAAR OpenCVs. Algorytm działa dobrze, ale co jakiś czas znajduje wzorce na ścianie lub coś, co nie jest twarzą.
Chcę uruchomić dodatkowe kontrole na obiektach podejrzanych jako twarze, ale chcę to zrobić tylko na obiektach, na których nie powiem, że są twarzami. Czy istnieje sposób na uzyskanie poziomu "zaufania" dla twarzy wykrytej przez wykrywanie kaskady HAAR?Czy istnieje sposób na pomiar poziomu zaufania podczas korzystania z wykrywania twarzy haar przy użyciu OpenCV?
Odpowiedz
OpenCV faktycznie znajduje więcej niż jeden wynik dla dowolnego obiektu, każdy wykryty obszar w dużej mierze pokrywa się ze sobą; są one następnie zgrupowane razem i tworzą liczbę "sąsiadów". Ta liczba to tzw. Zaufanie.
Po wykryciu obiektu jednym z parametrów jest najmniejszy sąsiad, zanim trafienie zostanie zwrócone. Zwiększenie go zmniejsza liczbę fałszywych trafień, ale także zmniejsza liczbę możliwych wykrytych twarzy.
Dlaczego nie uruchamiać wielu kaskad haar (wyszkolonych inaczej) na tym samym obrazie i sprawdzić, czy dają podobne wyniki? Niech głosują, tak jak to było. Tak więc gdyby tylko jedna kaskada znalazła daną twarz, a inni nie, to dawałoby mniej wiary w tę twarz.
Udało mi się uruchomić 3 kaskady jednocześnie na kanale wideo iPhone'a w czasie rzeczywistym, więc wydajność nie powinna stanowić problemu w wielu normalnych sytuacjach. Więcej tutaj: http://rwoodley.org/?p=417
OpenCV zapewnia zaufanie poprzez argument „wagi” w funkcji „detectMultiScale” z klasy CascadeClassifier, trzeba umieścić flagę „outputRejectLevels” do prawdziwego
Nie bezpośredniej odpowiedzi na pytanie , ale może to pomóc w ograniczeniu fałszywego wykrywania.
Możesz uzyskać mniejszą liczbę fałszywych wykrytowań, modyfikując wartości MinNeibhbours, CV_HAAR_FIND_BIGGEST_OBJECT i Size.
int MinNeighbours = 7;
face_cascade.detectMultiScale (frame_gray, faces, 1.1, MinNeighbours, CV_HAAR_FIND_BIGGEST_OBJECT, Size (60, 60));
- 1. Wykrywanie iOS wykrywania twarzy
- 2. Wykrywanie funkcji twarzy za pomocą OpenCV Android
- 3. Rozpoznawanie twarzy w wideo przy użyciu OpenCV daje nieobsługiwany wyjątek
- 4. Czy są jakieś bezpłatne biblioteki klasy OpenCV?
- 5. OpenCV Haar szkolenia dla obrazu statycznego
- 6. Wyjaśnienie tabeli wyników OpenCV Haar
- 7. Czy istnieje sposób na odpytywanie przy użyciu usługi WatchService?
- 8. Czy istnieje lepszy sposób wykrywania, czy transakcja Spring DB jest aktywna niż przy użyciu TransactionSynchronizationManager.isActualTransactionActive()?
- 9. Wykrywanie kota przy użyciu treningu Haar
- 10. Czy istnieje sposób wykrywania blokerów Flash?
- 11. Rozpoznawanie twarzy OpenCV/EmguCV
- 12. Pomiar poziomu za pomocą AVAudioEngine
- 13. Czy istnieje sposób wyłączenia wykrywania przeglądarki .NET?
- 14. Pomiar czasu ładowania strony przy użyciu JavaScript
- 15. Wykrywanie twarzy OpenCV jest powolne na Raspberry Pi
- 16. OpenCV: parametr zaufania RANSAC do znalezienia homografii
- 17. twarzy Punkty fabularne wykrycie za pomocą OpenCV
- 18. Kompilowanie aplikacji MVC dla średniego poziomu zaufania
- 19. Czy istnieje sposób na zatrzymanie lub oczekiwanie na kilka chwil z poziomu skryptu?
- 20. Jak mogę wykonać rozpoznawanie twarzy na iOS?
- 21. Zaufanie klasyfikatorów do wykrywacza twarzy opencv
- 22. Jak przenieść punkty twarzy w opencv/zniekształcenie twarzy
- 23. Czy w Eclipse istnieje sposób na zmianę poziomu zgodności ECMAScript?
- 24. Grupowanie twarzy przy użyciu algorytmu szeptu chińskiego
- 25. Właściwy sposób korzystania z JQuery przy użyciu MasterPages w ASP.NET?
- 26. Zalecane narzędzia do wykrywania twarzy/SDK/itp.
- 27. wykrywania twarzy nie działa dla Przednia kamera
- 28. Wykrywanie i porównywanie twarzy
- 29. Czy istnieje sposób na uzyskanie lepszych informacji w kontekście błędu podczas korzystania z msvc? (ex: C2248)
- 30. Czy istnieje sposób korzystania z klienta aiohttp z serwerem proxy?
czy ten parametr jest dostępny dla interfejsu API openCV C++? Po prostu widzę to w API Pythona?!? Na przykład, czy istnieje nieudokumentowany sposób użycia parametru flags w tym celu? – Micka
[Najwyraźniej] (http://code.opencv.org/issues/3064) jest nieudokumentowana funkcja w API C++. 'Void CascadeClassifier :: detectMultiScale (const Mat & wizerunek, Wektor i obiekty, Wektor & rejectLevels, wektor & levelWeights, podwójne scaleFactor, int minNeighbors, int flagi, wielkość minObjectSize Rozmiar maxObjectSize, bool outputRejectLevels)' –
sietschie