Anda di halaman 1dari 34

LABORATORIUM ROBOTIKA

UNIVERSITAS GUNADARMA

Modul Praktikum Robotika

BAB V : Machine Learning pada Open CV dan IOT

1 TUJUAN
▪ Mengenal Machine Learning pada OpenCV

▪ Mengetahui Algoritma Face Recognition

▪ Mengetahui Cara Pengaksesan Firebase Storage & Google Cloud Platform

2 PERSIAPAN

▪ Instalasi Python 3.7+

▪ Instalasi Package Python :

- OpenCV

- Numpy

- Flask

- Pillow

- Google Cloud Storage

- Firebase

- Firebase Admin

3 PERALATAN PRAKTIKUM
▪ Komputer

▪ Webcam
5.1 Machine Learning Alghorithms
Secara umum algoritma Machine Learning dikategorikan sebagai:

a. Supervised Learning

Supervised Machine Learning dapat menerapkan data yang ada dan data
baru pada contoh-contoh data yang sudah ditandai untuk memprediksi kejadian
masa depan. Dimulai dari analisis training data yang telah diketahui, algoritma
akan menghasilkan fungsi kesimpulan untuk membuat prediksi mengenai nilai
output. Algoritma tersebut dapat menyediakan output untuk input baru lainnya
setelah melakukan pelatihan yang cukup

b. Unsupervised Learning

Unsupervised Learning merupakan kebalikan dari Supervised Learning, artinya


algoritma ini akan digunakan ketika data yang ada tidak diklasifikasikan/ditandai.
Algoritma Unsupervised Learning belajar bagaimana sebuah sistem dapat
mengambil fungsi kesimpulan dari dataset yang mendeskripsikan struktur
tersembunyi dari data yang belum ditandai.

c. Semi-supervised Learning

Semi-supervised Learning berada diantara Supervised dan Unsupervised


Learning, karena algoritma ini menggunakan data yang telah ditandai dan yang
belum ditandai untuk latihan– biasanya menggunakan sedikit data yang sudah
ditandai dan banyak data yang tidak ditandai. Sistem yang menggunakan
algoritma ini dapat meningkatkan akurasi pelatihan secara signifikan. Biasanya
algoritma ini dipilih ketika data yang belum ditandai membutuhkan kemampuan
dan sumber relevan untuk melatihnya/belajar dari data tersebut.

d. Reinforced Learning

Merupakan algoritma yang berinteraksi dengan lingkungannya lalu


menemukan kesalahan atau hasil sehingga dapat memberikan respon yang sesuai.
Trial and error serta hasil yang tertunda merupakan karakteristik dari Reinforced
Learning. Algoritma ini memungkinkan sistem untuk menentukan respon yang
paling ideal untuk memaksimalkan kinerja secara otomatis. Feedback hasil
dibutuhkan sistem untuk belajar menentukan respon yang terbaik; feedback
tersebut dikenal juga dengan reinforcement signal.

5.2 Deep Learning dan Neutral Networks

Berkembang dari Machine Learning, Deep Learning merupakan sekumpulan set


algoritma yang digunakan untuk proses pembelajaran pada Neural Networks. Sedangkan
Neural Networks merupakan sebuah permodelan pola pikir program yang memungkinkan
sebuah komputer/sistem untuk belajar dari data yang ada dan dapat menangani
kesalahan/error yang ada.

Berbeda dengan Machine Learning yang dimana ketika ada kesalahan atau terdapat
prediksi yang tidak akurat masih memerlukan manusia untuk memberikan petunjuk,
Neural Networks yang berasal dari sekumpulan algoritma-algoritma Machine Learning
(digambarkan sebagai neuron) dapat mengatasi masalahnya sendiri tanpa memerlukan
petunjuk dari luar.

5.3 Face Detection dan Face Recognition

Kemampuan face detection dan face recognition pada computer vision merupakan salah
satu aplikasi dari Machine Learning. Dengan menggunakan Machine Learning dan
algoritmanya (formula) sebuah komputer dapat mendeteksi hinnga mengenali suatu
gambar.

5.3.1 Face Detection

Object Detection merupakan salah satu teknologi komputer yang menghubungkan


kemampuan image processing dan computer vision untuk mendeteksi suatu objek. Pada
Object Detection terdapat algoritma Face Detection yang dapat menentukan terdapat
wajah atau tidak pada sebuah gambar.
Gambar 5.1 Face Detection Methods

➢ Face Detection Methods

Metode Face Detection dibagi menjadi beberapa kategori:

1. Feature-based

