Mendeteksi wajah tertentu dalam database gambar wajah

110

Saya sedang mengerjakan proyek kecil yang melibatkan wajah pengguna twitter melalui foto profil mereka.

Masalah yang saya temui adalah bahwa setelah saya memfilter semua kecuali gambar yang merupakan foto potret yang jelas, sebagian kecil tapi signifikan pengguna twitter menggunakan gambar Justin Bieber sebagai gambar profil mereka.

Untuk memfilternya, bagaimana saya bisa tahu secara terprogram apakah gambar Justin Bieber?

ʞɔıu
sumber
17
Apa platform pengembangan Anda? Ini dapat dengan mudah dilakukan dalam. NET karena lebih unggul dari semua lingkungan pemrograman lainnya. Cukup panggil fungsi Page.EradicateBieber (). Microsoft meramalkan kebutuhan ini dan dengan ramah menyediakannya untuk kami di luar kotak di .NET 4.5. (Kalian yang berada di versi yang lebih lama harus menunggu.) (Itu, tentu saja, semua bermuka masam.)
32
Saya pikir saya dapat dengan aman menyatakan bahwa SO tidak perlu [justin-bieber]tag.
skaffman
2
Saya dapat dengan aman menyatakan bahwa orang-orang membelanjakan lebih banyak suara untuk komentar dan pertanyaan ini daripada opsi penutupan (opsi yang pantas mendapatkan suara).
20
Filter audio Justin Bieber juga bagus

Jawaban:

49

Gagasan yang lebih baik mungkin untuk membuang semua gambar yang muncul di umpan lebih dari satu pengguna - tidak diperlukan pengenalan.

PPPPPP
sumber
2
Ya, mungkin menetapkan ambang 2-4 kemungkinan duplikasi (untuk menangani kasing bayi baru) sebelum Anda menolak foto. Tergantung pada apa yang akan Anda lakukan dengan foto, kurasa.
Mark Bessey
3
Solusi sederhana dan elegan. +1.
Robert Harvey
13
Orang dapat menggunakan gambar berbeda dari orang yang sama.
Rebecca Chernoff
(+1) di Rebecca dan (-1) @ PPPPPP: Ini hanya menggeser masalah.
steffen
4
Mereka bisa, tetapi dalam kebanyakan kasus mereka akan memilih dari kumpulan gambar yang relatif kecil, jadi mungkin masih bekerja. Kasing tepi terkutuk - untuk semua Anda tahu gambar saya adalah paman saya.
naught101
16

Saya merasa bahwa http://www.tineye.com/commercial_api dapat menjadi solusi di sini. Cukup lempar gambar profil Twitter ke Tineye, lihat apakah itu mengembalikan gambar (dan URL terkait) yang dapat dengan jelas diidentifikasi (atau secara otomatis dinilai menggunakan logika penghitungan kata sederhana) yang terkait dengan (atau) sedikit karung * *.

Sederhana!

Benjamin Howarth
sumber
1
Google mengumumkan pencarian gambar baru-baru ini: youtube.com/watch?v=t99BfDnBZcI Saya belum tahu apakah ia memiliki API, tetapi itu mungkin alternatif.
petrichor
11

Karena Anda dapat memfilter hanya pada foto potret yang jernih, saya mengasumsikan Anda memiliki beberapa metode pembuatan fitur untuk mengubah gambar mentah menjadi fitur yang berguna untuk tujuan pembelajaran mesin. Jika itu benar, Anda bisa mencoba untuk melatih algoritma klasifikasi (ada banyak dari mereka: jaringan saraf, dll) dengan memberi makan algoritma sekelompok foto Bieber yang dikenal serta sekelompok non-Biebers yang dikenal. Setelah Anda melatih modelnya, ini dapat digunakan untuk memprediksi apakah gambar baru adalah Bieber atau tidak.

Teknik pembelajaran semacam ini memang mengharuskan Anda untuk memiliki data di mana Anda tahu jawaban yang benar (Bieber atau tidak), tetapi itu mungkin dapat ditemukan dari pencarian gambar Google. Ini juga mengharuskan Anda memiliki jenis fitur yang tepat, dan saya tidak cukup tahu tentang pemrosesan gambar atau algoritma Anda untuk mengetahui apakah itu merupakan kelemahan utama.

