Panduan ringkas untuk Pengiktirafan Wajah Video BBC

Selalunya tugas manusia dilakukan tanpa berfikir bahawa memerlukan beberapa pemprosesan yang paling kompleks di belakang tabir. Makanan mencicipi, berbual dengan rakan-rakan, mendengar muzik dan, sesungguhnya, mengenali orang. Apabila anda menonton episod Eastenders, anda melihat pelakon yang berbeza dalam tetapan yang berbeza, dari sudut yang berbeza dan dalam pencahayaan yang berbeza, tetapi dengan serta-merta otak anda mengendalikan variasi ini untuk mengetahui bahawa ia adalah Dot Cotton dan Phil Mitchell di tempat kejadian. Kerana kita tidak berfikir tentang pemprosesan yang terlibat, kita terkejut apabila mendapati bahawa tugas-tugas ini jauh lebih rumit daripada yang kita sangka ketika kita cuba menerapkannya dalam pembelajaran mesin.

Ambil gambar berikut dari Prince Harry dan Megan Markle di jalan. Kita dapat melihat Harry dan Megan dari sudut yang berbeza di sini - depan, tepi dan belakang - namun kita dengan mudah mengenali mereka dari ciri-ciri mereka: warna kulit, warna rambut, dan sebagainya. Kami juga mengambil beberapa petunjuk sosial tertentu. Orang ramai melihat mereka, mereka berpakaian dengan baik, mereka berada di tengah setiap pukulan dan terdapat kesinambungan tembakan yang jelas dari tempat kejadian yang sama. Terdapat banyak lapisan intuisi manusia di sini kita cenderung tidak berfikir tentang ketika kita mengesan penanda budaya dan fizikal.

Kami secara semula jadi mengenali Harry dan Megan, walaupun sudut yang berbeza dalam tembakan ini

Jadi bagaimana kita mengajar komputer untuk belajar melakukan semua ini? Walaupun kita tidak dapat mendapatkan algoritma untuk berfikir seperti manusia, kita boleh mendapatkannya untuk melakukan apa yang dilakukan pembelajaran mesin yang terbaik: mengesan corak dalam dataset besar yang berlabel. Ini melibatkan pengumpulan imej, melatih algoritma, memproses video dan mengenali orang-orang di dalamnya. Keluaran akhir adalah senarai orang yang diiktiraf dalam video bersama dengan masa dan lokasi dalam bingkai yang dipaparkan.

Kami sudah berusaha membina teknologi ini di BBC. Sistem kami, yang dipanggil FaceRec, sedang dibangunkan oleh Pasukan Penyelidikan Internet dan Masa Depan Perkhidmatan Data Masa Depan dalam Penyelidikan dan Pembangunan BBC (kami akan menyimpan beberapa ketukan kekunci dan hanya memanggil mereka Pasukan Data dari sini untuk keluar). Ia dibina menggunakan kombinasi kod dalaman dan perisian sumber terbuka luar - terutamanya, Seetaface, enjin pengenalan muka C ++.

FaceRec berfungsi dengan memproses video melalui satu siri langkah algoritmik, masing-masing menyelesaikan sebahagian daripada masalah keseluruhan. Kami akan memberikan gambaran keseluruhan bagaimana ia berfungsi.

1. Mengesan tembakan

Untuk setiap wajah yang dikesan dalam video, kita perlu memecahkan video ke dalam tembakan konstituennya (tembakan ditakrifkan sebagai satu siri bingkai yang dijalankan untuk tempoh masa yang tidak terganggu). Untuk melakukan ini, FaceRec menggunakan perpustakaan pemprosesan media FFmpeg, yang menggunakan fungsi untuk mengembalikan semua permulaan dan masa tamat dalam video.

2. Mengesan muka

Langkah seterusnya adalah untuk memeriksa setiap bingkai untuk melihat sama ada ia mengandungi wajah manusia. Ini adalah masalah rumit - sekiranya kita cuba mengesan setiap wajah pada perlawanan bola sepak? Adakah wajah pada kaos t-shirt? Adakah gambar di hadapan akhbar?

Menggali melalui setiap pukulan, FaceRec mengambil bingkai dari pukulan dan memberi suapan ini kepada SeetaFace, yang kemudian mengembalikan kotak pembatas di mana ia memikirkan wajahnya. Enjin pengesanan wajah SeetaFace membezakan sama ada wajah "penting" untuk dimasukkan ke dalam outputnya. Sila ambil perhatian bahawa SeetaFace tidak mengatakan siapa yang difikirkan orang yang dikesan itu, semata-mata bahawa ia percaya bahawa ia telah mengesan wajah di lokasi tertentu dalam bingkai tersebut.