2. Appearance-based

3. Knowledge-based

4. Template Matching

5. Viola-Jones Algorithm

➢ Cara Kerja Face Detection

Pada materi ini, Face Detection pada OpenCV menggunakan algoritma Viola-
Jones dan Haar Like. Sebelum mendeteksi, gambar yang diterima akan diubah dari
bentuk RGB ke bentuk gray untuk memudahkan proses serta data yang harus diproses
menjadi lebih sedikit.

Selanjutnya adalah segmentasi gambar, yaitu algoritma Viola-Jones akan membentuk


sebuah area yang akan terus bergerak melewati setiap tile pada gambar untuk mendeteksi
kontur atau segmen (fitur Haar-Like) berdasarkan algoritma Haar-Like

Gambar 5.2 Pendeteksian Viola-Jones Algorithm

PraktikumRobotika|4
.

Algoritma Haar-Like digunakan untuk mendeteksi wajah pada gambar


berdasarkan konsep kotak yang memiliki bagian putih dan hitam. Setiap wajah manusia
berbagi beberapa sifat universal wajah seperti daerah mata lebih gelap dari daerah lainnya
(pada gambar berarti pixel tetangganya) dan daerah hidung lebih terang dari daerah mata.

Gambar 5.3 Pendeteksian Haar-Like Algorithm

Kemudian daerah yang telah terdeteksi akan ditandai sebagai ROI (Region of Interest),
untuk menampilkan ROI, selanjutnya ROI akan diberikan koordinat x, y, w, h untuk
membentuk sebuah kotak yang menampilkan ROI pada gambar.

5.1.1 Face Recogntion

Merupakan salah satu teknologi komputer yang dapat bekerja bersamaan dengan
face detection. Teknologi ini mampu mencari karakteristik yang terbaik untuk
mendeskripsikan suatu gambar yang telah diambil, dipotong, diubah ukurannya, dan
biasanya diubah menjadi gambar grayscale.

➢ Face Recognition Modes

Pada dasarnya, sistem face recognition beroperasi pada dua mode, yaitu:

1. Verifikasi suatu gambar wajah

Mode ini pada dasarnya membandingkan input gambar wajah dengan gambar
wajah yang berhubungan dengan user serta membutuhkan autentikasi. Mode ini disebut
juga perbandingan 1x1

2. Identifikasi/pengenalan wajah

Pada mode ini input dibandingkan dengan gambar-gambar wajah dari sebuah dataset
dengan tujuan mencari user yang memiliki wajah sama dengan input. Mode ini disebut
juga perbandingan 1x1

PraktikumRobotika|5
➢ Face Recognition Algorithms

Algoritma-algoritma pada face recognition juga merupakan salah satu aplikasi


dari Machine Learning. Setiap algoritma memiliki cara yang berbeda untuk mengambil
informasi gambar dan melakukan penyesuaian dengan input. Macam-macam algoritma
face recognition, yaitu:

1. Eigenfaces (1991)

2. Local Binary Patterns Histograms (LBPH) (1996)

3. Fisherfaces (1997)
4. Scale Invariant Feature Transform (SIFT) (1999)

5. Speed Up Robust Features (SURF) (2006)

5.4 Real-Time Face Recognition dengan OpenCV (LBPH Alghorithms)

Sebelum kita melakukan percobaan face recognition(Pengenalan Wajah),


kita tidak bisa sekedar menjalankan program yang sudah diketik namun kita juga
harus menyiapkan dataset yang akan digunakan untuk membentuk training data.
Training data tersebut digunakan untuk mengenali wajah yang ditangkap webcam
berdasarkan ID yang ditulis pada program.

Proses face recognition dilakukan berdasarkan urutan dimulai dari mengumpulkan


data, membentuk training data, dan akhirnya mengenali wajah.

Gambar 5.4 Prosedur Face Recognition menggunakan OpenCV

PraktikumRobotika|6
5.4.1 Mengumpulkan Data

Gambar 5.5 Proses pengambilan data wajah

Pada tahap ini kita akan membentuk sebuah dataset yang akan menyimpan
setiap gambar untuk setiap ID. ID yang dimasukkan akan dijadikan sebagai label
untuk setiap foto yang disimpan dan sebagai input index untuk menghasilkan
output id nama dari pada saat face recognition.

5.4.2. Membentuk Training Data

Gambar 5.6 Tahap trading data yang sudah dikumpulkan

Dengan menggunakan gambar wajah yang disimpan pada dataset, kita dapat
membentuk sebuah file .yml yang digunakan untuk mengenali wajah yang
ditangkap webcam.

