Fun Project with MicrosoftML rxFeaturize

image description

Hai Data Geek!

Di artikel ini, saya ingin berbagi pengalaman sewaktu bermain-main dengan algoritma face recognition. Terdengar canggih ya! Tapi sebenarnya ini sederhana kok. Beruntung lah kita karena Microsoft R Server sudah memfasilitasi kita yang gemar bereksperimen dengan image processing melalui function untuk membuat image processing atau face recognition ini lewat function rxFeaturize yang ada di package MicrosoftML. Bagi teman-teman yang sudah terbiasa dengan environment R, pasti bisa bilang kalau langkah yang saya kerjakan sangat sederhana. Mungkin begitu pula dengan teman-teman yang terbiasa dengan bahasa pemrograman lainnya.

Sebelumnya, saya akan menjelaskan tujuan dari fun project yang saya lakukan ini, yaitu untuk mencocokkan wajah kita dengan 100 aktris top berdasarkan IMDB. Btw, ini bisa dilakukan untuk artis apa pun ya, hanya saja saya terlanjur malas menyimpan banyak image. Maka dari itu, sample yang saya gunakan pun hanya 46 aktris dari 100 aktris top yang ada di list tersebut. Jadi kalau hasilnya kurang akurat, boleh dikatakan wajar (ya iya, kan sample-nya sedikit :P). Project ini murni dilakukan karena keisengan belaka, tapi semoga berfaedah untuk proses pembelajaran image processing menggunakan rxFeaturize. Sebenarnya sudah banyak ya baik website maupun apps yang memfasilitasi rasa penasaran kita untuk mencocokkan mirip artis siapa, tapi kalau berhasil mencoba sendiri kan rasanya lebih greget :D

Baiklah, izinkan saya menjelaskan langkah-langkahnya walaupun tidak akan terlampau detail. Pertama, yang harus kita lakukan adalah memanggil image aktris yang telah dipilih ke dalam environment R. Langkahnya dapat dilihat pada gambar berikut.


Selanjutnya, image tersebut kita simpan ke dalam bentuk data frame agar dapat digunakan oleh function rxFeaturize. Bentuknya setelah diubah menjadi data frame ialah sebagai berikut.


Setelah itu, kita mengubah fitur yang ada pada setiap image ke dalam bentuk vektor agar dapat diproses. Dalam model ini, DNN (Deep Neural Network) model yang digunakan adalah "alexnet". Ada beberapa pilihan lain, yaitu resnet18, resnet50, dan resnet101. Bedanya alexnet dengan berbagai macam resnet, dia menggunakan pixel lebih besar, yaitu 227x227, sedangkan resnet 224x224. Dari sisi model, baik alexnet maupun resnet, keduanya merupakan convolutional neural network (feed-forward artificial neural networks, yaitu jenis neural network yang lazim digunakan untuk mengklasifikasi image).


Selanjutnya, langkah yang dilakukan adalah menghitung jarak Euclidean antara image yang diuji dengan semua image yang dilatih. Berhubung kita sedang mencari aktris mana yang paling mirip, maka semakin kecil jaraknya, semakin baik.



Hasilnya dapat dilihat sebagai berikut. Jarak terdekat antara image wajah saya dengan aktris-aktris itu sebesar 59.25067 (wah ini masih tetap jauh sih, semakin mendekati nol, seharusnya semakin baik. Itu artinya memang tidak ada kemiripan :P)


Agar hasil di atas dapat terlihat lebih jelas, maka saya membuat grafik untuk menyandingkan kedua image yang dibandingkan. Termasuk skornya (angka yang muncul di bagian atas tengah). Hanya saja, karena keterbatasan saya dalam menampilkan grafik yang cantik di R, jadi lah grafik yang muncul terlalu scientific. Atau dengan kata lain, kurang komersil :)))


Dan ini dia hasilnya.. Saya tahu, tidak ada kemiripan di antara kami berdua, terbukti kan skornya pun di bawah 50%.

Penggunaan function rxFeaturize ini sebenarnya dapat dikembangkan lebih lanjut untuk image processing yang lebih serius, misalnya untuk mengklasifikasikan binatang melalui image, klasifikasi kategori image apakah termasuk pemandangan, potret wajah, tulisan, dan lainnya. Berdasarkan pengalaman saya, rxFeaturize ini sudah enak untuk digunakan. Hanya saja masih belum terpikir bagaimana mengkolaborasikan penggunaannya jika image yang dilatih jumlahnya sangat banyak. Masih harus mengkaji banyak referensi. Namun pada hakikatnya, function ini sangat helpful untuk image processing dalam skala yang tidak terlampau besar. Silakan bereksperimen sendiri! :D

Source: ImageFeaturizer - GitHub


PS: Maafkan saya menggunakan image wajah sendiri untuk diuji. Sebenarnya banyak wajah teman yang saya uji, hanya saja atas dasar etika dalam publikasi artikel dan tak mau ribet, saya merelakan wajah saya saja lah yang ditampilkan. 

Oh iya, kalau di antara Data Geek ada yang tertarik untuk berkolaborasi, jangan ragu untuk menghubungi saya.


Salam,


Mutia Ulfi

mutiaulfi@gmail.com

Latest articles

OUR TOP 5 CONTRIBUTOR

image description

Fajar Muharandy

-

image description

Fajar Jaman

-

image description

Bernardus Ari Kuncoro

-

image description

Rasyid Ridha

image description

ilyas ahsan

Mobile apps developer and Data Science Researcher