- భాగాలు అవసరం
- రాస్ప్బెర్రీ పైలో ఓపెన్సివిని ఇన్స్టాల్ చేస్తోంది
- Dlib ఉపయోగించి ముఖ భాగాలను ఎలా గుర్తించాలి
- ఫేషియల్ ల్యాండ్మార్క్ డిటెక్షన్ కోసం రాస్ప్బెర్రీ పై ప్రోగ్రామింగ్
- ఫేస్ పార్ట్ రికగ్నైజర్ను పరీక్షిస్తోంది
ముఖ మైలురాళ్లను గుర్తించడం అంటే కనుబొమ్మలు, కళ్ళు, ముక్కు, నోరు, దవడ వంటి ముఖం మీద ఉన్న వివిధ భాగాలను గుర్తించే ప్రక్రియ. ఫేషియల్ ల్యాండ్మార్క్ డిటెక్షన్ టెక్నిక్లను ఉపయోగించే అనేక అప్లికేషన్లు ఉన్నాయి.
ఇంతకుముందు మేము ఓపెన్సివిని ఉపయోగించి ఫేస్ రికగ్నిషన్ సిస్టమ్ను నిర్మిస్తాము, ఈ రోజు మనం ఫేస్ల్యాండ్మార్క్ డిటెక్షన్ కోసం రాస్ప్బెర్రీ పైతో అదే ఓపెన్సివిని ఉపయోగిస్తాము. ముఖం మీద ఉన్న ముఖ ముఖ నిర్మాణాల స్థానాన్ని గుర్తించడానికి డిలిబ్ లైబ్రరీ నుండి ముందే శిక్షణ పొందిన ఫేషియల్ ల్యాండ్మార్క్ డిటెక్టర్ మాడ్యూల్ ఉపయోగించబడుతుంది మరియు గుర్తించిన ముఖ భాగాలను దృశ్యమానం చేయడానికి పైథాన్ ఓపెన్సివి ఉపయోగించబడుతుంది.
భాగాలు అవసరం
హార్డ్వేర్ భాగాలు
- రాస్ప్బెర్రీ పై 3
- పై కెమెరా మాడ్యూల్
సాఫ్ట్వేర్ మరియు ఆన్లైన్ సేవలు
- ఓపెన్సివి
- Dlib
- పైథాన్ 3
ఈ రాస్ప్బెర్రీ పై 3 ఫేషియల్ ల్యాండ్మార్క్ డిటెక్షన్తో కొనసాగడానికి ముందు , మొదట, మేము ఈ ప్రాజెక్ట్లో ఓపెన్ సివి, ఇముటిల్స్, డిలిబ్, నంపి మరియు మరికొన్ని డిపెండెన్సీలను వ్యవస్థాపించాలి. ఓపెన్సివి డిజిటల్ ఇమేజ్ ప్రాసెసింగ్ కోసం ఇక్కడ ఉపయోగించబడుతుంది. డిజిటల్ ఇమేజ్ ప్రాసెసింగ్ యొక్క అత్యంత సాధారణ అనువర్తనాలు ఆబ్జెక్ట్ డిటెక్షన్, ఫేస్ రికగ్నిషన్ మరియు పీపుల్ కౌంటర్.
రాస్ప్బెర్రీ పైతో పై కెమెరాను ఎలా ఇంటర్ఫేస్ చేయాలో గురించి మరింత తెలుసుకోవడానికి, మా మునుపటి ట్యుటోరియల్స్ అనుసరించండి.
రాస్ప్బెర్రీ పైలో ఓపెన్సివిని ఇన్స్టాల్ చేస్తోంది
ఇక్కడ రాస్ప్బెర్రీ పై క్యూఆర్ స్కానర్ కోసం ఓపెన్సివి లైబ్రరీ ఉపయోగించబడుతుంది. OpenCV ని వ్యవస్థాపించడానికి, మొదట, రాస్ప్బెర్రీ పైని నవీకరించండి.
sudo apt-get update
మీ రాస్ప్బెర్రీ పైలో ఓపెన్సివిని ఇన్స్టాల్ చేయడానికి అవసరమైన డిపెండెన్సీలను ఇన్స్టాల్ చేయండి.
sudo apt-get install libhdf5-dev -y sudo apt-get install libhdf5-serial-dev –y sudo apt-get install libatlas-base-dev –y sudo apt-get install libjasper-dev -y sudo apt-get install libqtgui4 -y సుడో వర్ణనాత్మక-పొందుటకు ఇన్స్టాల్ libqt4 పరీక్ష-y
ఆ తరువాత, కింది ఆదేశాన్ని ఉపయోగించి రాస్ప్బెర్రీ పై ఓపెన్సివిని ఇన్స్టాల్ చేయండి.
పైప్ 3 ఇన్స్టాల్ ఓపెన్సివి-కంట్రిబ్యూట్-పైథాన్ == 4.1.0.25
మేము ఇంతకుముందు రాస్ప్బెర్రీ పైతో ఓపెన్సివిని ఉపయోగించాము మరియు దానిపై చాలా ట్యుటోరియల్లను సృష్టించాము.
- CMake ఉపయోగించి రాస్ప్బెర్రీ పై ఓపెన్సివిని ఇన్స్టాల్ చేస్తోంది
- రాస్ప్బెర్రీ పై మరియు ఓపెన్ సివిలతో రియల్ టైమ్ ఫేస్ రికగ్నిషన్
- రాస్ప్బెర్రీ పై మరియు ఓపెన్ సివి ఉపయోగించి లైసెన్స్ ప్లేట్ గుర్తింపు
- ఓపెన్సివి మరియు రాస్ప్బెర్రీ పై ఉపయోగించి క్రౌడ్ సైజు అంచనా
మేము అనుభవశూన్యుడు స్థాయి నుండి ప్రారంభమయ్యే ఓపెన్సివి ట్యుటోరియల్ల శ్రేణిని కూడా సృష్టించాము.
ఇముటిల్స్ను ఇన్స్టాల్ చేస్తోంది : అనువాదం, భ్రమణం, పున izing పరిమాణం, అస్థిపంజరం మరియు ఓపెన్సివితో మాట్ప్లోట్లిబ్ చిత్రాలను సులభంగా ప్రదర్శించడం వంటి కొన్ని అవసరమైన ఇమేజ్ ప్రాసెసింగ్ విధులను అమలు చేయడానికి ఇముటిల్స్ ఉపయోగించబడతాయి. కాబట్టి దిగువ ఆదేశాన్ని ఉపయోగించి imutils ని వ్యవస్థాపించండి:
పైప్ 3 ఇన్స్టాల్ ఇమ్యుటిల్స్
Dlib ని ఇన్స్టాల్ చేస్తోంది: వాస్తవ ప్రపంచ సమస్యలకు మెషిన్ లెర్నింగ్ అల్గోరిథంలు మరియు సాధనాలను కలిగి ఉన్న ఆధునిక టూల్కిట్ dlib . Dlib ని వ్యవస్థాపించడానికి క్రింది ఆదేశాన్ని ఉపయోగించండి.
పైప్ 3 ఇన్స్టాల్ dlib
NumPy ని ఇన్స్టాల్ చేస్తోంది: శాస్త్రీయ కంప్యూటింగ్ కోసం NumPy అనేది కోర్ లైబ్రరీ, ఇది శక్తివంతమైన n- డైమెన్షనల్ అర్రే ఆబ్జెక్ట్ను కలిగి ఉంటుంది, C, C ++ మొదలైన వాటిని సమగ్రపరచడానికి సాధనాలను అందిస్తుంది.
పిప్ 3 ఇన్స్టాల్ నంపీ
Dlib ఉపయోగించి ముఖ భాగాలను ఎలా గుర్తించాలి
ముఖం మీద ముఖ నిర్మాణాలకు మ్యాప్ చేసే 68 (x, y) కోఆర్డినేట్ల స్థానాన్ని గుర్తించడానికి మేము dlib లైబ్రరీ యొక్క ముందే శిక్షణ పొందిన ఫేషియల్ ల్యాండ్మార్క్ డిటెక్టర్ను ఉపయోగించబోతున్నాము. dlib ఫేషియల్ ల్యాండ్మార్క్ ప్రిడిక్టర్ iBUG 300-W డేటాసెట్లో శిక్షణ పొందుతుంది. 68 కోఆర్డినేట్ల సూచికలను కలిగి ఉన్న చిత్రం క్రింద ఇవ్వబడింది:
ఫేషియల్ ల్యాండ్మార్క్ డిటెక్షన్ కోసం రాస్ప్బెర్రీ పై ప్రోగ్రామింగ్
ఫేస్ పార్ట్స్ రికగ్నిషన్ కోసం పూర్తి పైథాన్ కోడ్ dlib యొక్క ముందే శిక్షణ పొందిన ఫేషియల్ ల్యాండ్మార్క్ డిటెక్టర్తో పేజీ చివరిలో ఇవ్వబడుతుంది. మంచి అవగాహన కోసం కోడ్ యొక్క కొన్ని ముఖ్యమైన భాగాలను ఇక్కడ వివరిస్తున్నాము.
కాబట్టి, ఎప్పటిలాగే, అవసరమైన అన్ని లైబ్రరీలను చేర్చడం ద్వారా కోడ్ను ప్రారంభించండి.
imutils దిగుమతి face_utils దిగుమతి సంఖ్యను np దిగుమతి ఆర్గ్పార్స్ దిగుమతి imutils picamera.array నుండి dlib దిగుమతి cv2 ను దిగుమతి చేస్తుంది.
అప్పుడు కెమెరా ఆబ్జెక్ట్ను ప్రారంభించండి మరియు రిజల్యూషన్ను (640, 480) మరియు ఫ్రేమ్ రేట్ను 30 ఎఫ్పిఎస్ల వద్ద సెట్ చేయండి
camera = PiCamera () camera.resolution = (640, 480) camera.framerate = 30
ఇప్పుడు తదుపరి పంక్తులలో, ముఖ మైలురాయి ప్రిడిక్టర్కు మార్గాన్ని అందించడానికి ఆర్గ్యుమెంట్ పార్సర్ను ఉపయోగించండి.
ap = argparse.ArgumentParser () ap.add_argument ("- p", "--షాప్-ప్రిడిక్టర్", అవసరం = నిజం, సహాయం = "ముఖ మైలురాయి ప్రిడిక్టర్ మార్గం") args = vars (ap.parse_args ())
తదుపరి పంక్తులలో, HOG- ఆధారిత డిలిబ్ యొక్క ముందే శిక్షణ పొందిన ఫేస్ డిటెక్టర్ను ప్రారంభించండి మరియు ముందుగా శిక్షణ పొందిన ముఖ మైలురాయి ప్రిడిక్టర్ను లోడ్ చేయండి.
డిటెక్టర్ = dlib.get_frontal_face_detector () ప్రిడిక్టర్ = dlib.shape_predictor (అర్గ్స్)
రాస్ప్బెర్రీ పై కెమెరా నుండి ఫ్రేమ్లను సంగ్రహించడం ప్రారంభించడానికి క్యాప్చర్_కాంటినస్ ఫంక్షన్ను ఉపయోగించండి.
camera.capture_continuous (rawCapture, format = "bgr", use_video_port = true): image = frame.array cv2.imshow ("Frame", image) key = cv2.nightKey (1) & 0xFF rawCapture.truncate (0)
నిర్దిష్ట ఫ్రేమ్ను సంగ్రహించడానికి కీబోర్డ్ కీ 'S' ని ఉపయోగించండి. అప్పుడు సంగ్రహించిన చిత్రాన్ని పున ize పరిమాణం చేసి గ్రేస్కేల్గా మార్చండి.
if key == ord ("s"): image = imutils.resize (చిత్రం, వెడల్పు = 400) బూడిద = cv2.cvtColor (చిత్రం, cv2.COLOR_BGR2GRAY)
సంగ్రహించిన చిత్రంలోని ముఖాలను గుర్తించడానికి dlib లైబ్రరీ యొక్క డిటెక్టర్ ఫంక్షన్ను ఉపయోగించండి.
rects = డిటెక్టర్ (బూడిద, 1)
ముఖాన్ని గుర్తించే చిత్రాన్ని తీయండి, ముఖ మైలురాళ్లను నిర్ణయించండి మరియు 68 పాయింట్లను నమ్పై శ్రేణిగా మార్చండి. ప్రతి ముఖ ప్రాంతాలను ఒక్కొక్కటిగా లూప్ చేయండి.
ఎన్యూమరేట్ (రెక్ట్స్) లో (i, రెక్ట్) కోసం: ఆకారం = ict హాజనిత (బూడిద, దీర్ఘ) ఆకారం = face_utils.shape_to_np (ఆకారం)
అప్పుడు, అసలు చిత్రం యొక్క కాపీని తీసుకొని, చిత్రంపై ముఖ భాగం యొక్క పేరును గీయడానికి లూప్ కోసం ఉపయోగించండి. టెక్స్ట్ రంగు ఎరుపుగా ఉంటుంది, మీరు RGB విలువలను మార్చడం ద్వారా దాన్ని మరొక రంగుకు మార్చవచ్చు.
face_utils లో (పేరు, (i, j))., 255), 2)
ఇప్పుడు మేము గుర్తించిన ముఖ భాగాలపై లూప్ చేస్తాము మరియు ఈ ముఖ భాగాలపై వృత్తాలు గీయడానికి ఓపెన్సివి డ్రాయింగ్ ఫంక్షన్ను ఉపయోగిస్తాము. డ్రాయింగ్ ఫంక్షన్ల గురించి మరింత సమాచారం కోసం మీరు ఈ ఓపెన్సివి పత్రాన్ని అనుసరించవచ్చు
(x, y) ఆకారంలో: cv2.circle (క్లోన్, (x, y), 1, (0, 0, 255), -1)
ఇప్పుడు తరువాతి పంక్తులలో, ఒక నిర్దిష్ట ముఖ భాగం యొక్క కోఆర్డినేట్ల యొక్క సరిహద్దు పెట్టెను గణించడం ద్వారా ప్రతి ముఖ భాగాన్ని ప్రత్యేక చిత్రంగా తీస్తాము. సేకరించిన చిత్రం 250 పిక్సెల్లకు పరిమాణం మార్చబడుతుంది.
(x, y, w, h) = cv2.boundingRect (np.array (])) roi = image roi = imutils.resize (roi, width = 250, inter = cv2.INTER_CUBIC)
ఇప్పుడు కోడ్ యొక్క చివరి పంక్తులలో, ముఖ భాగాలను వాటి పేర్లతో మరియు ఆ భాగం యొక్క ప్రత్యేక చిత్రంతో ప్రదర్శించండి. ముఖ ప్రాంతాన్ని మార్చడానికి ESC కీని ఉపయోగించండి.
cv2.imshow ("ROI", roi) cv2.imshow ("చిత్రం", క్లోన్) cv2.nightKey (0)
ఫేస్ పార్ట్ రికగ్నైజర్ను పరీక్షిస్తోంది
ప్రాజెక్ట్ను పరీక్షించడానికి, డైరెక్టరీని సృష్టించండి మరియు కింది ఆదేశాలను ఉపయోగించి దానికి నావిగేట్ చేయండి:
mkdir ఫేస్-పార్ట్-డిటెక్టర్ సిడి ఫేస్-పార్ట్-డిటెక్టర్
ఇప్పుడు ఈ లింక్ నుండి shape_predictor_68_face_landmarks.dat ఫైల్ డౌన్లోడ్, ఆపై గ్రహించి కాపీ shape_predictor_68_face_landmarks.dat ఈ లైబ్రరీ లోపల ఫైలు, ఆపై ఒక కొత్త ఫైల్ పేరు తెరవడానికి detect.py మరియు క్రింద ఇచ్చిన కోడ్ అతికించండి.
ఇప్పుడు కింది ఆదేశాన్ని ఉపయోగించి పైథాన్ కోడ్ను ప్రారంభించండి:
python3 det.py --షాప్-ప్రిడిక్టర్ ఆకారం_ప్రెడిక్టర్_68_ఫేస్_ల్యాండ్మార్క్స్.డాట్
మీ కెమెరా నుండి ప్రత్యక్ష వీక్షణను చూపించే విండో మీకు కనిపిస్తుంది. ప్రత్యక్ష ప్రసారం నుండి ఫ్రేమ్ను ఎంచుకోవడానికి 'S' కీని నొక్కండి. మీరు మీ నోటి ప్రాంతంలో ఎరుపు చుక్కలను చూస్తారు. ఇతర ముఖ భాగాలను చూడటానికి ESC కీని ఉపయోగించండి.
పూర్తి పైథాన్ కోడ్ మరియు ప్రదర్శన వీడియో క్రింద ఇవ్వబడ్డాయి.