Panduan Singkat untuk Pengenalan Wajah Video dari R & D di BBC

Seringkali merupakan tugas yang dilakukan manusia tanpa berpikir yang membutuhkan beberapa proses paling rumit di belakang layar. Mencicipi makanan, mengobrol dengan teman, mendengarkan musik dan, memang, mengenali orang. Ketika Anda menonton episode Eastenders, Anda melihat aktor yang berbeda dalam pengaturan yang berbeda, dari sudut yang berbeda dan pencahayaan yang berbeda, tetapi seketika otak Anda menangani variasi ini untuk mengetahui bahwa itu adalah Dot Cotton dan Phil Mitchell dalam adegan tersebut. Karena kami tidak berpikir tentang pemrosesan yang terlibat, kami terkejut menemukan bahwa tugas-tugas ini jauh lebih kompleks daripada yang kami bayangkan ketika kami mencoba menerapkannya pada pembelajaran mesin.

Ambil gambar berikut dari Pangeran Harry dan Megan Markle di jalan. Kita dapat melihat Harry dan Megan dari sudut yang berbeda di sini - depan, samping dan belakang - namun kita dengan mudah mengenalinya dari ciri-cirinya: warna kulit, warna rambut, dan sebagainya. Kami juga mempertimbangkan isyarat sosial tertentu. Kerumunan memandangi mereka, mereka berpakaian bagus, mereka berada di tengah setiap tembakan dan ada kontinuitas yang jelas dari tembakan yang berasal dari adegan yang sama. Ada banyak lapisan intuisi manusia di sini yang cenderung tidak kita pikirkan ketika kita mendeteksi indikator budaya dan fisik.

Kami secara alami mengenali Harry dan Megan, terlepas dari berbagai sudut dalam bidikan ini

Jadi bagaimana kita mengajarkan komputer untuk belajar melakukan semua ini? Meskipun kita tidak bisa mendapatkan algoritma untuk berpikir seperti manusia, kita bisa mendapatkannya untuk melakukan apa yang paling baik dipelajari dengan mesin: mendeteksi pola dalam kumpulan data besar dan berlabel. Ini melibatkan pengumpulan gambar, pelatihan algoritma, pemrosesan video dan mengenali orang-orang di dalamnya. Hasil akhir adalah daftar orang yang dikenali dalam video bersama dengan waktu dan lokasi dalam bingkai yang mereka tampilkan.

Kami sudah berupaya membangun teknologi ini di BBC. Sistem kami, yang disebut FaceRec, sedang dikembangkan oleh Penelitian Internet dan Tim Data Layanan Masa Depan dalam Penelitian dan Pengembangan BBC (kami akan menyimpan beberapa penekanan tombol dan cukup memanggil mereka Tim Data mulai dari sini). Itu dibangun menggunakan kombinasi kode in-house dan perangkat lunak open-source eksternal - khususnya, Seetaface, mesin pengenalan wajah C ++.

FaceRec bekerja dengan memproses video melalui serangkaian langkah algoritmik, masing-masing memecahkan bagian spesifik dari keseluruhan masalah. Kami akan memberi Anda gambaran umum tentang cara kerjanya.

1. Deteksi tembakan

Agar setiap wajah terdeteksi dalam video, pertama-tama kita perlu memecah video menjadi bidikan konstituennya (bidikan didefinisikan sebagai serangkaian bingkai yang berjalan selama periode waktu tanpa gangguan). Untuk melakukan ini, FaceRec menggunakan pustaka pemrosesan media FFmpeg, yang menggunakan fungsi untuk mengembalikan waktu mulai dan berakhir semua pengambilan gambar dalam video yang diberikan.

2. Deteksi wajah

Langkah selanjutnya adalah memeriksa setiap bingkai untuk melihat apakah itu berisi wajah manusia. Ini adalah masalah yang rumit - haruskah kita mencoba mendeteksi setiap wajah pada pertandingan sepakbola? Apakah wajah pada kaos diperhitungkan? Apakah foto di depan surat kabar?

Iterasi melalui setiap pemotretan, FaceRec mengambil bingkai dari pemotretan dan mengumpankannya ke SeetaFace, yang kemudian mengembalikan kotak pembatas di tempat yang menurutnya adalah wajah. Mesin deteksi wajah SeetaFace mengetahui apakah wajah “cukup” untuk dimasukkan dalam outputnya. Harap dicatat bahwa SeetaFace tidak mengatakan siapa yang dianggap orang yang terdeteksi itu, hanya karena ia percaya bahwa ia telah mendeteksi wajah di lokasi tertentu di dalam bingkai.