PraktikumRobotika|7
Untuk menghasilkan file .yml tersebut, kita menggunakan algoritma LBPH (Local
Binary Patterns Histogram). Proses training melewati beberapa prosedur LBP dan
HOG, yaitu:

Gambar 5.7 Prosedur LBP.

• Prosedur LBP:

1. Gambar yang diterima akan diubah ke bentuk grayscale

2. Gambar kemudian dipecah menjadi window dengan pixel 3x3 atau disebut
juga matriks 3x3 dengan perbedaan intensitas disetiap pixelnya (0-255)

3. Kemudian ambil nilai dari central pixel sebagai threshold untuk


menentukan nilai dari 8 pixel sekelilingnya

4. Untuk setiap pixel sekeliling central pixel, tentukan nilai biner baru. 1
untuk nilai >= dari nilai central pixel, sedangkan 0 untuk nilai <= dari nilai
central pixel

5. Setiap nilai biner yang dihasilkan gabungkan sesuai dengan arah jarum
jam

6. Nilai biner tersebut kemudian dikonversikan ke nilai desimal lalu


dijadikan nilai central pixel.

7. Pada akhir prosedur, akan didapat gambar baru yang menampilkan data
karakteristik gambar original yang lebih baik

PraktikumRobotika|8
Gambar 5.8 Hasil gambar original dari prosedur LPBH.

• Prosedur HOG:

Dengan menggunakan gambar yang dihasilkan dari prosedur LBP, kita


memiliki gambar grayscale yang lebih jelas. Dengan menggunakan parameter X
dan Y kita dapat membagi gambar menjadi beberapa region. Setiap region akan
menghasilkan histogram dengan 256 posisi (0-255) yang mewakili intensitas
kemunculan pixel. Kemudian setiap histogram akan digabungkan menjadi
histogram baru yang lebih besar (jika kita memiliki 8x8 region, kita akan memiliki
8x8x256 = 16.384 posisi histogram pada histogram final).

Histogram final akan menunjukan karakterisik gambar tersebut. Hasil akhir ini
yang kita sebut sebagai Training Data

Gambar 5.9 Recognition.

5.4.3 Mengenali Wajah

Pada tahap akhir ini, kita akan mengambil gambar wajah baru melalui
webcam, ketika gambar wajah yang diambil telah disimpan dan di-train
sebelumnya. Recognizer kita akan membuat sebuah “Prediksi” atau “Confidence”.

PraktikumRobotika|9
Ketika menerima input gambar baru, recognizer akan membandingkan dua
histogram dan mengembalikan gambar ke histogram terdekatnya.

Kita dapat menggunakan beberapa cara untuk membandingkan histogram


(menghitung jarak antar histogram) dengan cara: Euclidean Distance, Chi-square,

Gambar 5.1.1 Rumus Euclidean Distance.

Absolute Value, dsb. Pada saat ini kita menggunakan rumus Euclidean Distance
(rumus paling umum) :

Jadi output dari algoritma adalah ID dari gambar dengan histogram


terdekat dan jarak yang telah dihitung, yang bisa digunakan sebagai perhitungan
“Confidence”. “Confidence” memiliki maksud semakin rendah semakin bagus
yang artinya jarak antar histogram semakin dekat.

Selanjutnya kita dapat menggunakan threshold dan “Confidence” untuk


memperkirakan jika algoritma telah mengenali gambar dengan baik. Kita bisa
berasumsi bahwa algoritma telah berhasil mengenal gambar jika “Confidence”
lebih rendah dari threshold yang ditentukan.

5.5 Internet of Things (IOT)

Gambar 5.1.2 IOT

P r a k t i k u m R o b o t i k a | 10
Istilah Internet of Things pertama kali diciptakan oleh Kevin Ashton pada
tahun 1999. Upaya untuk mendefinisikan dengan benar apa itu IoT, telah
dilakukan sejak istilah tersebut pertama kali diciptakan. Menurut definisi, IoT
berarti mengimplementasikan fungsionalitas pada objek sehari-hari melalui
interkoneksi sehingga dapat mengirim dan menerima data.

Dalam istilah sederhana- IoT memungkinkan hal-hal dalam kehidupan kita


sehari-hari untuk berinteraksi dan berkomunikasi satu sama lain sehingga mereka
dapat melakukan tugas-tugas yang bermanfaat, seperti smartphone dan laptop kita
yang terhubung melalui internet untuk berbagi informasi satu sama lain. Anggap
saja sebagai World Wide Web di mana segala sesuatu termasuk laptop, komputer,
smartphone, dan perangkat terhubung.

