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

फेस डिटेक्शन एक आर्टिफिशियल इंटेलिजेंस तकनीक है जो डिजिटल इमेज या वीडियो में मानवीय चेहरों की पहचान कर सकती है। डिस्कवर करें कि आप पौराणिक हार कैस्केड एल्गोरिदम के साथ कोड की 25 लाइनों के तहत रीयल-टाइम फेस डिटेक्शन प्रोग्राम कैसे बना सकते हैं।

हार कैस्केड क्या है?

हार कैस्केड छवियों या वीडियो में चेहरों का पता लगाने के लिए पॉल वियोला और माइकल जोन्स द्वारा पेश किया गया एक ऑब्जेक्ट डिटेक्शन एल्गोरिदम है। एक कैस्केड फ़ंक्शन को कई सकारात्मक और नकारात्मक छवियों का उपयोग करके प्रशिक्षित किया जाता है जिसे बाद में अन्य मीडिया में किसी वस्तु या चेहरे की पहचान करने के लिए उपयोग किया जा सकता है। ये प्रशिक्षित फाइलें में उपलब्ध हैं OpenCV GitHub रिपॉजिटरी.

एक स्लाइडिंग विंडो दृष्टिकोण का उपयोग करते हुए, एक निश्चित आकार की एक खिड़की एक छवि पर बाएं से दाएं, ऊपर से नीचे की ओर पुनरावृत्त करती है। प्रत्येक चरण में, खिड़की रुक जाती है और वर्गीकृत करती है कि क्षेत्र में कोई चेहरा है या नहीं।

instagram viewer

OpenCV, एक कंप्यूटर विज़न टूल, सुविधाओं को वर्गीकृत करने के लिए पूर्व-प्रशिक्षित हार कैस्केड मॉडल के साथ काम करता है। प्रत्येक चरण पाँच विशेषताओं की जाँच करता है: दो किनारे की विशेषताएँ, दो पंक्ति की विशेषताएँ और एक चार-आयताकार विशेषता।

अवलोकन करने पर, आंख का क्षेत्र गाल क्षेत्र की तुलना में गहरा दिखाई देता है जबकि नाक क्षेत्र आंख क्षेत्र की तुलना में चमकीला दिखाई देता है। आप नीचे दिए गए फैशन में इन सुविधाओं की कल्पना कर सकते हैं।

इन सुविधाओं और पिक्सेल की गणना का उपयोग करते हुए, एल्गोरिथ्म 100,000 से अधिक डेटा बिंदुओं की पहचान करता है। फिर आप सटीकता में सुधार करने और अप्रासंगिक सुविधाओं को त्यागने के लिए Adaboost एल्गोरिथ्म का उपयोग कर सकते हैं। कई पुनरावृत्तियों में, यह दृष्टिकोण त्रुटि दर को कम करता है और जब तक यह एक स्वीकार्य सटीकता प्राप्त नहीं करता तब तक फीचर वजन बढ़ाता है।

हालाँकि, यदि कोई विशेष परीक्षण मामला विफल हो जाता है और यह कम्प्यूटेशनल रूप से महंगा है, तो स्लाइडिंग विंडो तकनीक बंद हो जाती है। इसे हल करने के लिए, आप कैस्केड ऑफ़ क्लासिफायर्स की अवधारणा को लागू कर सकते हैं। सभी सुविधाओं को एक ही विंडो में लागू करने के बजाय, यह दृष्टिकोण समूहों में होता है और उन्हें चरणों में लागू करता है।

यदि विंडो पहले चरण में विफल हो जाती है, तो प्रक्रिया इसे छोड़ देती है, अन्यथा यह जारी रहती है। यह प्रदर्शन करने के लिए संचालन की संख्या में भारी कमी की ओर जाता है और इसे वास्तविक समय के अनुप्रयोगों के लिए उपयोग करने के लिए व्यवहार्य बनाता है।

फेस डिटेक्शन का वर्कफ़्लो

