Face Recognition bagian 2

Dhea Laksmita Arsya Primananda
4 min readJan 10, 2020

--

Assalamualaikum wr.wb.

Materi kali ini kita akan mencoba mengenali gambar dalam folder dataset secara terus menerus dalam arti melatih system untuk mengenali dengan tepat gambar wajah tersebut.

Part 3

  1. Membuat sebuah folder dengan nama “training” didalam folder “c:/capture/>”. Simpanlah koding dibawah ini dengan nama “training.py”.
import cv2, os
import numpy as np
from PIL import Image
recognizer = cv2.face.LBPHFaceRecognizer_create()
detector = cv2.CascadeClassifier(“haarcascade_frontalface_default.xml”);
def getImagesWithLabels(path):
imagePaths=[os.path.join(path,f) for f in os.listdir(path)]
faceSamples=[]
Ids=[]
for imagePath in imagePaths:
pilImage=Image.open(imagePath).convert(‘L’)
imageNp=np.array(pilImage,’uint8')
Id=int(os.path.split(imagePath)[-1].split(“.”)[1])
faces=detector.detectMultiScale(imageNp)
for (x,y,w,h) in faces:
faceSamples.append(imageNp[y:y+h,x:x+w])
Ids.append(Id)
return faceSamples, Ids
faces, Ids = getImagesWithLabels(‘DataSet’)
recognizer.train(faces, np.array(Ids))
recognizer.save(‘training/training.xml’)

2. Kemudian buka command prompt, ketikkan berikut ini.

c:/capture/>pip install opencv-contrib-python.

3. Selanjutnya jalankan perintah koding diatas.

c:/capture/> python training.py

jika tidak ada permasalahan maka hasil proses training dapat dilihat dengan munculnya file baru “training.xml” didalam folder “c:/capture/training/>.

Part 4

  1. Simpan koding tersebut dengan “kenalwajah.py” didalam folder “c:/capture/>” . Koding bisa disesuaikan dengan tampilan gambar berikut.
import cv2, time
from PIL import Image
camera = 0
video = cv2.VideoCapture(camera,cv2.CAP_DSHOW)
a = 0
recognizer = cv2.face.LBPHFaceRecognizer_create()
faceDetect = cv2.CascadeClassifier(‘haarcascade_frontalface_default.xml’)
recognizer.read(‘c://capture/training/training.yml’)
id = 0
fontFace = cv2.FONT_HERSHEY_SIMPLEX
fontScale = 1
fontColor = (255,0,0)
while True:
check, 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:
a = a+1
cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)
id, conf=recognizer.predict(gray[y:y+h,x:x+w])
if (id == 1):
id = “alya”
cv2.putText(frame,str(id)(x+w,y+h),fontFace,fontScale,fontColor)
cv2.imshow(“wajah”,frame)
if (cv2.waitKey(1)==ord(‘q’)):
break
print(a)
video.release()
cv2.destroyAllWindows()

2. Kemudian melalui commond prompt jalankan perintah berikut.

c:/capture/> python kenalwajah.py

3. Akan memberikan hasil seperti berikut.

Dari hasil tersebut telah nampak bahwa wajah tersebut telah dikenali dengan ID 1 = alya.

4. Maka untuk setiap object baru dapat kita ulang lagi perintah seperti berikut, jalankan “tangkapwajah.py”.

c:/capture/> python tangkapwajah.py

5. Setelah menjalankan langkah ini ada pertanyaan “masukkan id user” karena User ID 1 sudah kita gunakan, maka bisa diteruskan untuk selanjutnya, 2, 3, … dst. Nampak dalam folder DataSet menjadi berikut.

6. Selanjutnya memanggil file “training.py” kembali,

c:/capture/> python training.py

Pada langkah ini akan dilakukan training kembali untuk user baru yang masuk.

7. Terakhir memanggil file “kenalwajah.py” kembali, sebelumnya menambahkan isi koding seperti berikut ini.

if (id==1):
id = “nama1”
elif (id==2):
id = “nama2”

import cv2, time
from PIL import Image
camera = 0
video = cv2.VideoCapture(camera,cv2.CAP_DSHOW)
a = 0
recognizer = cv2.face.LBPHFaceRecognizer_create()
faceDetect = cv2.CascadeClassifier(‘haarcascade_frontalface_default.xml’)
recognizer.read(‘c://capture/training/training.yml’)
id = 0
fontFace = cv2.FONT_HERSHEY_SIMPLEX
fontScale = 1
fontColor = (255,0,0)
while True:
check, 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:
a = a+1
cv2.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),2)
id, conf=recognizer.predict(gray[y:y+h,x:x+w])
if (id == 1):
id = “alya”
elif (id == 2):
id = “tiara”
cv2.putText(frame,str(id),(x+w,y+h),fontFace,fontScale,fontColor)
cv2.imshow(“wajah”,frame)
if (cv2.waitKey(1)==ord(‘q’)):
break
print(a)
video.release()
cv2.destroyAllWindows()

Lalu jalankan perintah berikut.

c:/capture/> python kenalwajah.py

8. Maka akan muncul gambar sebagai berikut.

Dari hasil tersebut telah nampak bahwa wajah tersebut telah dikenali dengan ID pertama adalah alya, untuk ID kedua adalah tiara.

Part 5

  1. Download dan install SQLitestudio di Google.

2. Kemudian ekstrak data yang berekstensi .zip yang telah diunduh. Setelah itu masukkan ke “c:/capture/>”.

3. Klik SQLitestudio. Pada Menu utama klik “Database”, lalu klik “Add a database”.

4. Kemudian isi pada bagian “File” dengan “datawajah”. Klik icon “Create new database file” untuk menyimpannya kedalam folder “c:/capture/>”. Maka akan muncul tampilan seperti berikut ini.

5. Klik OK. Maka muncul nama database baru yakni “datawajah.db”.

6. Selanjutnya klik dua kali pada database “datawajah” tersebut, maka akan muncul “Tables dan Views”, kemudian cari icon “Create a Table”. Isi table name dengan “orang” kemudian klik tanda centang hijau (commit).

7. Klik icon “add a column”. Kemudian memasukkan variabel-variabel yang diinginkan. Kemudian klik icon commit.

8. Klik OK. Jika pengisian telah selesai, maka klik tanda centang hijau atau commit yang berarti perubahan/penambahan data baru sudah benar.

9. Untuk menyambungkan antara data SQL dengan koding pengenalan wajah maka digunakan koding dengan nama “tangkapwajahlengkap.py” didalam folder “c:/capture/>”.

10. Kemudian melalui anaconda prompt jalankan perintah berikut.

c:/capture/> python tangkapwajahlengkap.py

11. Maka akan memberikan hasil seperti berikut.

Dari hasil tersebut telah nampak bahwa wajah tersebut telah dikenali dengan ID pertama adalah alya dengan umur 20 tahun dan jenis kelamin perempuan, untuk ID kedua adalah tiara dengan umur 20 tahun dan jenis kelamin perempuan.

Sumber

https://medium.com/@986110101/pengenalan-wajah-3-c05a6422113e

https://medium.com/@986110101/pengenalan-wajah-5-cb65f3726e44

--

--