Daftar bidang di mana IoT dapat berpotensi diimplementasikan cukup


beragam, beberapa di antaranya adalah proyek Smart city, sistem kewaspadaan,
pemantauan lingkungan, dan sistem perawatan kesehatan digital. IoT tidak hanya
terbatas pada perangkat dan konektivitasnya, teknologi ini adalah penggabungan
dari berbagai teknologi lintas domain seperti komputasi awan, kecerdasan buatan,
Big Data, dan Machine Learning. Mari kita dapatkan lebih banyak wawasan
tentang penggunaan IoT.

5.5.1 Cara kerja Internet of Things (IOT)

Konsep Iot ini sebetulnya cukup sederhana dengan cara kerja mengacu
pada 3 elemen utama pada arsitektur IoT, yakni: Barang Fisik yang dilengkapi
modul IoT, Perangkat Koneksi ke Internet seperti Modem atau Router, dan Cloud
Data Center tempat untuk menyimpan aplikasi beserta data base.

Untuk cara kerjanya dengan menggunakan suatu argumentasi


pemrograman, di mana tiap-tiap perintah argumen tersebut dapat menghasilkan
suatu interaksi antar mesin yang telah terhubung secara otomatis tanpa campur
tangan manusia dan tanpa dibatasi oleh jarak yang jauh. Internet menjadi
penghubung antara kedua interaksi mesin tersebu sehingga manusia dalam IoT

P r a k t i k u m R o b o t i k a | 11
hanyalah menjadi pengatur dan pengawas dari mesin-mesin yang bekerja secara
langsung tersebut.

5.5.2 Unsur mendasar IOT

Agar sebuah mesin atau alat bisa disebut IOT(Internet of Thing) ada
unsur-unsur dasar terkait hal tersebut seperti kecerdasan buatan, konektivitas,
sensor, keterlibatan aktif serta pemakaian perangkat berukuran kecil. Berikut
penjelasan masing-masing unsur pembentuk dasar tersebut:

a. Kecerdasan Buatan(Artificial Intelligence/AI)

b. Konektivitas

c. Sensor

d. Keterlibatan aktif(Active Engagement)

e. Perangkat/komponen berukuran kecil.

5.5.3 GCP (Google Cloud Platform)

Gambar 5.1.3 GCP

Pada bab kali ini kita akan menggunakan Google Cloud Platform sebagai
media penyimpanan untuk melakukan salah satu percobaan praktikum, sebelum

P r a k t i k u m R o b o t i k a | 12
itu alangkah baiknya kita lebih mengenal apa itu GCP?.
Google Cloud Platform adalah kumpulan layanan berbasis cloud modular yang
menyediakan beberapa layanan seperti komputasi, penyimpanan, jaringan,
pengembangan aplikasi, Big Data, dan masih banyak lagi, yang berjalan di
infrastruktur Cloud yang sama yang digunakan Google secara internal untuk
produk pengguna akhir, seperti Google Cari, Foto, Gmail dan YouTube,
dll.Layanan GCP dapat diakses oleh pengembang perangkat lunak, administrator
cloud, dan profesional TI melalui Internet atau melalui koneksi jaringan khusus.

Sebagian besar orang mecari layanan pusat data cloud karena ketersediaan
perkiraan biaya, spesifikasi perangkat keras, dan kontrol tingkat lanjut. Namun,
mereka tidak memiliki fitur yang diperlukan untuk menjalankan dan memelihara
sumber daya di pusat data tersebut. GCP, di sisi lain, adalah platform cloud yang
mempunyai fitur lengkap yang dibutuhkan para pengguna seperti kapasitas,
kemanan, jaringan, bandwith, dan Client Suppot

5.5.4 Firebase

Firebase merupakan aplikasi penyedia layanan backend atau biasa disebut


Backend-as-a-Service (Baas). Firebase menyediakan banyak pilihan fitur layanan
yang membantu para pengembang dalam mengembangkan aplikasi mereka.
Firebase dikategorikan sebagai program database NoSQL, yang menyimpan data
dalam dokumen mirip JSON.
Berikut beberapa fitur layanan yang disediakan aplikasi Firebase untuk para
penggunanya, seperti:
1. Authentication
2. Analytic
3. Cloud messaging
4. Realtime database
5. Crashlytics
6. Performance
7. Test lab

P r a k t i k u m R o b o t i k a | 13
PERCOBAAN 5.1
Face Recognition with OpenCv

Langkah Kerja :

