- अवयव आवश्यक
- रास्पबेरी पाई में OpenCV स्थापित करना
- Dlib का उपयोग करके चेहरे के अंगों का पता कैसे लगाएं
- फेसिअल लैंडमार्क डिटेक्शन के लिए रास्पबेरी पाई का प्रोग्रामिंग
- फेस पार्ट रिकॉगनाइजर का परीक्षण
चेहरे की जगहों का पता लगाना चेहरे पर विभिन्न भागों जैसे आइब्रो, आईज़, नोज़, माउथ और जॉ को पहचानने की प्रक्रिया है। कई एप्लिकेशन हैं जो फेशियल लैंडमार्क डिटेक्शन तकनीक का उपयोग करते हैं।
पहले हम OpenCV का उपयोग करके एक फेस रिकग्निशन सिस्टम का निर्माण करते हैं, आज हम चेहरे के लैंडमार्क पहचान के लिए रास्पबेरी पाई के साथ उसी OpenCV का उपयोग करेंगे । Dlib लाइब्रेरी से एक पूर्व-प्रशिक्षित फेशियल लैंडमार्क डिटेक्टर मॉड्यूल का उपयोग चेहरे पर मुख्य चेहरे की संरचनाओं के स्थान का पता लगाने के लिए किया जाएगा और पहचाने गए चेहरे के हिस्सों की कल्पना करने के लिए अजगर ओपनसीवी का उपयोग किया जाएगा।
अवयव आवश्यक
हार्डवेयर घटक
- रसभरी पाई ३
- पाई कैमरा मॉड्यूल
सॉफ्टवेयर और ऑनलाइन सेवाएँ
- OpenCV
- Dlib
- अजगर ३
इस के साथ आगे बढ़ने से पहले रास्पबेरी पाई 3 चेहरे चिह्न जांच , पहले, हम इस परियोजना में OpenCV, imutils, dlib, Numpy, और कुछ अन्य निर्भरता स्थापित करने की आवश्यकता। OpenCV का उपयोग यहां डिजिटल इमेज प्रोसेसिंग के लिए किया जाता है। डिजिटल इमेज प्रोसेसिंग के सबसे आम एप्लिकेशन ऑब्जेक्ट डिटेक्शन, फेस रिकॉग्निशन और लोग काउंटर हैं।
रास्पबेरी पाई के साथ पाई कैमरा कैसे इंटरफ़ेस करें, इसके बारे में अधिक जानने के लिए, हमारे पिछले ट्यूटोरियल का पालन करें।
रास्पबेरी पाई में OpenCV स्थापित करना
यहां ओपनसीवी लाइब्रेरी का उपयोग रास्पबेरी पाई क्यूआर स्कैनर के लिए किया जाएगा। ओपनसीवी को स्थापित करने के लिए, सबसे पहले, रास्पबेरी पाई को अपडेट करें।
sudo apt-get update
फिर अपने रास्पबेरी पाई पर ओपनसीवी स्थापित करने के लिए आवश्यक निर्भरताएं स्थापित करें।
sudo apt-get libhdf5-देव -y स्थापित sudo apt-get libhdf5 धारावाहिक-देव -y स्थापित sudo apt-get libatlas आधार-देव -y स्थापित sudo apt-get स्थापित libjasper-देव -y sudo apt-get libqtgui4 स्थापित -Y sudo apt-get install libqt4-test –y
उसके बाद, नीचे कमांड का उपयोग करके रास्पबेरी पाई में ओपनसीवी स्थापित करें।
पिप 3 ओपेंनव-कंट्रीब-पाइथन == 4.1.0.25 स्थापित करें
हमने पहले रास्पबेरी पाई के साथ ओपनसीवी का इस्तेमाल किया और इस पर बहुत सारे ट्यूटोरियल बनाए।
- रास्पबेरी पाई पर CMC का उपयोग करके OpenCV स्थापित करना
- रास्पबेरी पाई और OpenCV के साथ वास्तविक समय चेहरा पहचान
- रास्पबेरी पाई और ओपनसीवी का उपयोग करके लाइसेंस प्लेट मान्यता
- OpenCV और रास्पबेरी पाई का उपयोग करके भीड़ का आकार अनुमान
हमने शुरुआती स्तर से शुरू होने वाले ओपनसीवी ट्यूटोरियल की एक श्रृंखला भी बनाई है।
Imutils इंस्टॉल करना: imutils का उपयोग कुछ आवश्यक छवि प्रसंस्करण कार्यों जैसे अनुवाद, रोटेशन, आकार बदलने, कंकाल करने और OpenCV के साथ Matplotlib छवियों को प्रदर्शित करने के लिए किया जाता है। इसलिए नीचे कमांड का उपयोग करके इमूटिल स्थापित करें:
pip3 इंस्टॉल करें
Dlib इंस्टॉल करना: dlib आधुनिक टूलकिट है जिसमें मशीन लर्निंग एल्गोरिदम और वास्तविक दुनिया की समस्याओं के लिए टूल शामिल हैं। Dlib को स्थापित करने के लिए नीचे दिए गए कमांड का उपयोग करें।
pip3 स्थापित dlib
NumPy स्थापित करना: NumPy वैज्ञानिक कंप्यूटिंग के लिए मुख्य पुस्तकालय है जिसमें एक शक्तिशाली n- आयामी सरणी वस्तु होती है, C, C ++ आदि को एकीकृत करने के लिए उपकरण प्रदान करता है।
Pip3 numpy स्थापित करें
Dlib का उपयोग करके चेहरे के अंगों का पता कैसे लगाएं
हम dlib लाइब्रेरी की प्री-प्रशिक्षित फेशियल लैंडमार्क डिटेक्टर का उपयोग करने जा रहे हैं ताकि चेहरे पर चेहरे की संरचनाओं के लिए 68 (x, y) -कॉर्ड दिशाओं के स्थान का पता लगाया जा सके। dlib फेशियल लैंडमार्क प्रेडिक्टर को iBUG 300-W डेटासेट पर प्रशिक्षित किया गया है। 68 निर्देशांक के अनुक्रमित वाली एक छवि नीचे दी गई है:
फेसिअल लैंडमार्क डिटेक्शन के लिए रास्पबेरी पाई का प्रोग्रामिंग
चेहरे के हिस्सों की पहचान के लिए पूरा अजगर कोड dlib के पूर्व-प्रशिक्षित चेहरे के लैंडमार्क डिटेक्टर के साथ पृष्ठ के अंत में दिया गया है। यहां हम बेहतर समझ के लिए कोड के कुछ महत्वपूर्ण भागों की व्याख्या कर रहे हैं।
इसलिए, हमेशा की तरह, सभी आवश्यक पुस्तकालयों को शामिल करके कोड शुरू करें।
imutils से आयात करें face_utils np आयात के रूप में सुन्न आयात आयात करते हैं
फिर कैमरा ऑब्जेक्ट को इनिशियलाइज़ करें और (640, 480) और 30 एफपीएस पर फ्रेम रेट पर रिज़ॉल्यूशन सेट करें
camera = PiCamera () camera.resolution = (640, 480) camera.framerate = 30
अब अगली पंक्तियों में, फेस लैंडमार्क प्रेडिक्टर को रास्ता प्रदान करने के लिए तर्क पार्सर का उपयोग करें।
ap = argparse.ArgumentParser () ap.add_argument ("- p", "--shape-predictor", आवश्यक = सत्य, मदद = "चेहरे का लैंडमार्क प्रेडिक्टर पथ") args = aps (ap.parse_args ()))
अगली पंक्तियों में, HOG- आधारित dlib के पूर्व-प्रशिक्षित फेस डिटेक्टर को इनिशियलाइज़ करें और पहले से प्रशिक्षित फेशियल लैंडमार्क प्रेडिक्टर को लोड करें।
डिटेक्टर = dlib.get_frontal_face_detector () पूर्वसूचक = dlib.shape_predictor (args)
फिर रास्पबेरी पाई कैमरे से फ़्रेम कैप्चर करना शुरू करने के लिए कैप्चर_कॉन्टिनेंट फ़ंक्शन का उपयोग करें ।
कैमरे में फ्रेम के लिए। Capture_continuous (rawCapture, format = "bgr", use_video_port = True): छवि = फ्रेम। cv2.imshow ("फ़्रेम", छवि) कुंजी = =v2.waitKey (1) और 0xFF rawCapture.truncate (0))
किसी विशेष फ़्रेम को कैप्चर करने के लिए कीबोर्ड की 'S' का उपयोग करें। फिर कैप्चर की गई छवि का आकार बदलें और इसे ग्रेस्केल में बदलें।
अगर कुंजी == ord ("s"): छवि = imutils.resize (छवि, चौड़ाई = 400) ग्रे = cv2.cvtColor (छवि, cv2.COLOR_BGR2GRAY)
कैप्चर की गई छवि में चेहरे का पता लगाने के लिए dlib लाइब्रेरी के डिटेक्टर फंक्शन का उपयोग करें।
रेक्टर्स = डिटेक्टर (ग्रे, 1)
उस तस्वीर को ले लो जिस पर चेहरे का पता लगाया गया था, चेहरे की जगहें निर्धारित करें, और 68 बिंदुओं को न्यूमरी सरणी में परिवर्तित करें। व्यक्तिगत रूप से चेहरे के प्रत्येक क्षेत्र पर लूप करें।
for (i, rect) in enumerate (rects): शेप = प्रेडिक्टर (ग्रे, रेक्ट) शेप = face_utils.shape_to_np (शेप)
फिर, मूल छवि की एक प्रति लें और छवि पर चेहरे के भाग का नाम खींचने के लिए लूप के लिए इसका उपयोग करें। टेक्स्ट का रंग लाल होगा, आप RGB मान बदलकर इसे दूसरे रंग में बदल सकते हैं।
for (नाम, (i, j)) in_, 255), 2)
अब हम पहचाने गए चेहरे के हिस्सों पर लूप करेंगे और इन चेहरे के हिस्सों पर सर्कल बनाने के लिए OpenCV ड्रॉइंग फंक्शन का उपयोग करेंगे । ड्रॉइंग फ़ंक्शन के बारे में अधिक जानकारी के लिए आप इस OpenCV दस्तावेज़ का पालन कर सकते हैं
(x, y) आकार में: cv2.circle (क्लोन, (x, y), 1, (0, 0, 255), -1)
अब अगली पंक्तियों में, हम एक विशिष्ट चेहरे वाले भाग के निर्देशांक के बाउंडिंग बॉक्स की गणना करके प्रत्येक चेहरे के हिस्से को एक अलग छवि के रूप में निकालेंगे। निकाली गई छवि को 250 पिक्सेल तक आकार दिया जाएगा।
अब कोड की अंतिम पंक्तियों में, चेहरे के हिस्सों को उनके नाम और उस हिस्से की एक अलग छवि के साथ प्रदर्शित करें। चेहरे के क्षेत्र को बदलने के लिए ESC कुंजी का उपयोग करें।
cv2.imshow ("ROI", roi) cv2.imshow ("छवि", क्लोन) cv2.waitKey (0)
फेस पार्ट रिकॉगनाइजर का परीक्षण
परियोजना का परीक्षण करने के लिए, एक निर्देशिका बनाएं और नीचे दिए गए आदेशों का उपयोग करके इसे नेविगेट करें:
mkdir फेस-पार्ट-डिटेक्टर सीडी फेस-पार्ट-डिटेक्टर
अब इस लिंक से shape_predictor_68_face_landmarks.dat फ़ाइल डाउनलोड करें, और फिर इस लाइब्रेरी के अंदर आकार_predictor_68_face_landmarks.dat फ़ाइल को निकालें और उसके बाद नीचे दिए गए कोड को डिटेक्शन नामक एक नया नाम खोलें और पेस्ट करें।
अब नीचे दिए गए कमांड का उपयोग करके अजगर कोड लॉन्च करें:
python3 Det.py --shape-predictor shape_predictor_68_face_landmarks.dat
आप अपने कैमरे से एक लाइव दृश्य दिखाते हुए एक विंडो देखेंगे। फिर लाइव स्ट्रीम से एक फ्रेम का चयन करने के लिए 'एस' कुंजी दबाएं। आप अपने मुंह क्षेत्र पर लाल डॉट्स देखेंगे। अन्य चेहरे के हिस्सों को देखने के लिए ESC कुंजी का उपयोग करें।
पूरा अजगर कोड और प्रदर्शन वीडियो नीचे दिया गया है।