Repositori ini berisi model terlatih yang dilaporkan dalam makalah "quo vadis, pengenalan tindakan? Model baru dan dataset kinetika" oleh Joao Carreira dan Andrew Zisserman. Makalah ini diposting di ARXIV pada Mei 2017, dan akan diterbitkan sebagai makalah konferensi CVPR 2017.
"Quo Vadis" memperkenalkan arsitektur baru untuk klasifikasi video, konvnet 3D yang meningkat atau I3D. Di sini kami merilis model I3D Inception-V1 yang dilatih pada perpecahan pelatihan Dataset Kinetics.
Dalam makalah kami, kami melaporkan hasil canggih pada dataset UCF101 dan HMDB51 dari menyempurnakan model-model ini. Model I3D yang dilatih sebelumnya tentang kinetika juga ditempatkan pertama di CVPR 2017 Charades Challenge.
Repositori juga sekarang termasuk pos pemeriksaan pra-terlatih menggunakan input RGB dan dilatih dari awal pada Kinetics-600.
BARU : Prosesing video yang kami gunakan sekarang telah bersumber terbuka oleh Google. Untuk mengaturnya, periksa instruksi ini dalam repo MediaPipe Google.
Penafian: Ini bukan produk Google resmi.
Pertama -tama ikuti instruksi untuk menginstal soneta.
Kemudian, klon repositori ini menggunakan
$ git clone https://github.com/deepmind/kinetics-i3d
Jalankan Contoh Kode Menggunakan
$ python evaluate_sample.py
Dengan bendera default, ini membangun model I3D dua aliran, memuat pos pemeriksaan I3D yang sudah terlatih ke dalam sesi TensorFlow, dan kemudian menyampaikan contoh video melalui model. Contoh video telah diproses sebelumnya, dengan RGB dan array Numpy aliran yang disediakan (lihat lebih detail di bawah).
Script mengeluarkan norma dari logit tensor, serta 20 kelas kinetika teratas yang diprediksi oleh model dengan probabilitas dan nilai logit mereka. Menggunakan flag default, output harus menyerupai perbedaan hingga perbedaan dalam presisi numerik:
Norm of logits: 138.468643
Top classes and probabilities
1.0 41.8137 playing cricket
1.49716e-09 21.494 hurling (sport)
3.84312e-10 20.1341 catching or throwing baseball
1.54923e-10 19.2256 catching or throwing softball
1.13602e-10 18.9154 hitting baseball
8.80112e-11 18.6601 playing tennis
2.44157e-11 17.3779 playing kickball
1.15319e-11 16.6278 playing squash or racquetball
6.13194e-12 15.9962 shooting goal (soccer)
4.39177e-12 15.6624 hammer throw
2.21341e-12 14.9772 golf putting
1.63072e-12 14.6717 throwing discus
1.54564e-12 14.6181 javelin throw
7.66915e-13 13.9173 pumping fist
5.19298e-13 13.5274 shot put
4.26817e-13 13.3313 celebrating
2.72057e-13 12.8809 applauding
1.8357e-13 12.4875 throwing ball
1.61348e-13 12.3585 dodgeball
1.13884e-13 12.0101 tap dancing
File uji dapat dijalankan menggunakan
$ python i3d_test.py
Ini memeriksa bahwa model dapat dibangun dengan benar dan menghasilkan bentuk yang benar.
Model default telah dilatih sebelumnya di Imagenet dan kemudian kinetika; Bendera lain memungkinkan untuk memuat model yang hanya dilatih hanya pada kinetika dan untuk memilih hanya RGB atau aliran aliran. Script multi_evaluate.sh
menunjukkan cara menjalankan semua kombinasi ini, menghasilkan output sampel di direktori out/
.
data/checkpoints
direktori berisi empat pos pemeriksaan yang dilatih. Yang baru saja dilatih pada kinetika diinisialisasi menggunakan inisialisasi soneta / TensorFlow default, sedangkan yang pra-terlatih di ImageNet diinisialisasi dengan bootstrap filter dari model 2D Inception-V1 ke dalam 3D, seperti yang dijelaskan dalam kertas. Yang penting, aliran RGB dan aliran dilatih secara terpisah, masing -masing dengan kehilangan klasifikasi softmax. Selama waktu pengujian, kami menggabungkan dua aliran dengan menambahkan logit dengan bobot yang sama, seperti yang ditunjukkan pada kode evalute_sample.py
.
Kami berlatih menggunakan SGD sinkron menggunakan tf.train.SyncReplicasOptimizer
. Untuk masing -masing aliran RGB dan aliran, kami berkumpul di 64 replika dengan 4 replika cadangan. Selama pelatihan, kami menggunakan 0,5 putus sekolah dan menerapkan Batchnorm, dengan ukuran minibatch 6. Pengoptimal yang digunakan adalah SGD dengan nilai momentum 0,9, dan kami menggunakan pembusukan berat 1E-7. Model RGB dan aliran dilatih masing -masing untuk 115K dan 155K langkah, dengan jadwal tingkat pembelajaran berikut.
RGB:
Mengalir:
Ini karena model aliran ditentukan untuk membutuhkan lebih banyak pelatihan setelah menjalankan awal langkah 115 ribu.
Model dilatih menggunakan perpecahan pelatihan kinetika. Pada set Tes Kinetika, kami memperoleh akurasi Top-1 / Top-5 berikut:
Model | Imagenet + Kinetika | Kinetika |
---|---|---|
RGB-I3D | 71.1 / 89.3 | 68.4 / 88.0 |
Flow-i3d | 63.4 / 84.9 | 61.5 / 83.4 |
I3d dua aliran | 74.2 / 91.3 | 71.6 / 90.0 |
Rilis Dataset Kinetika DeepMind hanya menyertakan ID YouTube dan waktu awal dan akhir klip. Untuk data sampel di sini, kami menggunakan video dari dataset UCF101, yang mana semua video disediakan secara penuh. Video yang digunakan adalah v_CricketShot_g04_c01.mp4
yang dapat diunduh dari situs web UCF101.
Preprocessing kami menggunakan perpustakaan internal, yang sekarang telah menjadi open-source check google mediapipe repo. Ini melakukan hal berikut: Untuk kedua aliran, kami mencicipi frame pada 25 frame per detik. Untuk kinetika, kami juga memotong video di awal dan akhir yang disediakan.
Untuk RGB, video tersebut diubah ukurannya rasio aspek pelestarian sehingga dimensi terkecil adalah 256 piksel, dengan interpolasi bilinear. Nilai piksel kemudian dihapuskan antara -1 dan 1. Selama pelatihan, kami secara acak memilih tanaman gambar 224x224, sementara selama pengujian, kami memilih tanaman gambar Center 224x224 dari video. File .npy
yang disediakan dengan demikian memiliki bentuk (1, num_frames, 224, 224, 3)
untuk RGB, sesuai dengan ukuran batch 1.
Untuk aliran aliran, setelah mencicipi video pada 25 frame per detik, kami mengonversi video menjadi skala abu -abu. Kami menerapkan algoritma aliran optik TV-L1, mirip dengan kode ini dari OpenCV. Nilai piksel dipotong ke kisaran [-20, 20], kemudian diselesaikan antara -1 dan 1. Kami hanya menggunakan dua dimensi output pertama, dan menerapkan pemangkasan yang sama seperti untuk RGB. File .npy
yang disediakan dengan demikian memiliki bentuk (1, num_frames, 224, 224, 2)
untuk aliran, sesuai dengan ukuran batch 1.
Berikut adalah GIF yang menunjukkan file .npy
yang disediakan. Dari data RGB, kami menambahkan 1 dan kemudian dibagi dengan 2 ke rescale antara 0 dan 1. Untuk data aliran, kami menambahkan saluran ketiga dari semua 0, kemudian menambahkan 0,5 ke seluruh array, sehingga hasilnya juga antara 0 dan 1.
Untuk detail tambahan tentang preprocessing, periksa ini, lihat makalah kami atau hubungi penulis.
Brian Zhang, Joao Carreira, Viorica Patraucean, Diego de Las Casas, Chloe Hillier, dan Andrew Zisserman membantu mempersiapkan rilis awal ini. Kami juga ingin mengucapkan terima kasih kepada tim di balik dataset kinetika dan makalah awal yang asli yang menjadi dasar arsitektur dan kode ini.
Untuk berkontribusi pada repositori ini, pertama -tama Anda harus menandatangani Perjanjian Lisensi Kontributor Google (CLA), yang disediakan dalam file Contributing.md. Kami kemudian akan dapat menerima permintaan tarik apa pun, meskipun saat ini tidak bertujuan untuk memperluas ke model terlatih lainnya.
Untuk pertanyaan apa pun, Anda dapat menghubungi penulis kertas "quo vadis", yang emailnya terdaftar di koran.