1. Pertama kita akan mendowload resource yang dibutuhkan untuk menjalani


praktikum Bab ini, silahkan download file-file yang dibutuhkan pada link
bawah ini:

https://github.com/muropraktikum/PTA-2022-2023.git

2. Unziplah file zip yang sudah didownload, setelah di unzip maka akan ada
susunan directory kurang lebih seperti berikut

3. Pada tahap pertama mari kita membuat program untuk mendapatkan data
terkait wajah kita. Bukalah folder “Program Face Recognition”

4. Pilih file DataCollector.py dan bukalah. Menggunakan Python IDLE kalian


lalu ketiklah program dibawah ini:

P r a k t i k u m R o b o t i k a | 14
Code DataCollector.py

Program

import cv2
import os

cam = cv2.VideoCapture(0)
cam.set(3,640)
cam.set(4,480)

face_detector = cv2.CascadeClassifier('Cascades\haarcascade_frontalface_default.xml')

face_id = input('\n id gambar (Masukan angka dari 1-10) : ')

print("\n liat camera...")

count = 0

while(True):
ret, img = cam.read()

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

faces = face_detector.detectMultiScale(gray, 1.3, 5)

for (x,y,w,h) in faces:


cv2.rectangle(img, (x,y), (x+w,y+h), (255, 0, 0), 2)
count+=1
cv2.imwrite("dataset/User." + str(face_id) + '.' + str(count) +".jpg", gray[y:y+h, x:x+w])
#function buat save gambar dengan format .jpg dalam bentuk gray
cv2.imshow('image', img)

k = cv2.waitKey(100) & 0xff

if k == 27:
break
elif count>=30:
break

print("\n keluar...")

cam.release()
cv2.destroyAllWindows()

#Pastikan Indentasi pada setiap kodingan sudah benar!!

P r a k t i k u m R o b o t i k a | 15
5. Silahkan run program diatas dan masukkan Id gambar untuk data wajah yang
anda akan disimpan.

6. Selanjutnya installah library pillow menggunakan command prompt dengan


mengetik:

python -m pip install pip , dan

python -m pip install pillow

7. Setelah kita mendapatkan data wajah selanjutnya kita akan mentraining data
tersebut agar komputer dapat mengenali menggunakan algoritma LBPH,
Bukalah File DataTrainer.py lalu ketiklah program dibawah ini.

CODE DataTrainer.py
Program
import numpy as np
import cv2
import os
from PIL import Image

path = 'dataset'
recognizer = cv2.face.LBPHFaceRecognizer_create()
detector = cv2.CascadeClassifier('Cascades\haarcascade_frontalface_default.xml')

def getImageAndLabels(path):
imagePaths = [os.path.join(path, f) for f in os.listdir(path)]

faceSamples = []
ids = []
for imagePath in imagePaths:
PIL_img = Image.open(imagePath).convert('L') #grayscale
img_numpy = np.array(PIL_img, 'uint8')
id = int (os.path.split(imagePath)[-1].split(".")[1])
faces = detector.detectMultiScale(img_numpy)

for (x, y, w, h) in faces:


faceSamples.append(img_numpy[y:y+h,x:x+h])
ids.append(id)

return faceSamples, ids

print("\n Training faces...")

faces,ids = getImageAndLabels(path)
recognizer.train(faces, np.array(ids))

recognizer.write('trainer/trainer.yml')

print("\n face trained".format(len(np.unique(ids))))

#Pastikan Indentasi pada setiap kodingan sudah benar!!


P r a k t i k u m R o b o t i k a | 16
faces,ids = getImageAndLabels(path)
recognizer.train(faces, np.array(ids))

recognizer.write('trainer/trainer.yml')

print("\n face trained".format(len(np.unique(ids))))

#Pastikan Indentasi pada setiap kodingan sudah benar!!

8. Jalankanlah program diatas lalu tunggulah sampai program berhasil


menyelasaikan alghoritma pentrainingan pada data wajah yang sudah di
dapatkan.

9. Setelah data berhasil di training selanjutnya kita akan membuat program


pengenalan wajah menggunakan data yang sudah di training tersebut dan akan
dibandingkan dengan kamera yang ditangkap oleh komputer. Bukalah File
Recognizer.py lalu tulislah code berikut:

Code Recognizer.py
Program
import numpy as np

import cv2

import os

recognizer = cv2.face.LBPHFaceRecognizer_create()

recognizer.read('trainer/trainer.yml')

cascadePath = "Cascades\haarcascade_frontalface_default.xml"