अपना फेस डिटेक्शन प्रोग्राम बनाने के लिए इस एल्गोरिदम का पालन करें:

  1. हार कैस्केड फ्रंटल फेस एल्गोरिदम लोड करें।
  2. कैमरे को इनिशियलाइज़ करें।
  3. कैमरे से फ्रेम पढ़ें।
  4. रंगीन छवियों को ग्रेस्केल में बदलें।
  5. चेहरे के निर्देशांक प्राप्त करें।
  6. एक आयत बनाएँ और उपयुक्त संदेश डालें।
  7. आउटपुट प्रदर्शित करें।

ओपनसीवी क्या है?

OpenCV एक ओपन-सोर्स कंप्यूटर विज़न और मशीन लर्निंग लाइब्रेरी है। इसमें विभिन्न अनुप्रयोगों के लिए 2,500 से अधिक अनुकूलित एल्गोरिदम हैं। इनमें चेहरा/वस्तु पहचान, पहचान, वर्गीकरण, और बहुत कुछ शामिल हैं।

आपके चेहरे के डेटा की गोपनीयता एक अलग चिंता है। Google, IBM और Yahoo जैसी सैकड़ों प्रमुख कंपनियाँ अपने अनुप्रयोगों में OpenCV का उपयोग करती हैं। कुछ लोग जो अपने डेटा को निजी रखने का लक्ष्य रखते हैं, ने प्रदर्शन किया है चेहरे की पहचान से बचने के तरीके हैं.

पायथन में ओपनसीवी स्थापित करने के लिए, कमांड का प्रयोग करें:

रंज स्थापित करना opencv-python

पायथन का उपयोग करके फेस डिटेक्शन प्रोग्राम कैसे बनाएं

फ़ेस डिटेक्टर बनाने के लिए इन चरणों का पालन करें:

यह उदाहरण कोड, हार कैस्केड एल्गोरिथम फ़ाइल के साथ, a में उपलब्ध है गिटहब रिपॉजिटरी और आपके लिए एमआईटी लाइसेंस के तहत उपयोग करने के लिए स्वतंत्र है।

  1. डाउनलोड करें हार कास्केड फ्रंटल फेस डिफॉल्ट एक्सएमएल फ़ाइल करें और इसे अपने पायथन प्रोग्राम के समान स्थान पर रखें।
  2. OpenCV लाइब्रेरी आयात करें।
    # आवश्यक पुस्तकालयों का आयात करना
    आयात cv2
  3. आसान संदर्भ के लिए हार कैस्केड फ्रंटल फेस एल्गोरिद्म फाइल को स्टोर करें।
    # haar केस एल्गोरिथम फ़ाइल को alg वेरिएबल में लोड करें
    अलग = "haarcascade_frontalface_default.xml"
  4. XML फ़ाइल को OpenCV में लोड करने के लिए CascadeClassifier क्लास का उपयोग करें।
    # एल्गोरिथ्म को OpenCV में पास करना
    haar_cascade = cv2.CascadeClassifier (alg)
  5. कैमरे से वीडियो कैप्चर करें। पास 0 से विडियो रिकॉर्ड() अपने प्राथमिक कैमरे का उपयोग करने के लिए कार्य करें। यदि आपने एक बाहरी कैमरा संलग्न किया है तो आप इसके बजाय इसका उपयोग करने के लिए क्रमिक संख्या 1, 2, और इसी तरह का उपयोग कर सकते हैं।
    # कैमरे से वीडियो फीड कैप्चर करना
    कैम = cv2.वीडियो कैप्चर (0)
  6. कैमरा इनपुट फ्रेम दर फ्रेम पढ़ने के लिए अनंत लूप सेट करें। पढ़ना() फ़ंक्शन दो पैरामीटर लौटाता है। पहला मान टाइप बूलियन का है जो दर्शाता है कि ऑपरेशन सफल हुआ या नहीं। दूसरे पैरामीटर में वास्तविक फ्रेम होता है जिसके साथ आप काम करने जा रहे हैं। इस फ्रेम को स्टोर करें आईएमजी चर।
    जबकिसत्य:
    _, आईएमजी = कैम.रीड ()
  7. डिफ़ॉल्ट टेक्स्ट को इस रूप में प्रदर्शित होने के लिए सेट करें चेहरा नहीं मिला. पता चलने पर, इस चर के मान को अपडेट करें।
     पाठ = "चेहरा नहीं मिला"
  8. बीजीआर प्रारूप में वास्तविक दुनिया से प्राप्त इनपुट रंगीन है। BGR का मतलब नीला, हरा और लाल है। यह कंप्यूटर विज़न एप्लिकेशन के लिए बहुत अधिक प्रोसेसिंग बनाता है। इसे कम करने के लिए, ग्रेस्केल फ़ॉर्मैट का इस्तेमाल करें।
    # प्रत्येक फ्रेम को बीजीआर से ग्रेस्केल में बदलें
    ग्रेआईएमजी = सीवी2.सीवीटीरंग (आईएमजी, सीवी2.COLOR_BGR2GRAY)
    फ्रेम और रूपांतरण कोड प्रारूप पास करें, COLOR_BGR2ग्रे, को सीवीटी रंग () वीडियो के प्रत्येक फ्रेम को रंग से ग्रेस्केल में बदलने के लिए।
  9. उपयोग मल्टीस्केल का पता लगाएं () चेहरों का पता लगाने के लिए। यह विधि इनपुट के रूप में तीन पैरामीटर लेती है। सबसे पहले स्रोत छवि है, ग्रेImg. दूसरा पैरामीटर स्केलफैक्टर है। यह निर्दिष्ट करता है कि आपको प्रत्येक छवि पैमाने पर छवि का आकार कितना कम करना है। स्केलिंग कारक के रूप में डिफ़ॉल्ट मान 1.3 का उपयोग करें । स्केल फ़ैक्टर जितना अधिक होगा, कदम उतने ही कम होंगे और निष्पादन तेज़ होगा। हालाँकि, लापता चेहरों की भी अधिक संभावना है। तीसरा पैरामीटर मिननेबर्स है। यह निर्दिष्ट करता है कि प्रत्येक उम्मीदवार आयत को इसे बनाए रखने के लिए कितने पड़ोसी होने चाहिए। मूल्य जितना अधिक होगा, झूठे सकारात्मक होने की संभावना उतनी ही कम होगी, लेकिन इसका मतलब यह भी है कि अस्पष्ट चेहरे के निशान गायब हैं।
    # हार कैस्केड का उपयोग करके चेहरों का पता लगाएं 
    चेहरा = haar_cascade.detectMultiScale (ग्रेआईएमजी, 1.3, 4)
  10. जब आप किसी चेहरे का पता लगाते हैं, तो आपको चार निर्देशांक मिलते हैं। x निर्देशांक का प्रतिनिधित्व करता है, y y निर्देशांक का प्रतिनिधित्व करता है, w चौड़ाई का प्रतिनिधित्व करता है, और h ऊंचाई का प्रतिनिधित्व करता है। टेक्स्ट को अपडेट करें चेहरे का पता चला और इन निर्देशांकों का उपयोग करके एक आयत बनाएँ। आयत का रंग हरा (बीजीआर) प्रारूप है जिसकी मोटाई दो पिक्सेल है।
    # चेहरे के चारों ओर एक आयत बनाएं और टेक्स्ट को फेस डिटेक्टेड में अपडेट करें
    के लिए (एक्स, वाई, डब्ल्यू, एच) चेहरे में:
    पाठ = "चेहरे का पता चला"
    cv2।आयत(आईएमजी, (एक्स, वाई), (एक्स + डब्ल्यू, वाई + एच), (0, 255, 0), 2)
  11. वैकल्पिक रूप से आउटपुट कंसोल पर टेक्स्ट प्रिंट करें। स्रोत के रूप में कैप्चर किए गए फ़्रेम का उपयोग करके स्क्रीन पर टेक्स्ट प्रदर्शित करें, उपरोक्त टेक्स्ट, फ़ॉन्ट में प्राप्त टेक्स्ट FONT_HERSHEY_SIMPLEX की शैली, 1 का फ़ॉन्ट स्केल फ़ैक्टर, नीला रंग, दो-पिक्सेल मोटाई और AA का लाइन प्रकार।
    # छवि पर पाठ प्रदर्शित करें
    छपाई(मूलपाठ)
    छवि = cv2.putText (img, पाठ, (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 2, cv2.LINE_AA)
  12. शीर्षक के साथ विंडो प्रदर्शित करें चेहरे का पहचान और छवि। उपयोग वेटकी () विधि 10 मिलीसेकंड के लिए विंडो प्रदर्शित करने और एक कुंजी प्रेस के लिए जाँच करने के लिए। यदि कोई उपयोगकर्ता दबाता है Esc कुंजी (ASCII मान 27), लूप से बाहर निकलें।
    # आउटपुट विंडो प्रदर्शित करें और बाहर निकलने के लिए एस्केप कुंजी दबाएं
    cv2.imshow ("चेहरे का पहचान", छवि)
    कुंजी = cv2.waitKey (10)

    अगर कुंजी == 27:
    तोड़ना

  13. अंत में, कैमरा ऑब्जेक्ट को पायथन प्रोग्राम से रिलीज़ करें और सभी विंडो बंद करें।
    कैम।मुक्त करना()
    cv2.destroyAllWindows()

फेस डिटेक्शन एक्शन में पायथन का उपयोग करना

जब कोई चेहरा देखने में हो, तो आपको इस तरह का आउटपुट देखना चाहिए:

जब कोई चेहरा मौजूद नहीं होता है, तो आपको ऐसा संदेश दिखाई देगा:

हार कैस्केड एल्गोरिथम का उपयोग करके चेहरा पहचानने की सीमाएं

जबकि यह एल्गोरिथम हल्का है, एक छोटे मॉडल आकार के साथ, और तेजी से काम करता है, इसकी कुछ सीमाएँ हैं:

  • रीयल-टाइम वीडियो में, चेहरे को कैमरे की दृष्टि की रेखा में होना चाहिए। यदि चेहरा बहुत दूर या बहुत निकट या बहुत झुका हुआ है तो एल्गोरिथ्म सुविधाओं को लेने में विफल रहता है।
  • यह एक फ्रंटल फेस एल्गोरिथम है, इसलिए आप साइड व्यू का पता नहीं लगा सकते हैं।
  • उच्च झूठे सकारात्मक परिणाम। यह अक्सर क्षेत्रों को चेहरों के रूप में पहचानता है, भले ही कोई चेहरा मौजूद न हो।
  • इष्टतम प्रकाश व्यवस्था की आवश्यकता है। अत्यधिक या मंद प्रकाश एल्गोरिथम की सटीकता को बाधित करता है।

फेस डिटेक्शन के कई अनुप्रयोग

आज की दुनिया में फेस डिटेक्शन के अनुप्रयोगों की एक विस्तृत श्रृंखला है। आप इसका उपयोग स्मार्टफोन, घरों, वाहनों और आव्रजन चौकियों में चेहरे की पहचान के लिए कर सकते हैं। सीसीटीवी सर्विलांस, सोशल मीडिया फिल्टर और सिनेमैटोग्राफी में ऑटोमैटिक फेस ट्रैकिंग में फेशियल डिटेक्शन पहले से ही आम है।

यह इस अद्भुत तकनीक की शुरुआत है। अग्रिमों के साथ, हम लापता बच्चों की पहचान करने, अपराधियों को पकड़ने और पहचान की चोरी जैसे अपराधों को रोकने में सक्षम हो सकते हैं।