Search what you want

Sunday, September 3, 2017

(Face Recognition 2 ) build data model with facenet [build]

kita akan lanjutkan postingan dari artikel sebelumnya. pada tahap ini kita akan membuat model dari data-data gambar yang kita sudah miliki. langsung saja...
pada kesempatan kali ini kita akan menggunakan suatu tools yang akan mempermudah sedikit pekerjaan kita, yap kita akan menggunakan docker. disini kita tidak usah mengdownload dan mempersiapkan dependency kita manually.

1. install docker
$ docker pull bamos/openface
2. running docker di file rootprojek kita. file root projek saya di "/home/kirra/Documents/projek/facedetect"
$ cd /home/kirra/Documents/projek/facedetect
$ docker run -p 9000:9000 -p 8000:8000 -t -i -v $(pwd)/blog:/root/openface/blog bamos/openface /bin/bash
$ cd /root/openface

untuk keluar dari docker tanpa mematikannya
$ ctrl+p  dan   ctrl+q
melihat docker image yang sedang running
$ sudo docker ps

untuk masuk lagi ke docker file
$ sudo docker attach 16e8a2d80156


3. build alignment
$ ./util/align-dlib.py ./blog/filter/ align outerEyesAndNose ./aligned-images/ --size 96
output from console:
=== ./blog/filter/acha/Z (10)_0.jpg ===
=== ./blog/filter/BungaCL/images (44)_0.jpg ===
=== ./blog/filter/acha/Z (6)_0.jpg ===
=== ./blog/filter/BungaCL/images (84)_0.jpg ===
=== ./blog/filter/BungaCL/images (27)_0.jpg ===
=== ./blog/filter/isyana/images (66)_0.jpg ===
=== ./blog/filter/raisa/images (2)_0.jpg ===
=== ./blog/filter/BungaCL/images (79)_0.jpg ===
=== ./blog/filter/raisa/images (12)_1.jpg ===
.
.
.
.
=== ./blog/filter/acha/9k= (7)_0.jpg ===
=== ./blog/filter/acha/images (15)_0.jpg ===
=== ./blog/filter/acha/2Q== (5)_0.jpg ===
=== ./blog/filter/acha/images (90)_0.jpg ===
=== ./blog/filter/BungaCL/images (1)_0.jpg ===
=== ./blog/filter/acha/images (8)_0.jpg ===
4. membuat representasi dari gambar
$ ./batch-represent/main.lua -outDir ./generated-embeddings/ -data ./aligned-images/
output:
{

  data : "./aligned-images/"

  imgDim : 96

  model : "/root/openface/models/openface/nn4.small2.v1.t7"

  device : 1

  outDir : "./generated-embeddings/"

  cache : false

  cuda : false

  batchSize : 50

}

./aligned-images/ 

cache lotation:  /root/openface/aligned-images/cache.t7 

Creating metadata for cache. 

{

  sampleSize : 

    {

      1 : 3

      2 : 96

      3 : 96

    }

  split : 0

  verbose : true

  paths : 

    {

      1 : "./aligned-images/"

    }

  samplingMode : "balanced"

  loadSize : 

    {

      1 : 3

      2 : 96

      3 : 96

    }

}

running "find" on each class directory, and concatenate all those filenames into a single file containing all image paths for a given class 

now combine all the files to a single large file 

load the large concatenated list of sample paths to self.imagePath 

253 samples found......................... 0/253 .......................................]  ETA: 0ms | Step: 0ms         

Updating classList and imageClass appropriately 

 [======================================== 4/4 ========================================>]  Tot: 69ms | Step: 17ms       

Cleaning up temporary files 

Splitting training and test sets to a ratio of 0/100 

nImgs:  253 

Represent: 50/253 

Represent: 100/253 

Represent: 150/253 

Represent: 200/253 

Represent: 250/253 

Represent: 253/253
5. latih model wajah dari model yang kita miliki
$ ./demos/classifier.py train ./generated-embeddings/
output:
Loading embeddings.
Training for 4 classes.
Saving classifier to './generated-embeddings//classifier.pkl'
6. hasil struktur folder setelah training

7. sekarang kita akan test hasil dari model yang telah kita buat.
cari gambar selain gambar dari trining data tadi.
saya mencari gambar lain dari acah, raisa, isyana, isyana, rafi ahmad, dan nagita.
(test_acha.jpg  test_bcl.jpg  test_isyana.jpg  test_nagita.jpg  test_rafi.jpg  test_raisa.jpg)

$ ./demos/classifier.py infer ./generated-embeddings/classifier.pkl blog/test/test_acha.jpg
=== blog/test/test_acha.jpg ===
Predict acha with 0.90 confidence.
$ ./demos/classifier.py infer ./generated-embeddings/classifier.pkl blog/test/test_bcl.jpg
=== blog/test/test_bcl.jpg ===
Predict BungaCL with 0.65 confidence.
$ ./demos/classifier.py infer ./generated-embeddings/classifier.pkl blog/test/test_isyana.jpg
=== blog/test/test_isyana.jpg ===
Predict isyana with 0.67 confidence.
$ ./demos/classifier.py infer ./generated-embeddings/classifier.pkl blog/test/test_raisa.jpg
=== blog/test/test_raisa.jpg ===
Predict raisa with 0.99 confidence.
$ ./demos/classifier.py infer ./generated-embeddings/classifier.pkl blog/test/test_nagita.jpg
=== blog/test/test_nagita.jpg ===
Predict acha with 0.60 confidence.
$ ./demos/classifier.py infer ./generated-embeddings/classifier.pkl blog/test/test_rafi.jpg 
=== blog/test/test_rafi.jpg ===
Predict raisa with 0.91 confidence.


dari hasil tersebut dapat kita ketahui bahwa ke-empat artis yang kita telah buat modelnya, dapa di klasifikasikan dengan benar. nah dua artis ini (nagita dan rafi) mendapatkan hasil yang tidak benar, ya karena memeng kita tidak membuat modelnya terlebih dahulu. tapi ada yang menarik dari hasil ini, kalau menurut sistem ini sepertinya Rafi Ahmad memang mirip dengan Raisa ya dengan confidence level sangat tinggi yaitu 0.91. jangan-jangan mereka saudaraan... haha  #just-Kidding ^-^






ref:
https://medium.com/@ageitgey/machine-learning-is-fun-part-4-modern-face-recognition-with-deep-learning-c3cffc121d78

https://hackernoon.com/building-a-facial-recognition-pipeline-with-deep-learning-in-tensorflow-66e7645015b8

No comments:

Post a Comment