3. Buat trek wajah

Sekarang kita telah mengumpul semua bingkai yang mengandungi muka, tugas seterusnya adalah untuk mencetuskan wajah-wajah yang dikesan bersama-sama untuk mencipta muka. Ralat muka adalah aliran berterusan kotak-kotak di sekeliling wajah ketika ia bergerak dalam bingkai tembakan.

FaceRec mengambil setiap kotak terikat muka dan cuba memetakannya ke kotak sempadan logik seterusnya dalam bingkai berikut. Ini tidak selalunya jelas, kerana muka-muka yang boleh dikalahkan atau kotak-kotak sementara boleh menyeberang satu sama lain apabila seseorang bergerak di belakang yang lain.

Kotak terikat melacak wajah melalui pukulan

Di bawah hud, masalah ini diselesaikan dengan menggunakan kaedah Dlib dan Lucas-Kanade. Ini mewujudkan jejak muka yang ditakrifkan oleh titik masa, senarai bingkai dan kotak sempadan muka.

4. Buat vektor muka untuk trek

Algoritma pembelajaran mesin sering berfungsi dengan menukar bahan input ke vektor matematik. Mereka kemudian belajar bahagian mana dari "ruang vektor" ini tergolong dalam kategori tertentu atau jenis input. Dari segi wajah, mereka akan belajar bahawa vektor yang mewakili wajah Putera Harry cenderung berada di kawasan tertentu, sementara vektor Megan cenderung berakhir di bahagian yang berbeza. Anda juga akan mengharapkan vektor wajah Prince William berada lebih dekat di ruang ini kepada Harry daripada kepada Megan, kerana mereka berkaitan dan berkongsi ciri-ciri yang sama.

Untuk membuat vektor untuk muka yang dikesan, FaceRec menggunakan perpustakaan pengenalan wajah SeetaFace. FeedReadRec memberi suapan dalam foto yang dipotong wajah yang dikesan dalam kotak sempadan mereka dari titik tengah trek muka. Ia menerima kembali vektor 2024-dimensi yang mewakili ciri-ciri wajah itu.

5. Mengenali wajah manusia dalam vektor muka depan

Kami kini mempunyai vektor muka untuk setiap muka muka yang dikesan. Langkah seterusnya ialah mengubah vektor ini ke dalam nama sebenarnya wajah yang diiktiraf, dan juga menandakan muka yang tidak kami kenali (dan oleh itu tidak boleh dilabelkan).

Soalan pertama di sini ialah: siapa yang kita kenal? Kami pasti tidak dapat membina model untuk mengenali semua orang yang pernah hidup - dan juga tidak mahu. Jadi siapa yang kita anggap cukup penting untuk sistem pengenalan wajah ini?

Secara realistik, ini perlu didorong oleh para wartawan di BBC News dan orang yang paling sering mereka laporkan. Kami juga perlu sedar bahawa orang tidak dikenali membuat berita setiap hari, dan apabila mereka melakukannya, kami mungkin tidak mempunyai gambar sebelumnya. Dengan batasan-batasan ini, Pasukan Data difokuskan terutamanya kepada selebriti, pemimpin antarabangsa, ahli politik U.K di Parlimen dan Dewan Pertuanan ketika melatih FaceRec.

Untuk mengenali orang-orang ini, mereka perlu mengumpulkan data latihan pada setiap orang - iaitu, banyak foto berlabel orang itu yang mengandungi hanya orang itu. Pasukan Data mengumpul beribu-ribu gambar dan kemudian membina sistem front-front mereka sendiri dengan mudah melihat dan melabelkan gambar individu. Kebenaran unsexy pembelajaran mesin adalah bahawa mengumpul kualiti, data berlabel sering merupakan bahagian yang paling mahal, susah payah dan penting dalam membina sistem AI yang berfungsi dengan baik.

Setelah mengumpul gambar, Pasukan Data kemudian memberi mereka pengelas pembelajaran mesin yang disebut mesin vektor sokongan untuk mencipta model terlatih. Apabila memberi makan vektor muka dari SeetaFace, model-model ini meramalkan nama orang itu dalam imej muka asal atau mengatakan sama ada mereka tidak mengenali wajah sama sekali.

IRFS mencipta dua model:

  1. Model arkib: Orang terkenal dari abad ke-20 dan seterusnya dipilih oleh orang dari Arkib BBC. Model ini mengandungi kira-kira 1,000 orang.
  2. Model berita: Masih dalam pembangunan, ini akan berkembang untuk merangkumi lebih daripada 2,000 ahli Parlimen Inggeris dan majlis serantau, Dewan Pertuanan dan pemimpin global. Imej latihan diperoleh daripada BBC News, Fakta dan Drama.