3. Buat trek wajah

Sekarang setelah kami mengumpulkan semua bingkai yang berisi wajah, tugas selanjutnya adalah menjahit wajah-wajah yang terdeteksi ini untuk membuat trek wajah. Face-track adalah aliran kontinu dari kotak pembatas di sekitar wajah saat bergerak dalam bingkai foto.

FaceRec mengambil setiap kotak pembatas wajah dan mencoba memetakannya ke kotak pembatas logis berikutnya dalam bingkai berikut. Ini tidak selalu sepenuhnya jelas, karena wajah dapat dikaburkan untuk sementara waktu atau kotak yang saling mengikat dapat saling bersilangan saat satu orang bergerak di belakang yang lain.

Kotak terikat melacak wajah melalui tembakan

Di bawah tenda, masalah ini diselesaikan dengan menggunakan Dlib dan metode Lucas-Kanade. Ini menciptakan wajah-trek yang ditentukan oleh titik-waktu, daftar bingkai dan kotak pembatas wajah.

4. Buat vektor wajah untuk trek

Algoritma pembelajaran mesin sering bekerja dengan mengubah bahan input menjadi vektor matematika. Mereka kemudian belajar bagian mana dari "ruang vektor" ini yang termasuk kategori spesifik atau tipe input. Dalam hal wajah, mereka akan belajar bahwa vektor yang mewakili wajah Pangeran Harry cenderung berada di area tertentu, sementara vektor Megan cenderung berakhir di bagian yang berbeda. Anda juga akan berharap vektor-vektor wajah Pangeran William berada lebih dekat dalam ruang ini dengan Harry daripada dengan Megan, karena mereka terkait dan berbagi karakteristik yang sama.

Untuk membuat vektor untuk wajah yang terdeteksi, FaceRec menggunakan perpustakaan identifikasi wajah SeetaFace. FaceRec mengumpankan foto yang dipangkas dari wajah yang terdeteksi di dalam kotak pembatasnya dari titik tengah lintasan wajah. Ini menerima kembali vektor 2024 dimensi yang mewakili fitur wajah itu.

5. Kenali wajah orang-orang dalam vektor jalur-wajah

Kami sekarang memiliki vektor wajah untuk setiap trek wajah yang terdeteksi. Langkah selanjutnya adalah mengubah vektor-vektor ini menjadi nama sebenarnya dari wajah yang dikenali, serta menandai wajah yang tidak kita kenali (dan karena itu tidak dapat memberi label).

Pertanyaan pertama di sini adalah: siapa yang kita kenali? Kami pasti tidak dapat membangun model untuk mengenali semua orang yang pernah hidup - dan kami juga tidak mau. Jadi siapa yang kita anggap cukup penting untuk sistem pengenalan wajah ini?

Secara realistis, ini perlu didorong oleh para jurnalis di BBC News dan orang-orang yang paling sering mereka laporkan. Kita juga perlu menyadari bahwa orang tak dikenal membuat berita setiap hari, dan ketika mereka melakukannya, kita mungkin tidak memiliki foto mereka sebelumnya. Dengan batasan-batasan ini dalam pikiran, Tim Data berfokus terutama pada selebritas, para pemimpin internasional, politisi Inggris di Parlemen dan House of Lords ketika melatih FaceRec.

Untuk mengenali orang-orang ini, mereka perlu mengumpulkan data pelatihan tentang setiap orang - yaitu, banyak foto berlabel orang itu yang hanya berisi orang itu. Tim Data mengumpulkan ribuan foto dan kemudian membangun sistem front-end mereka sendiri untuk dengan mudah melihat dan memberi label pada masing-masing foto. Kebenaran yang tidak jelas dari pembelajaran mesin adalah bahwa mengumpulkan data yang berkualitas dan berlabel seringkali merupakan bagian yang paling mahal, melelahkan, dan penting dalam membangun sistem AI yang berfungsi dengan baik.

Setelah mengumpulkan foto-foto, Tim Data kemudian memasukkannya ke dalam klasifikasi pembelajaran mesin yang disebut mesin vektor dukungan untuk membuat model yang terlatih. Saat diumpankan vektor wajah dari SeetaFace, model ini memprediksi nama orang dalam gambar wajah asli atau mengatakan apakah mereka sama sekali tidak mengenali wajah.