Michael McGowan
sumber
2
Sayangnya, langkah pembuatan fitur adalah yang paling sulit dan paling penting :(.
steffen
@steffen Ada beberapa saran bahwa OP mengacaukan wajah-wajah, jadi mintalah beberapa generator deskriptor.
@mpq: Saya tidak ragu bahwa, jika OP tidak memiliki satu fitur per piksel, maka ia harus menemukan tingkat agregasi yang bermakna. Saya tidak downvote, saya hanya ingin menunjukkan kompleksitas yang ada di balik jawaban ini (yang, tentu saja, benar).
steffen
1
Benar, langkah pembuatan fitur adalah bagian yang sulit. Saya berasumsi OP dapat melakukan ini karena dia sudah memiliki mekanisme untuk memproses gambar. Bahkan jika dia melakukannya, mereka mungkin hanya fitur yang berguna untuk mendeteksi wajah / bukan wajah, bukannya Bieber / bukan Bieber ... itu benar-benar tergantung pada fitur.
Michael McGowan
7

Anda dapat menggunakan metode seperti eigenfaces, http://en.wikipedia.org/wiki/Eigenface . Berikut ini adalah langkah-langkah yang baik dari prosedur serta tautan ke berbagai implementasi.

http://www.pages.drexel.edu/~sis26/Eigenface%20Tutorial.htm

Dari sini lazim untuk menggunakan ini dalam pendekatan klasifikasi, melatih model dan kemudian memprediksi kasus. Anda bisa melakukan ini dengan melatih sekelompok selebriti yang dikenal dan jika Anda memprediksi wajah dari twitter sebagai salah satu model selebriti yang terlatih, hapus saja. Mirip dengan ini http://blog.cordiner.net/2010/12/02/eigenfaces-face-recognition-matlab/

Ini menderita dari amandemen yang konstan. Segera akan ada Justin Bieber baru yang tidak akan menjadi model terlatih Anda, sehingga Anda tidak dapat memprediksinya. Ada juga kasus seperti Whitney Houston, Anda mungkin tidak pernah berpikir untuk menambahkannya sebelumnya, tetapi ia mungkin merupakan citra umum karena rasa hormat dan kekaguman selama beberapa minggu. Anda tidak akan memiliki kekurangan gambar bayi seperti yang disebutkan di atas. Untuk mengatasi masalah ini, Anda dapat menggunakan lebih dari pendekatan pengelompokan hierarkis. Menghapus beberapa set cluster yang sangat dekat jika mereka mencapai tingkat dukungan tertentu, cluster pertama Anda memiliki 15 item sebelum yang kedua dibangun. Sekarang Anda tidak perlu khawatir tentang yang ada dalam model pelatihan Anda tetapi Anda akan jatuh ke masalah gambar bayi.

darrelkj
sumber
3

Anda harus menggunakan algoritme yang mendeteksi orang yang dimaksud gambar. Anda dapat membangun model berdasarkan gambar potret berbeda dari kepribadian terkenal dan menggunakan pengklasifikasi untuk memastikan bahwa gambar ini merujuk ke salah satu gambar basis data Anda. Anda perlu menggunakan classifier tertentu berdasarkan pada berbagai parameter yang disukai wajah, seperti jarak antara mata atau parameter lainnya untuk meningkatkan akurasi model Anda. Ada juga analisis kulit. Yang paling penting adalah membangun classifier yang baik. Metode ini bisa rentan.

Tetapi ada juga proyek yang sangat bagus yang bekerja pada pengenalan wajah http://opencv-code.com/Opencv_Face_Detection

404Dreamer_ML
sumber
1
AFAIK OpenCV dan situs tertaut hanya menerapkan deteksi wajah (di sini ada gambar wajah manusia?) Yang hanya merupakan langkah pertama menuju pengenalan wajah (wajah siapa itu?)
f3lix
2

Anda dapat mencoba hashing sensitif lokalitas .

Xodarap
sumber
1
KNN polos tidak baik untuk wajah. Wajah telah terbukti terletak pada ragam gambar nonlinier ~ 25 dimensi.
bayerj