faceCascade = cv2.CascadeClassifier(cascadePath);

font = cv2.FONT_HERSHEY_SIMPLEX

id = 0

#Tulislah nama anda sesuai indeks yang anda gunakan pada id data wajah kalian
#contoh jika kalian memberikan id data wajah 1 maka tulislah nama kalian pada indeks 1

names = ['None', 'Y', 'U', 'V', 'Z', 'W']

cam = cv2.VideoCapture(0)

cam.set (3, 640)


P r a k t i k u m R o b o t i k a | 17
cam.set (4, 480)
cam = cv2.VideoCapture(0)

cam.set (3, 640)

cam.set (4, 480)

minW = 0.1*cam.get(3)

minH = 0.1*cam.get(4)

while True:
ret, img = cam.read()
gray = cv2.cvtColor (img, cv2.COLOR_BGR2GRAY)

faces = faceCascade.detectMultiScale(
gray,
scaleFactor = 1.2,
minNeighbors = 5,
minSize = (int(minW),int(minH))
)
for (x,y,w,h) in faces:
cv2.rectangle(img, (x,y), (x+w, y+h), (0,255,0), 2)
id, confidence = recognizer.predict(gray[y:y+h,x:x+w])

if (confidence < 100):


id = names[id]
confidence = " {0}%".format(round(100 - confidence))
else:
id = "Unknown"
confidence = " {0}%".format(round(100 - confidence))

cv2.putText(
img,
str(id),
(x+5, y-5),
font,
1,
(255,255,255),
2)

cv2.putText(
img,
str(confidence),
(x+5, y+h-5),
font,
1,
(255,255,0),
1)

cv2.imshow('camera',img)

k = cv2.waitKey(10) & 0xff #'esc' untuk keluar


if k == 27:
break

print("\n Keluar program...")

cam.release() P r a k t i k u m R o b o t i k a | 18
cv2.destroyAllWindows()
k = cv2.waitKey(10) & 0xff #'esc' untuk keluar
if k == 27:
break

print("\n Keluar program...")

cam.release()
cv2.destroyAllWindows()

#Note : Perhatikan indentasi yang ada di setiap kodenya.

10. Jalankan Program diatas lalu tampilkan wajah kalian didepan camera
selanjutnya komputer akan mendeteksi dan mengenali wajah sesuai data
wajah yang sudah didapat.

Output :

P r a k t i k u m R o b o t i k a | 19
PERCOBAAN 5.2
Face Recognition Berbasis Web

Langkah Kerja:

1. Bukalah folder “Program Face Recognition (Web)”.

2. Pertama Installah library flask dengan cara membuka CMD (Command


Prompt) pada PC anda dan install flask dengan mengetikan perintah “pip
install flask”.

3. Pada tahap pertama mari kita membuat program untuk mendapatkan data
terkait wajah kita. Bukalah File DataCollector.py lalu ketiklah program seperti
DataCollector.py percobaan sebelumnya.

4. Silahkan run program dan masukkan Id gambar untuk data wajah anda yang
akan disimpan.

5. Setelah kita mendapatkan data wajah selanjutnya kita akan mentraining data
tersebut agar komputer dapat mengenali menggunakan algoritma LBPH,
Bukalah File DataTrainer.py lalu ketiklah program sama seperti
DataTrainer.py percobaan sebelumnya.

6. Jalankanlah program lalu tunggulah sebentar sampai program berhasil


menyelasaikan alghoritma pengenalan pada data wajah yang sudah di
dapatkan.

7. Setelah data berhasil di training selanjutnya kita akan membuat program


pengenalan wajah menggunakan data yang sudah di training tersebut dan akan
dibandingkan dengan kamera yang ditangkap oleh komputer. Bukalah File
Recognizer.py lalu tulislah program seperti percobaan sebelumnya.

P r a k t i k u m R o b o t i k a | 20
8. Jalnkan program Recognizer.py dan tunggu hingga selesai.

CODE main.py
Program

import flask
from flask import Flask, render_template, Response
from FaceSmileEyeDetection import VideoCamera
from Recognizer import VideoRecognizer

app = Flask(__name__)

@app.route('/')
def index():
return render_template('index.html')

def gen(camera):
while True:
frame = camera.get_frame()
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n')

@app.route('/video_feed')
def video_feed():
return Response(gen(VideoCamera()),
mimetype='multipart/x-mixed-replace;boundary=frame')

@app.route('/face_recognition')
def recognizer():
return render_template('recognizer.html')

