Pada artikel ini , kita akan belajar bagaimana cara mendeteksi fitur seperti mata, hidung dan mulut pada wajah dengan Python. Setelah posting ini, Anda akan dapat membuat efek dan filter yang mirip dengan apa yang Anda lihat di Snapchat dan Instagram.
Deteksi wajah ( juga disebut face detection ) adalah teknologi komputer berbasis kecerdasan buatan (AI) yang digunakan untuk menemukan dan mengidentifikasi wajah manusia dalam gambar digital. Teknologi deteksi wajah; Ini adalah teknologi yang banyak digunakan di bidang kesehatan, militer dan keamanan. Pengenalan wajah telah berkembang dari teknik penglihatan komputer dasar hingga kemajuan dalam pembelajaran mesin, hingga jaringan saraf tiruan yang semakin kompleks dan teknologi terkait.
Cara Mendeteksi Wajah Dengan Python
Wajah kita memiliki berbagai ciri yang dapat dikenali, seperti mata, mulut, hidung, bibir, dll. Saat kami menggunakan algoritme DLib untuk menentukan properti ini, kami benar-benar mendapatkan peta titik-titik yang mengelilingi setiap fitur. Jadi apakah DLib ini? DLib adalah pustaka pembelajaran mesin canggih yang digunakan untuk memecahkan masalah dunia nyata yang kompleks. Library ini dibuat menggunakan bahasa pemrograman C ++, juga berfungsi dalam bahasa C / C ++, Python, dan Java.
Peta ini terdiri dari 67 titik (juga disebut landmark) dan dapat menentukan fitur-fitur berikut:
- Poin Rahang: 0-16
- Poin Alis Kanan: 17-21
- Poin Alis Kiri: 22-26
- Poin Hidung: 27-35
- Titik Mata Kanan: 36-41
- Poin Mata Kiri: 42-47
- Poin Mulut: 48-60
- Poin Bibir: 61-67
Menginstal Modul yang Diperlukan
- opencv-python
- dlib
Untuk cara membuat deteksi wajah dengan Python, pertama-tama kita perlu memuat Modul ini dengan menulis berikut ini ke terminal:
pip instal opencv-python, dlib
Anda mungkin mendapatkan beberapa kesalahan saat menginstal Modul dlib di beberapa sistem operasi . Salah satu kesalahan ini adalah kesalahan CMake. Untuk menangani ini, kita perlu menginstal Modul CMake sebelum memuat Modul dlib .
pip instal cmake
Setelah memuat Modul yang diperlukan, kami dapat menyertakan Modul ini dalam proyek kami.
impor cv2 impor dlib
[su_box title=”Baca Juga” style=”noise” box_color=”#a3e2fd” title_color=”#000000″]
- 7 Situs Untuk Cara Belajar Bahasa Pemrograman Terbaik 2021
- Cara Membuat Anonymous Chat Telegram Bot yang Aman
- Cara Menggunakan Tor Browser Di Android, Masuk Ke Deep Web
[/su_box]
Cara Membuat Aplikasi Deteksi Wajah dengan Python
Kami mengunggah foto kami menggunakan Modul OpenCv.
img = cv2.imread ("photo.png") # Menunjukkan foto ke layar cv2.imshow (winname = "Wajah", mat = img) # Anda harus menekan tombol untuk menutup foto cv2.waitKey (penundaan = 0) # Menutup semua jendela. cv2.destroyAllWindows ()
Cukup sederhana, bukan? Kami mengunggah foto dan mencetaknya di layar menggunakan metode .imshow . Jika Anda menjalankan kode ini, Anda akan melihat foto bernama Face .
Sekarang kita akan melakukan deteksi wajah menggunakan fungsi get_frontal_face_detector () dari pustaka Dlib . Namun, fungsi ini hanya berfungsi pada foto abu-abu, jadi dengan menggunakan pustaka OpenCv kami mengubah foto menjadi abu-abu.
The get_frontal_face_detector () mengembalikan fungsi fungsi yang disebut “detektor” yang diperlukan untuk kita untuk menggunakan informasi wajah. Setiap wajah adalah objek yang berisi poin yang dapat ditemukan gambar.
impor cv2 impor dlib detektor = dlib.get_frontal_face_detector () img = cv2.imread ("photo.png") # Mengubah gambar menjadi skala abu-abu. abu-abu = cv2.cvtColor (src = img, kode = cv2.COLOR_BGR2GRAY) # Kami menggunakan fungsi detektor untuk mendeteksi wajah. wajah = detektor (abu-abu) untuk wajah di wajah: x1 = face.left () y1 = face.top () x2 = wajah.right () y2 = face.bottom () # Kami menggambar persegi panjang cv2. rectangle (img = img, pt1 = (x1, y1), pt2 = (x2, y2), color = (0,255,0), tebal = 4) #show gambar cv2.imshow (winname = "Wajah", mat = img) cv2.waitKey (penundaan = 0) cv2.destroyAllWindows ()
Kode di atas mengambil semua wajah pada gambar dan membuat persegi panjang di setiap wajah.
Pada langkah selanjutnya, kita akan menjelajahi beberapa fitur wajah, seperti yang telah kami sebutkan sebelumnya. Kami akan menggunakan modul DLib untuk ini lagi. Fungsi shape_predictor () yang ditawarkan oleh pustaka ini melakukan semua pekerjaan ajaib ini untuk kita. Namun, kami memerlukan model terlatih agar dapat berfungsi.
Ada banyak model di internet untuk ini, Anda dapat mengunduh model yang saya gunakan untuk proyek ini .
impor cv2 impor dlib detektor = dlib.get_frontal_face_detector () predictor = dlib.shape.predictor ("shape_predictor_68_face_landmarks.dat") img = cv2.imread ("photo.png") abu-abu = cv2.cvtColor (src = img, kode = cv2.COLOR_BGR2GRAY) wajah = detektor (abu-abu) untuk wajah di wajah: x1 = face.left () y1 = face.top () x2 = wajah.right () y2 = face.bottom () landmark = prediktor (gambar = abu-abu, box = wajah) x = landmark. bagian (27) .x y = landmark. bagian (27) .y cv2.circle (img = img, center = (x, y), radius = 5, color = (0,255,0), thick = -1) cv2.imshow (winname = "Wajah", mat = img) cv2.waitKey (penundaan = 0) cv2.destroyAllWindows ()
Kami melakukan peningkatan pada kode yang sama setiap kali, kali ini kami menggunakan fungsi prediktor secara berbeda . Yang menarik perhatian kami di sini adalah mengapa kami menggunakan angka 27?
Fungsi prediktor di sini akan mengembalikan objek yang berisi semua 68 poin yang sesuai dengan diagram wajah di awal posting. Perhatikan bahwa 27 titik tepat bertepatan di antara kedua mata. Jika semuanya bekerja dengan benar, Anda akan melihat titik hijau di antara mata di wajah.
Sekarang mari kita tunjukkan semua poin, bukan satu titik.
impor cv2 impor dlib detektor = dlib.get_frontal_face_detector () predictor = dlib.shape.predictor ("shape_predictor_68_face_landmarks.dat") img = cv2.imread ("photo.png") abu-abu = cv2.cvtColor (src = img, kode = cv2.COLOR_BGR2GRAY) wajah = detektor (abu-abu) untuk wajah di wajah: x1 = face.left () y1 = face.top () x2 = wajah.right () y2 = face.bottom () landmark = prediktor (gambar = abu-abu, box = wajah) untuk n dalam rentang (0,68): x = landmark. bagian (n) .x y = landmark. bagian (n) .y cv2.circle (img = img, center = (x, y), radius = 5, color = (0,255,0), thick = -1) cv2.imshow (winname = "Wajah", mat = img) cv2.waitKey (penundaan = 0) cv2.destroyAllWindows ()
Dan kami mendapatkan hasil seperti ini.
Tahap selanjutnya dan terakhir adalah bagian yang paling menarik! Kami akan menghubungkan webcam kami dan melakukan deteksi wajah secara real-time.
impor cv2 impor dlib detektor = dlib.get_frontal_face_detector () predictor = dlib.shape_predictor ("shape_predictor_68_face_landmarks.dat") cap = cv2.VideoCapture (0) sementara Benar:_, frame = cap.read()
gray = cv2.cvtColor(src=frame, code=cv2.COLOR_BGR2GRAY)
faces = detector(gray)
for face in faces:
x1 = face.left()
y1 = face.top()
x2 = face.right()
y2 = face.bottom()
landmarks = predictor(image=gray, box=face)
for n in range(0,68):
x = landmarks.part(n).x
y = landmarks.part(n).y
cv2.circle(img=frame, center=(x,y), radius=2, color=(0,255,0),thickness=-1)
cv2.imshow(winname="Face",mat=frame)
if cv2.waitKey(delay=1)== 27:
break
cap.release () cv2.destroyAllWindows ()
Dengan menggunakan kode di atas, Anda dapat mengaktifkan kamera komputer dan melakukan deteksi wajah secara real-time lewat Python. Hasilnya harus sebagai berikut:
[su_box title=”Baca Juga” style=”noise” box_color=”#a3e2fd” title_color=”#000000″]
- Apa Itu FPS? Dan Cara Meningkatkan FPS di Game
- Cara Mengganti Alamat IP di Android, iPhone dan PC
- Cara Menonton Film Di Telegram Gratis – Film Terbaik 2021
[/su_box]
Seperti yang bisa kita lihat, beginilah cara kerja deteksi wajah menggunakan modul Python. Library OpenCV dan DLib adalah library yang sangat kuat yang memfasilitasi kerja dengan pembelajaran mesin dan computer vision.
[su_note]Jangan Lupa like Facebook Caraqu jika ingin cepat mendapatkan pemberitahuan.[/su_note]