2012-04-13 14 views
16

मैं चेहरे प्रमाणीकरण के लिए एक C++ अनुप्रयोग विकसित कर रहा हूं। सबसे पहले, मुझे चेहरे का पता लगाना होगा और छवि को पूर्व-प्रक्रिया करना होगा।चेहरा छवियों को संरेखित कैसे करें C++ opencv

  1. चेहरे का पता लगाने के लिए मैंने हार्कास्केड क्लासिफायर का उपयोग किया है। समस्या यह है कि यह टूल या यह एल्गोरिदम मुझे एक चेहरे का क्षेत्र देता है जो थोड़ा सा आयताकार होता है जो बाल और कुछ पृष्ठभूमि को घेरता है। क्या इस आयताकार के आयाम को बदलने का कोई समाधान है? मैंने "frontalfacecascaadclassifier.xml" का उपयोग किया।
  2. चेहरा पूर्व प्रसंस्करण के लिए मैं वास्तव में this technique की तरह चेहरा संरेखण करना चाहते हैं। मैं इसे पूरा करने के बारे में कैसे जाउंगा?
+0

पीसीए का उपयोग करके अभिविन्यास का पता लगाने का तरीका क्यों नहीं दिखाया जा सकता है, जैसा कि [यहां] (https://robospace.wordpress.com/2013/10/09/object-orientation-principal-component-analysis-opencv/) पर लागू किया जाना चाहिए चेहरे भी? – Seanny123

+0

मैंने पाया [dlib] (https://github.com/davisking/dlib) एक बहुत शक्तिशाली पुस्तकालय की तरह लगता है, और यह तेज़, नि: शुल्क और मुक्त स्रोत है। – dashesy

उत्तर

8

आप फिर एक और हार वर्गीकारक उपयोग कर सकते हैं नहीं हर आंख को खोजने के लिए (आँखें बहुत आसान लगता है कर रहे हैं) तो व्यक्ति मानते हुए दो आँखें है और हम एक 'स्तर' चेहरा मतलब करने के लिए आंखों क्षैतिज हैं परिभाषित करते हैं।

बस दो आंखों के बीच एंजेज को मापें और उस कोण से छवि को घुमाएं।

angle = atan (eye1.Y - eye2.Y)/(eye1.X - eye2.X) 
+0

आपकी प्रतिक्रिया के लिए धन्यवाद, विशेष रूप से आपकी त्वरित प्रतिक्रिया। हाँ, मैं पहली आंखों का पता लगाने के बारे में आपसे सहमत हूं। लेकिन मुझे समझ में नहीं आया कि आंखें क्षैतिज हैं, इसका मतलब है कि "स्तर 'को परिभाषित करने के लिए" क्या यह है कि धन्यवाद आपने परिभाषित किया है.सच में आँखों की स्थिति के अनुसार मेरा चेहरा कैसा हो सकता है – OntoBLW

+0

@louloulili - आपने कहा था कि आपको पहले ही हायर से चेहरा मिला है, आपको बस इसे घुमाने की जरूरत है? –

+0

मुझे इस तरह की एक छवि चाहिए http://www.bytefish.de/_media/blog/arnie_20_20_200_200.jpg?cache=&w=200&h=200 लेकिन मुझे इस तरह की एक छवि मिली http://www.bytefish.de /_media/blog/arnie_30_30_200_200.jpg और हायर डिटेक्टिंग चेहरे का तेह आयत बड़ा है। और इसके बाद मैं इसे संरेखित करने के लिए घुमाएगा। कृपया मेरी मदद करें और अपने प्रतिक्रियाओं के लिए अग्रिम धन्यवाद। – OntoBLW

18

किसी दिए गए चित्र में आंखों की सटीक स्थिति ढूंढना तुच्छ से बहुत दूर है। ओपनसीवी में आंखों को ढूंढने के लिए हायर-कैस्केड बहुत उपयोगी साबित होते हैं, इसके अलावा यह दृष्टिकोण छवि रोटेशन के लिए मजबूत नहीं होगा (हालांकि यह मामूली रोटेशन की क्षतिपूर्ति कर सकता है, मुझे प्रशिक्षण छवियों को नहीं पता)। अगर मैं आप थे तो मैं इस शोध क्षेत्र के प्रासंगिक कागजात के लिए http://scholar.google.com पर एक चौड़ाई पहली खोज शुरू करूंगा।

आपको चेहरे की छवियों को संरेखित करने के लिए एक मजबूत सिर मुद्रा अनुमान की आवश्यकता होगी। मैंने खुद कुछ शोध किया और मुझे लगता है कि एल्गोरिदम साझा करना और कोड यहां उपयोगी है। सबसे दिलचस्प दृष्टिकोण मैंने देखा है इस प्रकार हैं:

+0

मैं इस तरह की एक विधि http://www.bytefish.de/blog पर आगे बढ़ना चाहता हूं और इस http: /www.bytefish.de/_detail/blog/arnie_20_20_200_200.jpg?id=blog एक विचार है कि सी ++ – OntoBLW

6

मैं से निम्नलिखित चेहरा संरेखण कोड की कोशिश की जंगली परियोजना पृष्ठ में लेबल चेहरे। यह वास्तव में अच्छी तरह से काम करता है और चेहरे की विशेषता बिंदुओं का पता लगाने की आवश्यकता नहीं है। सी ++ कोड से डाउनलोड किया जा सकता है: http://vis-www.cs.umass.edu/faceAlignment/

यदि आप अभी भी चेहरे की प्रमुख बिंदु ढूंढना चाहते हैं, तो मुझे लगता है कि व्हायोला-जोन्स डिटेक्टर बहुत मजबूत और सटीक नहीं है। मैं व्यक्तिगत रूप से फ़्लैंडमार्क फेस कीपॉइंट डिटेक्टर का उपयोग करने की सलाह देता हूं: http://cmp.felk.cvut.cz/~uricamic/flandmark/ जो कि अधिक मजबूत और सटीक है। सी कोड उपरोक्त साइट से डाउनलोड किया जा सकता है।

+0

में ऐसा करने के लिए कैसे करें मेरी कुछ नमूना छवियों पर उनके 'people.train' डेटा का उपयोग करके, साथ ही साथ काम नहीं किया जैसा कि मैंने आशा की थी। यह मेरी कुछ नियंत्रण छवियों को घुमाता है और जितना चाहूं मेरी टेस्ट छवियों को घुमाता नहीं था। क्या आप अपने परीक्षण सेट का एक नमूना साझा करना चाहते हैं और इसके परिणामस्वरूप उसने आपको यह सिफारिश करने का विश्वास दिया है? – Seanny123

+1

मैं लोगों से परिचित नहीं हूं। मॉडल मॉडल जिसका आप उल्लेख कर रहे हैं। मैंने अपने खुद के मॉडल को प्रशिक्षित करने के लिए कन्जलिंग कोड का इस्तेमाल किया जिसे मैं चेहरों के लिए चेहरों के बारे में बताता हूं, लगभग 1000 चेहरों का उपयोग करता हूं। फिर चेहरे को संरेखित करने के लिए फ़नलिंग कोड का उपयोग करने के लिए उपयोग किया जाता है। सबसे पहले, आपके प्रशिक्षण और परीक्षण छवियों में मूल misalignment भी "दूर" नहीं हो सकता है। अगर उन्हें 40 डिग्री से गलत तरीके से गलत किया गया है या यदि स्केल बहुत अलग है तो यह काम नहीं करता है। अखबार को पढ़ो। इसे सिर्फ ब्लैक बॉक्स के रूप में न करें। – lightalchemist

+0

मैंने जिस परीक्षण सेट की कोशिश की है, वह है [यह] (http://chenlab.ece.cornell.edu/people/Andy/GallagherDataset.html)। ध्यान दें कि आप चेहरे और पैरामीटर को कैसे फसल करते हैं, खासकर आंतरिक और बाहरी विंडो आकार बहुत महत्वपूर्ण है। आप एक भीतरी खिड़की चाहते हैं जो भौहें से होंठ या ठोड़ी तक कैप्चर करे। – lightalchemist

1

गलत हस्ताक्षर किए गए चेहरे का पता लगाने से चेहरा पहचान मुश्किल हो जाती है। कभी-कभी आप संरेखण को ठीक करना चाहते हैं, कभी-कभी उन लोगों को बाहर करने के लिए पर्याप्त है जो सही ढंग से गठबंधन नहीं होते हैं (उदाहरण के लिए यदि आप किसी वीडियो स्ट्रीम में चेहरे का पता लगा रहे हैं)। मैंने बाद का दृष्टिकोण लिया और एक विशेष हायर कास्केड को प्रशिक्षित किया ताकि केवल सही ढंग से गठबंधन, अच्छी तरह से जलाए गए चेहरों का पता लगाया जा सके। विवरण यहां: http://rwoodley.org/?p=417

यदि आप मेरे कैस्केड का उपयोग करते हैं तो मुझे बताएं कि यह आपके लिए कैसे काम करता है। मैं उत्सुक हूं कि दूसरों को क्या परिणाम मिलेगा। यह मेरी जरूरतों से मुलाकात की।

0

सीएसआईआरओ फेस विश्लेषण एसडीके (website and demos, source code) सॉफ़्टवेयर पर एक नज़र डालें, यह 66 फिडियस पॉइंट्स के साथ ट्रैकिंग संरेखण का सामना करता है। यह तेज़ और बहुत सटीक है।

+0

मैं इसे अपने थीसिस के लिए उपयोग कर रहा हूं। मैं कह सकता हूं कि यह मैंने देखा है कि सबसे अच्छा चेहरा संरेखण सॉफ्टवेयर में से एक है। यह वास्तविक समय में 66 स्थलचिह्न ट्रैक करता है। अधिक जानकारी के लिए इस पेपर पर एक नज़र डालें "नियमित रूप से औसत बदलावों द्वारा विकृत मॉडल फिटिंग"। –

+0

यह प्रोग्राम एक झुका हुआ चेहरे वाली छवियों पर काम नहीं करता है। – Seanny123

+0

चेहरों का पता लगाने के लिए यह ओपनसीवी फेस डिटेक्टर का उपयोग करता है। आप CSIRO ट्रैकर को किसी अन्य चेहरे डिटेक्टर के साथ प्रारंभ करने का प्रयास कर सकते हैं जो झुका हुआ चेहरों के साथ काम करता है। हालांकि, आमतौर पर प्रमाणीकरण समस्याओं के लिए आपको चर के चर को कम से कम करने की आवश्यकता होगी, जिससे प्रत्येक प्रशिक्षित छवियां परीक्षण के समान हो सके। –

0

इसे पूरा करने के लिए एक एल्गोरिदम के लिए पूरे दिन खोज करने के बाद, अंत में Google से DuckDuckGo पर स्विच करने के बाद मुझे this paper मिला। यह उन चेहरों का समर्थन करता है जो 45 डिग्री से बड़े कोण पर झुका हुआ होते हैं।

कोड में कार्यान्वित करने के तरीके के रूप में, यह एक और समस्या है जिसे मैं वर्तमान में काम कर रहा हूं, लेकिन कम से कम यह एक प्रारंभिक बिंदु है।

4

चेहरा संरेखण के लिए राज्य के अत्याधुनिक दृष्टिकोण इस होना चाहिए:

Supervised Descent Method and its Application to Face Alignment X. Xiong and F. De la Torre in CVPR 2013

यह बहुत तेज और प्रभावी है। आप अपनी परियोजना वेबसाइट IntraFace देख सकते हैं।

वे एक उपयोग में आसान सॉफ्टवेयर प्रदान करते हैं। हालांकि, मुख्य भाग कोड, यानी देखरेख वंश विधि (एसडीएम)जारी नहीं है, यह केवल सरल रेखीय प्रतीपगमन जो आसानी से लागू किया जा सकता है।

एक डेमो दिखाने के लिए कि यह झुके हुए चेहरे संभाल कर सकते हैं यहाँ (गोपनीयता जारी करने के लिए, ऊपरी-बाएं कोने में कलंक जोड़ सकते हैं और अक्ष पर ध्यान देना): https://drive.google.com/file/d/0BztytuqPViMoTG9QaEpZWi1NMGc/edit?usp=sharing

+0

हालांकि यह एक उपयोगी लिंक है, लेकिन मुझे अधिक जानकारी चाहिए, उदाहरण के लिए सबूत है कि यह आपको झुकाव देने से पहले झुका हुआ चेहरे और/या झुकाव की डिग्री का पता लगाता है। – Seanny123

+0

एक कोड स्निपेट विशेष रूप से अच्छा होगा। – Seanny123

+0

उपरोक्त छवि में एक डेमो दिखाया गया है। कोड के लिए, लेखक द्वारा प्रदान किया गया एक matlab .p फ़ाइल है, जिसका उपयोग आपके एप्लिकेशन में किया जा सकता है लेकिन स्रोत अज्ञात है। हालांकि, मैं दृढ़ता से अनुशंसा करता हूं कि आप पेपर की जांच करें, अंतर्निहित एल्गोरिदम बहुत सरल है। – rookiepig

1

मैं इसे यहाँ लागू कर दिया है OpenCV का उपयोग कर & डीएलआईबी: https://github.com/ManuBN786/Face-Alignment-using-Dlib-OpenCV

किसी भी झुका हुआ चेहरे को मेरे कोड का उपयोग करके गठबंधन किया जा सकता है।

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