@app.route('/video_recognition')
def video_recognition():
return Response(gen(VideoRecognizer()),
mimetype='multipart/x-mixed-replace;boundary=frame')

if __name__ == '__main__':
app.run(host='0.0.0.0', port='5000', debug=True)

9. Bukalah file ‘main.py’ dan isi file dengan mengetik program di bawah ini.

10. Jalankan program main.py

P r a k t i k u m R o b o t i k a | 21
11. Buka alamat web yang tersedia pada python shell kalian seperti gambar di
bawah dengan menggunakan browser yang biasa anda gunakan.

Output :

P r a k t i k u m R o b o t i k a | 22
PERCOBAAN 5.3
Face Recognition Menggunakan Google Cloud Platform (IoT)

Langkah Kerja:
1. Pastikan PC anda sudah terinstal Python 3 (minimum versi python 3.7).

2. Buka CMD (Command Prompt) pada PC anda.

3. Installah Library python yang akan dibutuhkan menggunakan CMD dengan


mengetik:

● pip install google-cloud-storage

● pip install firebase

● pip install firebase_admin

4. Siapkan console.cloud dan firebase dengan mengikuti Langkah-langkah


berikut:

Konfigurasi console.cloud dan firebase

1. Buka console.cloud.google.com pada browser PC.

P r a k t i k u m R o b o t i k a | 23
2. Lalu pilih Select a project dan klik New Project

3. Masukan nama project lalu klik create

4. Lalu akan muncul notifikasi, lalu klik Select Project

P r a k t i k u m R o b o t i k a | 24
5. Masukan nama service account dengan “datatraining” lalu klik create and
continue

6. Lalu select role Owner setelah itu klik selesai

P r a k t i k u m R o b o t i k a | 25
7. Lalu kita download file .json pada action dan pilih Manage keys, lalu pilih
add key dan klik create new key

8. Download file .JSON klik create, Setelah terdownload pindahkan file


credential kedalam folder credentials

9. Setelah men setting pada google console cloud kita buka firebase untuk
menyimpan data peserta yang akan di training dengan membuka:

console.firebase.google.com

P r a k t i k u m R o b o t i k a | 26
10. Klik Create Project

11. Pilih projek yang tersedia dan klik Continue sampai 4 step, terima Terms
Google analytics dan klik add firebase

12. Pilih menu build di samping kiri pilih storage

13. Pilih Start in test mode lalu klik Next, dan pilih region Asia-southeast

P r a k t i k u m R o b o t i k a | 27
Program Pada Python:

1. Bukalah folder “Face recognition (IOT)”

2. Lalu bukalah File DataCollector.py menggunakan Python IDLE kalian dan


ketiklah program seperti DataCollector.py percobaan sebelumnya:

3. Jalankan DataCollector.py dan masukkan Id gambar untuk data wajah yang


akan disimpan.

4. Selanjutnya buka file DataTrainer.py lalu Ketik Program dibawah ini


dengan tambahan:

