Face Recognition (part 1)

Gifa Delyani Nursyafitri
6 min readJan 2, 2020

--

Source : https://www.centerklik.com/teknologi-face-recognition/

Holaaa! Balik lagi nih bareng aku. Di kesempatan ini, aku akan membahas tentang Face Recognition. Ada yang udah pernah denger sebelumnya? Okay, check it out!

Apa itu Face Recognition?

Face recognition adalah sebuah teknologi pengenal wajah yang saat ini tengah dalam masa pengembangan. Teknologi ini memanfaatkan kecerdasan aritificial intelligence alias AI untuk mengenali wajah — wajah orang yang sudah terdaftar di database-nya. Singkatnya, dengan fitur face recognition ini kamera bisa mengenali siapa kalian dari data yang mereka simpan baik dalam cloud server maupun penyimpanan lainnya.

Bagaimana cara kerja Face Recognition?

Prinsip kerja face recognition sebenarnya sangat sederhana dan mudah dimengerti. Kamera dan kecerdasan buatan akan melakukan scan wajah terdahap orang secara mendetail. Scan ini akan menyimpan semua data mulai dari bentuk mata, rahang, bibir, mulut, hidung, ukuran wajah, dan lain — lain yang ada di dalam wajah orang tersebut. Kemudian, datanya disimpan di dalam server khusus milik perusahaan atau pemilik face recognition ini.

Nantinya, setiap kali wajah orang yang datanya sudah di scan melewati atau melakukan lagi scan di kamera dengan data base yang sama, data mereka akan muncul dan diverifikasi. Bisa dibilang, cara kerjanya mirip finger print namun dalam bentuk wajah. Uniknya hasil scan wajah tidak akan terpengaruhi oleh factor pencahayaan. Sehingga kamera melakukan scan dengan cara khusus agar bisa memperoleh data akurat tanpa membutuhkan pencahayaan yang baik.

Nah, setelah kita cukup mengetahui tentang Face Recognition, selanjutnya kita akan mencobanya. Udah penasaran kan? Yuk tunggu apa lagi!

Langkah awalnya adalah meng-install opencv-python. Kemudian import modul yang diperlukan dengan syntax di bawah ini.

import cv2, time

Selanjutnya kita membuat perintah untuk menangkap object berdasarkan kamera komputer kita. Hal itu dapat dilakukan dengan syntax berikut.

video = cv2.VideoCapture(0)

Setelah itu perintahkan untuk menutup kamera komputer kita dengan syntax berikut,

video.release()

Sehingga keseluruhan syntax dapat dilihat pada gambar di bawah ini.

Simpan koding tersebut dengan nama, misalnya tangkap.py di dalam sebuah folder misal c:/capture/tangkap.py. Kemudian buka command promp dan jalankan koding tersebut dengan perintah berikut:

c:/capture> python tangkap.py

Langkah selanjutnya adalah membuat object frame untuk menangkap object dari kamera dengan menggunakan koding pada gambar di bawah ini.

import cv2, timevideo = cv2.VideoCapture(0)check, frame = video.read()
print(check)
print(frame)video.release()

Kemudian klik “Save” untuk menyimpan koding dengan nama yang sama dengan sebelumnya. Hal ini dapat dilihat pada gambar di halaman di bawah ini.

Buka kembali buka command promp dan jalankan koding tersebut dengan perintah berikut:

c:/capture> python tangkap.py

Gambar di bawah ini merupakan hasil yang didapatkan, dimana ini merupakan matriks angka-angka untuk sekali tangkap gambar.

Karena pada gambar di atas, hasil tangkapan layar telah berupa nilai-nilai pixel dalam matriks, dimana nilainya bukan 0, maka proses dapat dilanjutkan.

Jika hasil tangkapan layar masih berupa angka 0, maka dapat menggunakan koding berikut.

import cv2, time
camera = 0
video = cv2.VideoCapture(camera, cv2.CAP_DSHOW)
check, frame = video.read()
print(check)
print(frame)
video.release()

Langkah selanjutnya, yaitu menambahkan koding untuk menangkap satu kali frame gambar serta perintah untuk keluar dari tangkapan gambar tersebut.

import cv2, timevideo = cv2.VideoCapture(0)check, frame = video.read()
print(check)
print(frame)
cv2.imshow(“tangkap”, frame)
cv2.waitKey(0)
video.release()

Sehingga kodingnya tampak seperti gambar di bawah ini. Kemudian klik “Save” untuk menyimpan koding dengan nama yang sama.

Perintahkan kembali di command promp untuk menjalankan koding tersebut dengan perintah berikut:

c:/capture> python tangkap.py

Kemudian akan didapatkan hasil seperti gambar berikut ini. Dimana kita dapat melihat gambar hasil tangkapan serta nilai piksel yang berada di dalam matriks.

Langkah selanjutnya adalah mengkonversi gambar ke warna abu-abu atau gray dengan menggunakan koding berikut.

import cv2, timecamera = 0
video = cv2.VideoCapture(0)
check, frame = video.read()print(check)
print(frame)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)cv2.imshow(“tangkap”, gray)
cv2.waitKey(0)
video.release()

Kemudian klik “Save” untuk menyimpan dengan nama yang sama.

Perintahkan kembali di command promp untuk menjalankan koding tersebut dengan perintah berikut:

c:/capture> python tangkap.py

Sehingga didapatkan hasil gambar yang berwarna abu-abu dan juga nilai piksel yang berada di dalam matriks.

Langkah selanjutnya adalah kita akan mencoba tangkapan layar yang terus menerus. Kita dapat menggunakan koding berikut.

