2012-05-10 6 views
6

मैंने ओपनसीवी HAAR कैस्केड चेहरे का पता लगाने का उपयोग कर चेहरे का पता लगाने के लिए एक आवेदन विकसित किया। एल्गोरिदम ठीक काम करता है, हालांकि हर बार एक बार में यह दीवार या एथर चीजों पर पैटर्न पाता है जो चेहरे नहीं हैं।
मैं चेहरों के रूप में संदिग्ध वस्तु पर अतिरिक्त चेक चलाने के लिए चाहता हूं लेकिन मैं केवल वस्तुओं पर ऐसा करना चाहता हूं कि मैं विश्वास नहीं कर रहा हूं कि वे चेहरे हैं। HAAR कैस्केड चेहरे का पता लगाने के चेहरे के लिए "आत्मविश्वास" स्तर प्राप्त करने का कोई तरीका है?ओपनसीवी का उपयोग करते हुए हायर फेस डिटेक्शन का उपयोग करते समय आत्मविश्वास के स्तर को मापने का कोई तरीका है?

उत्तर

3

OpenCV वास्तव में किसी विशेष वस्तु के लिए एक से अधिक परिणाम पाता है, प्रत्येक का पता चला क्षेत्र काफी हद तक एक दूसरे को ओवरलैप करने; फिर उन्हें एक साथ समूहीकृत किया जाता है और 'पड़ोसियों की संख्या' की गणना की जाती है। यह गिनती तथाकथित आत्मविश्वास है।

जब आप वस्तु का पता लगाने के लिए प्रदर्शन, मानकों में से एक कम से कम पड़ोसियों से पहले एक हिट दिया जाता है है। इससे बढ़ने से झूठी सकारात्मक कमी आती है, लेकिन संभावित पाए गए चेहरे की संख्या भी कम हो जाती है।

1

एक ही छवि के खिलाफ कई हायर कैस्केड (अलग-अलग प्रशिक्षित) क्यों नहीं चलाते और देखें कि क्या वे समान परिणाम उत्पन्न करते हैं? उन्हें वोट दें, जैसा कि यह था। इस प्रकार यदि केवल एक कैस्केड को दिया गया चेहरा मिला और दूसरों ने नहीं किया, तो इससे आपको उस चेहरे पर कम आत्मविश्वास मिलेगा।

मैं रीयल-टाइम में एक आईफोन वीडियो फीड पर एक साथ 3 कैस्केड चलाने में सक्षम था, इसलिए कई सामान्य परिदृश्यों में प्रदर्शन एक मुद्दा नहीं होना चाहिए। यहाँ अधिक: http://rwoodley.org/?p=417

5

OpenCV वर्ग CascadeClassifier से समारोह "detectMultiScale" में तर्क "वजन" के माध्यम से आत्मविश्वास प्रदान करता है, आप सच

+1

क्या यह पैरामीटर ओपनसीवी सी ++ एपीआई के लिए उपलब्ध है? मैं इसे पाइथन एपीआई में देखता हूं?! उदाहरण के लिए, क्या इस उद्देश्य के लिए झंडे पैरामीटर का उपयोग करने के लिए एक अनियंत्रित तरीका है? – Micka

+0

[जाहिर है] (http://code.opencv.org/issues/3064) सी ++ एपीआई में एक अनियंत्रित फ़ंक्शन भी है। 'शून्य CascadeClassifier :: detectMultiScale (स्थिरांक चटाई और छवि, वेक्टर और वस्तुओं, वेक्टर और rejectLevels, वेक्टर और levelWeights, डबल scaleFactor, minNeighbors, पूर्णांक झंडे, आकार minObjectSize, आकार maxObjectSize int, bool outputRejectLevels)' – sietschie

0

नहीं अपने प्रश्न के लिए एक सीधा जवाब देने के लिए ध्वज "outputRejectLevels" लगाने की जरूरत है , लेकिन यह झूठी पहचान को कम करने में मदद कर सकता है।

आप MinNeibhbours, CV_HAAR_FIND_BIGGEST_OBJECT, और आकार मानों को ट्वीव करके कम झूठी पहचान प्राप्त कर सकते हैं।

पूर्णांक MinNeighbours = 7;

face_cascade.detectMultiScale (frame_gray, चेहरे, 1.1, MinNeighbours, CV_HAAR_FIND_BIGGEST_OBJECT, आकार (60, 60));

संबंधित मुद्दे