- Kinakailangan ang Mga Bahagi
- Pag-install ng OpenCV sa Raspberry Pi
- Paano Makikita ang Mga Bahagi ng Mukha gamit ang dlib
- Pagprograma ng Raspberry Pi para sa Pagtuklas ng Mukha Landmark
- Pagsubok sa Recognizer ng Bahagi ng Mukha
Ang pagtuklas ng mga landmark sa mukha ay ang proseso ng pagtuklas ng iba`t ibang bahagi sa mukha tulad ng Eyebrows, Eyes, Nose, Mouth, at Jaw. Maraming mga application na gumagamit ng mga diskarte sa pagtuklas ng Mukha Landmark.
Dati nagtatayo kami ng isang sistema ng pagkilala sa Mukha gamit ang OpenCV, ngayon gagamitin namin ang parehong OpenCV kasama ang Raspberry Pi para sa pagtuklas ng landmark ng mukha. Ang isang paunang sanay na module ng landmark detector para sa mukha mula sa library ng dlib ay gagamitin upang makita ang lokasyon ng mga pangunahing istruktura ng mukha sa mukha at ang python OpenCV ay gagamitin upang mailarawan ang mga natukoy na bahagi ng mukha.
Kinakailangan ang Mga Bahagi
Mga Bahagi ng Hardware
- Raspberry Pi 3
- Pi Module ng Camera
Software at Mga Serbisyong Online
- OpenCV
- Dlib
- Python3
Bago magpatuloy sa Raspberry Pi 3 Facial Landmark Detection na ito , una, kailangan naming i-install ang OpenCV, mga imutil, dlib, Numpy, at ilang iba pang mga dependency sa proyektong ito. Ginagamit ang OpenCV dito para sa pagproseso ng digital na imahe. Ang pinakakaraniwang mga application ng Digital Image Processing ay ang pagtuklas ng object, Pagkilala sa Mukha, at counter ng mga tao.
Upang matuto nang higit pa tungkol sa kung paano i-interface ang Pi camera sa Raspberry Pi, sundin ang aming mga nakaraang tutorial.
Pag-install ng OpenCV sa Raspberry Pi
Dito gagamitin ang library ng OpenCV para sa scanner ng Raspberry Pi QR. Upang mai-install ang OpenCV, una, i-update ang Raspberry Pi.
sudo apt-get update
Pagkatapos i-install ang kinakailangang mga dependency para sa pag-install ng OpenCV sa iyong Raspberry Pi.
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 sudo apt-get install libqt4-test –y
Pagkatapos nito, i-install ang OpenCV sa Raspberry Pi gamit ang command sa ibaba.
pip3 i-install ang opencv-contrib-python == 4.1.0.25
Ginamit namin dati ang OpenCV kasama ang Raspberry pi at lumikha ng maraming mga tutorial dito.
- Pag-install ng OpenCV sa Raspberry Pi gamit ang CMake
- Pagkilala sa Real-Time na Mukha kasama ang Raspberry Pi at OpenCV
- Pagkilala sa Plate ng Lisensya gamit ang Raspberry Pi at OpenCV
- Pagtatantya ng Laki ng Crowd Gamit ang OpenCV at Raspberry Pi
Lumikha din kami ng isang serye ng mga tutorial ng OpenCV na nagsisimula sa antas ng nagsisimula.
Pag-install ng mga imutil : ang mga imutil ay ginagamit upang maisagawa ang ilang mga kinakailangang pag-andar ng pagproseso ng imahe tulad ng pagsasalin, pag-ikot, pagbabago ng laki, pagbubuo ng balangkas, at pagpapakita ng mga imahe ng Matplotlib na mas madali sa OpenCV. Kaya i-install ang mga imutil gamit ang utos sa ibaba:
pip3 i-install ang mga imutil
Ang pag-install ng dlib: dlib ay ang modernong toolkit na naglalaman ng mga algorithm ng Pag-aaral ng Machine at mga tool para sa mga problema sa totoong mundo. Gamitin ang utos sa ibaba upang mai-install ang dlib.
pip3 i-install ang dlib
Pag-install ng NumPy : Ang NumPy ay ang pangunahing aklatan para sa pang-agham na pag-compute na naglalaman ng isang malakas na n-dimensional na object ng array, nagbibigay ng mga tool para sa pagsasama ng C, C ++, atbp.
Pip3 i-install ang numpy
Paano Makikita ang Mga Bahagi ng Mukha gamit ang dlib
Gagamitin namin ang pre-bihasang facial landmark detector ng dlib library upang makita ang lokasyon ng 68 (x, y) -coordinates na mapa sa mga istruktura ng mukha sa mukha. dlib pangmukha landmark tagahula ay sinanay sa iBUG 300-W dataset. Ang isang imahe na naglalaman ng mga index ng 68 na coordinate ay ibinibigay sa ibaba:
Pagprograma ng Raspberry Pi para sa Pagtuklas ng Mukha Landmark
Kumpletuhin ang code ng python para sa Pagkilala sa Mga Bahagi sa Mukha na may pre-train na facial landmark detector ng dlib na ibinigay sa dulo ng pahina. Narito ipinapaliwanag namin ang ilang mahahalagang bahagi ng code para sa mas mahusay na pag-unawa.
Kaya, tulad ng dati, simulan ang code sa pamamagitan ng pagsasama ng lahat ng kinakailangang mga aklatan.
mula sa imutils import face_utils import numpy bilang np import argparse import imutils import dlib import cv2 mula sa picamera.array import PiRGBArray mula sa picamera import PiCamera
Pagkatapos ay simulan ang object ng camera at itakda ang resolusyon sa (640, 480) at ang frame rate sa 30 fps
camera = PiCamera () camera.resolution = (640, 480) camera.framerate = 30
Ngayon sa mga susunod na linya, gamitin ang argument parser upang maibigay ang landas patungo sa prediktor ng landmark sa mukha.
ap = argparse.ArgumentParser () ap.add_argument ("- p", "--shape-prediktor", kinakailangan = True, help = "landmark ng prediktor ng landmark ng mukha") args = vars (ap.parse_args ())
Sa mga susunod na linya, pasimulan ang HOG-based na detektor ng mukha ng dlib at i-load ang pre-train na tagahula ng palatandaan ng mukha.
detector = dlib.get_frontal_face_detector () tagahula = dlib.shape_predictor (args)
Pagkatapos ay gamitin ang function na capture_continuous upang simulang makuha ang mga frame mula sa Raspberry Pi camera.
para sa frame sa camera.capture_continuous (rawCapture, format = "bgr", use_video_port = True): image = frame.array cv2.imshow ("Frame", imahe) key = cv2.waitKey (1) & 0xFF rawCapture.truncate (0)
Gamitin ang key ng keyboard na 'S' upang makuha ang isang partikular na frame. Pagkatapos baguhin ang laki ng nakunan ng imahe at i-convert ito sa grayscale.
kung key == ord ("s"): imahe = imutils.resize (imahe, lapad = 400) grey = cv2.cvtColor (imahe, cv2.COLOR_BGR2GRAY)
Gamitin ang pagpapaandar ng detektor ng library ng dlib upang makita ang mga mukha sa nakunan ng imahe.
rects = detector (kulay abo, 1)
Kuhanin ang larawan kung saan gumanap ang pagtuklas ng mukha, tukuyin ang mga landmark sa mukha, at i-convert ang 68 na puntos sa isang NumPy array. Mag-loop sa bawat isa sa mga rehiyon ng mukha nang paisa-isa.
para sa (i, patama) sa pag-enumerate (rects): hugis = tagahula (kulay abong, pataas) hugis = face_utils.shape_to_np (hugis)
Pagkatapos, kumuha ng isang kopya ng orihinal na imahe at gamitin ito para sa loop upang iguhit ang pangalan ng bahagi ng mukha sa imahe. Ang kulay ng teksto ay magiging pula, maaari mo itong palitan sa ibang kulay sa pamamagitan ng pagbabago ng mga halagang RGB.
para sa (pangalan, (i, j)) sa face_utils.FACIAL_LANDMARKS_IDXS.items (): clone = image.copy () cv2.putText (clone, name, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)
Ngayon ay ilalagay namin ang loop sa mga napansin na bahagi ng mukha at gagamitin ang paggana ng OpenCV na pagguhit upang gumuhit ng mga bilog sa mga bahagi ng mukha na ito. Maaari mong sundin ang OpenCV Document na ito para sa karagdagang impormasyon tungkol sa mga paggana ng pagguhit
para sa (x, y) sa hugis: cv2.circle (clone, (x, y), 1, (0, 0, 255), -1)
Ngayon sa mga susunod na linya, aalisin namin ang bawat bahagi ng mukha bilang isang hiwalay na imahe sa pamamagitan ng pag-compute ng hangganan ng kahon ng mga coordinate ng isang tukoy na bahagi ng mukha. Ang na-extract na imahe ay baguhin ang laki sa 250 pixel.
(x, y, w, h) = cv2.boundingRect (np.array (])) roi = image roi = imutils.resize (roi, width = 250, inter = cv2.INTER_CUBIC)
Ngayon sa mga huling linya ng code, ipakita ang mga bahagi ng mukha sa kanilang mga pangalan at isang hiwalay na imahe ng bahaging iyon. Gamitin ang ESC key upang baguhin ang rehiyon ng mukha.
cv2.imshow ("ROI", roi) cv2.imshow ("Image", clone) cv2.waitKey (0)
Pagsubok sa Recognizer ng Bahagi ng Mukha
Upang subukan ang proyekto, lumikha ng isang direktoryo at mag-navigate dito gamit ang mga sumusunod na utos:
mkdir face-part-detector cd face-part-detector
Ngayon i-download ang form_predictor_68_face_landmarks.dat file mula sa link na ito, at pagkatapos ay i-extract at kopyahin ang file na form_predictor_68_face_landmarks.dat sa loob ng library na ito, at pagkatapos ay buksan ang isang bagong file na pinangalanang detect.py at i-paste ang code na ibinigay sa ibaba.
Ngayon ilunsad ang code ng sawa gamit ang utos sa ibaba:
python3 detect.py --shape-prediktor hugis_predictor_68_face_landmarks.dat
Makakakita ka ng isang window na nagpapakita ng isang live na pagtingin mula sa iyong camera. Pagkatapos ay pindutin ang 'S' key upang pumili ng isang frame mula sa live stream. Makakakita ka ng mga pulang tuldok sa iyong lugar ng bibig. Gamitin ang ESC key upang makita ang iba pang mga bahagi ng mukha.
Ang kumpletong python code at demonstration video ay ibinibigay sa ibaba.