Model terlatih ini kemudiannya digunakan untuk meramalkan mana orang berada dalam jejak muka dalam video.

6. Trek muka kumpulan

Sekarang bahawa semua trek muka telah dilabel, langkah terakhir adalah untuk mengumpul semua trek orang yang sama.

Untuk melakukan ini, kami meletakkan semua vektor muka yang diekstrak video ke dalam satu ruang vektor, yang akan kita panggil ruang muka untuk keseronokan. Untuk memvisualisasikan ruang muka kita boleh menggunakan alat yang dipanggil Tensorboard, sebahagian daripada perpustakaan pembelajaran mesin Tensorflow.

Melihat ruang muka ini, kami berharap bahawa vektor dari orang yang sama cukup rapat bersama dan jauh dari orang lain yang kita dapat secara automatik mengumpulkan mereka. Ini diketahui dalam pembelajaran mesin sebagai masalah kluster.

Kita dapat melihat vektor landasan muka yang diproyeksikan ke ruang muka ini untuk video Harry dan Megan di bawah. Dan kita melihat bahawa kebanyakan trek Megan dibungkus bersama-sama, menjadikannya mudah untuk cluster. Itulah satu cara yang kita tahu bahawa vektor wajah yang dihasilkan berfungsi dengan baik.

Menggambarkan wajah dengan TensorBoard

Mereka yang biasa dengan clustering akan melihat kesukaran menghadapi masalah clustering kami. Untuk setiap video, akan terdapat bilangan kluster yang berbeza-beza mengikut saiznya - dengan banyak vektor yang muncul sekali dan tidak mempunyai kluster sama sekali.

Daripada jatuh ke lubang gelap dengan berusaha menyelesaikan masalah ini dengan sempurna, Pasukan Data memutuskan untuk menjalankan dengan beberapa heuristik. FaceRec membahagikan masalah itu kepada dua kategori berasingan: wajah orang yang diiktiraf dan wajah orang yang tidak. Untuk wajah yang diiktiraf, ia hanya mengumpulkan semua jejak muka bersama yang mempunyai label yang diramalkan yang sama (nama). Untuk wajah yang tidak dikenali, ia menggunakan teknik yang disebut kluster hierarki ke atas vektor muka untuk mengelompokkannya, tetapi tidak memberi label kepada mereka.

7. Output maklumat

Langkah terakhir untuk FaceRec memberi makan semua maklumat yang dikumpulkan sepanjang langkah yang berbeza. Ini datang dalam bentuk fail JSON yang mengandungi:

Senarai trek dalam video. Untuk setiap trek ia mempunyai:

  • Orang yang diramalkan untuk trek itu
  • Keyakinan terhadap ramalan
  • Jejaki UUID
  • Wajah muka untuk trek itu
  • Senarai bingkai dalam trek itu

Dalam senarai bingkai, maklumat pada setiap bingkai termasuk:

  • Vektor muka untuk bingkai tersebut jika dikesan
  • Koordinat kotak terikat untuk muka
  • Masa dalam video bingkai berlaku

Apa yang boleh kita lakukan dengan data ini? Anda boleh menyemak postingan blog kami yang seterusnya untuk melihat idea kami.

Wrap-up

Itulah yang sebenarnya. Mudah-mudahan kami telah membantu anda memahami banyak bahagian yang masuk ke dalam sistem pengenalan muka video. Dan mungkin kami juga membuat anda lebih sedar tentang semua pengangkat berat dan kekaburan otak anda sendiri mengendalikan beratus-ratus kali sehari apabila mengenali rakan-rakan dan orang tersayang.

Selepas memahami kerja dalaman sistem FaceRec, tugas untuk Makmal Berita adalah untuk melihat di mana teknologi ini dapat menambah nilai perniagaan dalam BBC. Bagaimanakah kita menunjukkan kebolehan FaceRec dengan demo intuitif? Sistem pengeluaran yang manakah boleh kita lihat di FaceRec? Masalah aliran kerja siapa yang boleh menyelesaikannya? Dan yang penting, bagaimana perasaan orang tentang menggunakan pengenalan wajah? Kami bercakap tentang cabaran untuk melancarkan teknologi baru dalam organisasi besar dan soalan-soalan yang kami hadapi ketika membangunkan prototaip pengenalan wajah dalam "Pengiktirafan Wajah - Apa Penggunaannya ke Ruang Berita?".