a. copy path firebase storage (tanpa gs://) ke file python

b. Ganti credential sesuai dengan nama file credential GCP kalian

Program DataTrainer.py

Program
#PERHATIKAN FILE .JSON SERTA PATH DARI FIREBASE STORAGE
from firebase_admin import credentials, initialize_app, storage
from PIL import Image
import numpy as np
import cv2
import os

path = 'dataset'
#Sesuaikan dengan nama path database dan file json kalian
cred = credentials.Certificate("credentials/datatraining-357313-firebase-adminsdk-hxqrb-
ae36e15102.json")
initialize_app(cred, {'storageBucket': 'datatraining-357313.appspot.com'})

recognizer = cv2.face.LBPHFaceRecognizer_create()
detector = cv2.CascadeClassifier('Cascades\haarcascade_frontalface_default.xml')

def getImageAndLabels(path):
imagePaths = [os.path.join(path, f) for f in os.listdir(path)]
faceSamples = []
ids = []
for imagePath in imagePaths:
PIL_img = Image.open(imagePath).convert('L') # grayscale
img_numpy = np.array(PIL_img, 'uint8')
P r a k t i k u m R o b o t i k a | 28
id = int(os.path.split(imagePath)[-1].split(".")[1])
faces = detector.detectMultiScale(img_numpy)
for imagePath in imagePaths:
PIL_img = Image.open(imagePath).convert('L') # grayscale
img_numpy = np.array(PIL_img, 'uint8')
id = int(os.path.split(imagePath)[-1].split(".")[1])
faces = detector.detectMultiScale(img_numpy)
for (x, y, w, h) in faces:
faceSamples.append(img_numpy[y:y + h, x:x + h])
ids.append(id)
return faceSamples, ids

print("\n Training Dataset...")


faces, ids = getImageAndLabels(path)
recognizer.train(faces, np.array(ids))
recognizer.write('trainer.yml')

fileName = "trainer.yml"
bucket = storage.bucket()
blob = bucket.blob(fileName)
blob.upload_from_filename(fileName)
blob.make_public()
print("\n URL untuk Mendownload File : ", blob.public_url)
os.remove("trainer.yml")

print("\n Training Data Telah Dibentuk dan Diupload ke Firebase


Storage...".format(len(np.unique(ids))))
#Pastikan Indentasi pada setiap kodingan sudah benar!!

5. Jalankan Program diatas dan tunggulah hingga data trainer kalian selesai di
masukan kedalam Firebase kalian.

6. Bukalah file Recognizer.py dan ketiklah program dibawah ini

7. Setelah itu Jalankan Program Recognizer.py dan tunggullah hingga selesai. Jika
berhasil maka database di firebase berhasil terkoneksi dan cobalah untuk
mendeteksi wajah kalian.

P r a k t i k u m R o b o t i k a | 29
Program Recognizer.py

Program
from firebase_admin import credentials, initialize_app
from google.cloud import storage
import numpy as np
import cv2
import os
path = "Program Face Recognition (IoT)"

#Sesuaikan dengan nama path database dan file json kalian


os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "credentials/datatraining-
357313-cf717a9cd86d.json"
cred = credentials.Certificate('credentials/datatraining-357313-cf717a9cd86d.json')
initialize_app(cred, {'storageBucket':'datatraining-357313.appspot.com'})

client = storage.Client('trainingdata')
bucket = client.get_bucket('datatraining-357313.appspot.com')
blob = bucket.blob("trainer.yml")

if not os.path.exists('trainer'):
os.makedirs('trainer')

blob.download_to_filename("trainer/trainer.yml")

recognizer = cv2.face.LBPHFaceRecognizer_create()
recognizer.read('trainer/trainer.yml')
cascadePath = "Cascades\haarcascade_frontalface_default.xml"
faceCascade = cv2.CascadeClassifier(cascadePath);

P r a k t i k u m R o b o t i k a | 30
font = cv2.FONT_HERSHEY_SIMPLEX

id = 0

#Tulislah nama anda sesuai indeks yang anda gunakan pada id data wajah kalian; contoh jika
kalian memberikan id data wajah 1 maka tulislah nama kalian pada indeks 1

names = ['None', 'Y', 'U', 'V', 'Z', 'W']

cam = cv2.VideoCapture(0)

cam.set (3, 640)

cam.set (4, 480)

minW = 0.1*cam.get(3)

minH = 0.1*cam.get(4)

while True:

ret, img = cam.read()

gray = cv2.cvtColor (img, cv2.COLOR_BGR2GRAY)

faces = faceCascade.detectMultiScale(

gray,

scaleFactor = 1.2,

minNeighbors = 5,

minSize = (int(minW),int(minH))

for (x,y,w,h) in faces:

cv2.rectangle(img, (x,y), (x+w, y+h), (0,255,0), 2)

id, confidence = recognizer.predict(gray[y:y+h,x:x+w])

if (confidence < 100):

id = names[id]

confidence = " {0}%".format(round(100 - confidence))

else:

id = "Unknown"

confidence = " {0}%".format(round(100 - confidence))

P r a k t i k u m R o b o t i k a | 31
cv2.putText(

img,

str(id),

(x+5, y-5),

font,

1,

(255,255,255),

cv2.putText(

img,

str(confidence),

(x+5, y+h-5),

font,

1,

(255,255,0),

cv2.imshow('camera',img)

k = cv2.waitKey(10) & 0xff #'esc' buat keluar

if k == 27:

break

print("\n Keluar program...")

cam.release()

cv2.destroyAllWindows()

#Pastikan Indentasi pada setiap kodingan sudah benar!!

P r a k t i k u m R o b o t i k a | 32
Output :

PERCOBAAN Mandiri 5.1


Face Recognitions
Buatlah program menggunakan salah satu Percobaan praktikum diatas dan
gunakan lebih dari 1 data wajah sehingga komputer dapat melakukan pengenalan
lebih dari 1 orang secara bersamaan

Program :

P r a k t i k u m R o b o t i k a | 33
Screenshot Output Program :

TANGGAL PARAF ASISTEN

P r a k t i k u m R o b o t i k a | 34

Anda mungkin juga menyukai