import cv2, timecamera = 0
video = cv2.VideoCapture(0)
a = 0while True:
a = a + 1
check, frame = video.read()print(check)
print(frame)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)cv2.imshow(“tangkap”, gray)
#cv2.waitKey(0)
key = cv2.waitKey(1)if key == ord(‘q’):
break
print(a)
video.release()
cv2.destroyAllWindows()

Kemudian klik “Save” untuk menyimpan di nama yang sama. Dan jalankan perintah yang sama pada command promp.

c:/capture> python tangkap.py

Sehingga didapatkan hasil seperti gambar di bawah ini. Gambar akan terus menerus ditangkap hingga kita menekan huruf q, atau bisa juga dengan menggunakan Control+C.

Hasil di atas hanya mampu menampilkan gambar secara keseluruhan dan belum mengarah secara tepat pada wajah, sehingga kita memerlukan suatu algoritma untuk mendeteksi wajah saja dari keseluruhan gambar.

Langkahnya adalah kita harus mendapatkan koding untuk pengklasifikasian wajah dari OpenCV dengan masuk ke link berikut ini:

https://github.com/opencv/opencv/tree/master/data/haarcascades

Selanjutnya simpan file “haarcascade_frontalface_default.xml” di folder yang telah kita buat sebelumnya “c:/capture/”.

Setelah itu, tambahkan koding ini:

import cv2faceDetect = cv2.CascadeClassifier(‘haarcascade_frontalface_default.xml’)

dan koding ini:

faces=faceDetect.detectMultiScale(gray,1.3,5);
for (x,y,w,h) is faces:
cv2.rectangle(frame,(x,y),(x+w,y+h),(0,0,255),2)
cv2.imshow(“wajah”,frame)

Sehingga keseluruhan koding dapat dilihat pada gambar berikut.

Simpan koding tersebut dengan nama, misalnya tangkapwajah.py di dalam folder yang sama dengan sebelumnya yaitu c:/capture/. Sehingga saat ini telah ada 3 file, yaitu “tangkap.py”, “tangkapwajah.py”, dan “haarcascade_frontalface_default.xml”.

Kemudian buka command promp dan jalankan koding tersebut dengan perintah berikut:

c:/capture> python tangkapwajah.py

Sehingga akan didapatkan hasil seperti gambar di bawah ini. Dimana komputer telah berhasil menangkap gambar tepat pada wajah kita.

Selanjutnya untuk mengidentifikasi nama pemilik wajah, kita dapat menambahkan koding berikut ini:

id = input(‘masukkan id user ‘)#masukkan dalam folder DataSetcv2.imwrite(“DataSet/User.”+str(id)+”.”+str(a)+”.jpg”,gray[y:y+h,x:x+w])

Jika python yang digunakan adalah python 2.1 ke bawah maka dapat menggunakan koding ini:

id = raw_input(‘masukkan id user ‘)

#masukkan dalam folder DataSet

cv2.imwrite(“DataSet/User.”+str(id)+”.”+str(a)+”.jpg”,gray[y:y+h,x:x+w])

Namun sebelumnya kita harus menyiapkan folder baru terlebih dahulu di dalam folder c:/capture/, misal diberi nama DataSet. Kemudian baru masukkan koding di atas ke keseluruhan koding, sehingga hasilnya menjadi seperti pada gambar berikut ini:

Kemudian buka command promp dan jalankan koding tersebut dengan perintah berikut:

c:/capture> python tangkapwajah.py

maka akan muncul pertanyaan, “masukkan id user”, ketiklah dengan angka “1”, kemudian akan muncul hasil seperti gambar sebelumnya.

Untuk melihat hasil tangkapan, maka kita dapat melihatnya pada folder c:/capture/DataSet.

Pada gambar di atas, dapat kita ketahui bahwa ada banyak sekali gambar yang berhasil ditangkap. Gambar akan berhenti ditangkap jika kita menekan huruf ‘q’ atau dengan menekan Ctrl+C.

Selanjutnya kita akan membatasi gambar yang ditangkap menjadi 25 gambar. Hal tersebut dapat dilakukan dengan mengganti koding ini

if key == ord(‘q’):
break

dengan koding berikut:

if (a>24):
break

Sehingga keseluruhan koding menjadi:

import cv2, timevideo = cv2.VideoCapture(0)a = 0faceDetect = cv2.CascadeClassifier(‘haarcascade_frontalface_default.xml’)id = input(‘masukkan id user ‘)while True:a = a + 1check, frame = video.read()print(check)print(frame)gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)faces=faceDetect.detectMultiScale(gray,1.3,5);for (x,y,w,h) in faces:cv2.imwrite(“DataSet/User.”+str(id)+”.”+str(a)+”.jpg”,gray[y:y+h,x:x+w])cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)cv2.imshow(“wajah”,frame)#key = cv2.waitKey(1)if (a>24):breakprint(a)video.release()cv2.destroyAllWindows()

Kemudian jalankan lagi perintah yang sama

c:/capture> python tangkapwajah.py

Sehingga kita akan mendapatkan hasil tangkapan gambar hanya sebanyak 25 gambar

Yippii! Sampai tahapan ini, kita telah berhasil menangkap wajah dan membangkitkan data wajah untuk proses selanjutnya.

Referensi:

  1. “Capture Webcam with Python (opencv): Step by step”, Dr. Vytautas Bielinskas
  2. https://medium.com/@986110101/pengenalan-wajah-1-6dc7d788fd07
  3. https://medium.com/@986110101/pengenalan-wajah-2-5152fa2ee5da
  4. https://www.centerklik.com/teknologi-face-recognition/

--

--

Gifa Delyani Nursyafitri
Gifa Delyani Nursyafitri

Written by Gifa Delyani Nursyafitri

Ku abadikan disini, karena aku paham betul bahwa ingatan manusia terbatas.

No responses yet