IRFS menciptakan dua model:

  1. Model arsip: Orang-orang terkenal dari abad ke-20 dan seterusnya dipilih oleh orang-orang dari Arsip BBC. Model ini berisi sekitar 1.000 orang.
  2. Model berita: Masih dalam pengembangan, ini akan berkembang hingga mencakup lebih dari 2.000 anggota Parlemen Inggris dan majelis regional, House of Lords dan para pemimpin global. Gambar pelatihan bersumber dari BBC News, Factual, dan Drama.

Model-model yang terlatih ini kemudian digunakan untuk memprediksi orang-orang yang ada di trek wajah dalam video.

6. Jejak wajah klaster

Sekarang setelah semua face-track telah dilabeli, langkah terakhir adalah mengumpulkan semua track dari orang yang sama.

Untuk melakukan ini, kami menempatkan semua vektor wajah yang diekstraksi video ke dalam satu ruang vektor, yang kami sebut ruang wajah untuk bersenang-senang. Untuk memvisualisasikan ruang wajah kita dapat menggunakan alat yang disebut Tensorboard, bagian dari perpustakaan pembelajaran mesin Tensorflow.

Melihat ruang wajah ini, kami berharap bahwa vektor dari orang yang sama cukup dekat bersama dan cukup jauh dari orang lain sehingga kami dapat secara otomatis mengelompokkan mereka. Ini dikenal dalam pembelajaran mesin sebagai masalah pengelompokan.

Kita dapat melihat vektor jalur-wajah diproyeksikan ke ruang wajah ini untuk video Harry dan Megan di bawah ini. Dan kita melihat bahwa sebagian besar trek Megan dikelompokkan bersama, membuatnya mudah untuk dikelompokkan. Itulah satu cara kita tahu bahwa vektor wajah yang dibuat bekerja dengan baik.

Visualisasi wajah dengan TensorBoard

Mereka yang akrab dengan pengelompokan akan melihat kesulitan masalah pengelompokan wajah kita. Untuk setiap video, akan ada sejumlah cluster dengan ukuran yang berbeda-beda - dengan banyak vektor muncul sekali dan tidak termasuk cluster sama sekali.

Alih-alih jatuh ke lubang gelap dengan mencoba untuk menyelesaikan masalah ini dengan sempurna, Tim Data memutuskan untuk menjalankan dengan beberapa heuristik. FaceRec membagi masalah menjadi dua kategori terpisah: wajah orang yang dikenali dan wajah orang yang tidak diketahuinya. Untuk wajah yang dikenal, ia hanya mengelompokkan semua trek wajah bersama-sama yang memiliki label prediksi yang sama (nama). Untuk wajah yang tidak dikenali menggunakan teknik yang disebut hierarchical clustering atas vektor wajah untuk mengelompokkannya, tetapi tidak memberi mereka label.

7. Keluarkan info

Langkah terakhir untuk FaceRec adalah memberi makan semua informasi yang dikumpulkan di seluruh langkah yang berbeda. Ini datang dalam bentuk file JSON yang berisi:

Daftar trek dalam video. Untuk setiap lagu yang dimilikinya:

  • Orang yang diprediksi untuk trek itu
  • Keyakinan akan prediksi tersebut
  • Lacak UUID
  • Vektor wajah untuk trek itu
  • Daftar bingkai di trek itu

Dalam daftar bingkai, info pada setiap bingkai termasuk:

  • Vektor wajah untuk bingkai itu jika telah terdeteksi
  • Kotak batas koordinat untuk wajah
  • Waktu dalam video bingkai terjadi

Apa yang bisa kita lakukan dengan data ini? Anda dapat melihat posting blog kami berikutnya untuk melihat ide-ide kami.

Bungkus

Itu saja tentang itu. Semoga kami telah membantu Anda memahami banyak bagian yang masuk ke sistem pengenalan wajah video. Dan mungkin kami juga membuat Anda lebih sadar akan semua pengangkatan dan ambiguitas berat yang ditangani otak Anda sendiri ratusan kali sehari ketika mengenali teman dan orang yang Anda cintai.

Setelah memahami cara kerja sistem FaceRec, tugas untuk News Labs adalah melihat di mana teknologi ini dapat menambah nilai bisnis di dalam BBC. Bagaimana cara kami memamerkan kemampuan FaceRec dengan demo intuitif? Sistem produksi mana yang bisa kita lihat cocok dengan FaceRec? Masalah alur kerja siapa yang bisa dipecahkan? Dan yang penting, bagaimana perasaan orang tentang menggunakan pengenalan wajah? Kami berbicara tentang tantangan meluncurkan teknologi baru dalam organisasi besar dan pertanyaan yang kami hadapi ketika mengembangkan prototipe pengenalan wajah di "Pengenalan Wajah - Apa gunanya ke Ruang Berita?".