Klasifikasi video adalah tugas pembelajaran mesin untuk mengidentifikasi apa yang diwakili oleh video. Model klasifikasi video dilatih pada kumpulan data video yang berisi sekumpulan kelas unik, seperti tindakan atau gerakan yang berbeda. Model menerima frame video sebagai input dan output probabilitas setiap kelas yang diwakili dalam video.
Klasifikasi video dan model klasifikasi gambar keduanya menggunakan gambar sebagai input untuk memprediksi probabilitas gambar-gambar yang termasuk dalam kelas yang telah ditentukan sebelumnya. Namun, model klasifikasi video juga memproses hubungan spasial-temporal antara bingkai yang berdekatan untuk mengenali tindakan dalam video.
Misalnya, model pengenalan tindakan video dapat dilatih untuk mengidentifikasi tindakan manusia seperti berlari, bertepuk tangan, dan melambai. Gambar berikut menunjukkan output dari model klasifikasi video di Android.
Memulai
Jika Anda menggunakan platform selain Android atau Raspberry Pi, atau jika Anda sudah terbiasa dengan TensorFlow Lite API , unduh model klasifikasi video pemula dan file pendukungnya. Anda juga dapat membuat pipeline inferensi kustom Anda sendiri menggunakan Pustaka Dukungan TensorFlow Lite .
Unduh model pemula dengan metadata
Jika Anda baru menggunakan TensorFlow Lite dan bekerja dengan Android atau Raspberry Pi, jelajahi contoh aplikasi berikut untuk membantu Anda memulai.
Android
Aplikasi Android menggunakan kamera belakang perangkat untuk klasifikasi video berkelanjutan. Inferensi dilakukan menggunakan TensorFlow Lite Java API . Aplikasi demo mengklasifikasikan frame dan menampilkan klasifikasi yang diprediksi secara real time.
Raspberry Pi
Contoh Raspberry Pi menggunakan TensorFlow Lite dengan Python untuk melakukan klasifikasi video berkelanjutan. Hubungkan Raspberry Pi ke kamera, seperti Pi Camera, untuk melakukan klasifikasi video real-time. Untuk melihat hasil dari kamera, sambungkan monitor ke Raspberry Pi dan gunakan SSH untuk mengakses shell Pi (untuk menghindari menghubungkan keyboard ke Pi).
Sebelum memulai, atur Raspberry Pi Anda dengan Raspberry Pi OS (sebaiknya diperbarui ke Buster).
Deskripsi model
Jaringan Video Seluler ( MoViNets ) adalah keluarga model klasifikasi video efisien yang dioptimalkan untuk perangkat seluler. MoViNets mendemonstrasikan akurasi dan efisiensi mutakhir pada beberapa set data pengenalan aksi video skala besar, menjadikannya sangat cocok untuk tugas pengenalan aksi video .
Ada tiga varian model MoviNet untuk TensorFlow Lite: MoviNet-A0 , MoviNet-A1 , dan MoviNet-A2 . Varian ini dilatih dengan dataset Kinetics-600 untuk mengenali 600 tindakan manusia yang berbeda. MoviNet-A0 adalah yang terkecil, tercepat, dan paling tidak akurat. MoviNet-A2 adalah yang terbesar, paling lambat, dan paling akurat. MoviNet-A1 adalah kompromi antara A0 dan A2.
Bagaimana itu bekerja
Selama pelatihan, model klasifikasi video diberikan video dan label terkaitnya . Setiap label adalah nama dari konsep, atau kelas yang berbeda, yang akan dipelajari oleh model untuk dikenali. Untuk pengenalan tindakan video , video akan menjadi tindakan manusia dan label akan menjadi tindakan yang terkait.
Model klasifikasi video dapat belajar untuk memprediksi apakah video baru termasuk dalam salah satu kelas yang disediakan selama pelatihan. Proses ini disebut inferensi . Anda juga dapat menggunakan pembelajaran transfer untuk mengidentifikasi kelas video baru dengan menggunakan model yang sudah ada sebelumnya.
Modelnya adalah model streaming yang menerima video terus menerus dan merespons secara real time. Saat model menerima aliran video, model tersebut mengidentifikasi apakah salah satu kelas dari set data pelatihan terwakili dalam video. Untuk setiap frame, model mengembalikan kelas-kelas ini, bersama dengan probabilitas bahwa video mewakili kelas tersebut. Contoh output pada waktu tertentu mungkin terlihat sebagai berikut:
Tindakan | Kemungkinan |
---|---|
menari persegi | 0,02 |
jarum ulir | 0,08 |
memutar-mutar jari | 0,23 |
Melambaikan tangan | 0,67 |
Setiap tindakan dalam output sesuai dengan label dalam data pelatihan. Probabilitas menunjukkan kemungkinan tindakan ditampilkan dalam video.
Masukan model
Model menerima aliran frame video RGB sebagai input. Ukuran video input fleksibel, tetapi idealnya cocok dengan resolusi pelatihan model dan kecepatan bingkai:
- MoviNet-A0 : 172 x 172 pada 5 fps
- MoviNet-A1 : 172 x 172 pada 5 fps
- MoviNet-A1 : 224 x 224 pada 5 fps
Video masukan diharapkan memiliki nilai warna dalam kisaran 0 dan 1, mengikuti konvensi masukan gambar umum .
Secara internal, model juga menganalisis konteks setiap frame dengan menggunakan informasi yang dikumpulkan dalam frame sebelumnya. Ini dicapai dengan mengambil status internal dari output model dan memasukkannya kembali ke dalam model untuk frame yang akan datang.
Keluaran model
Model mengembalikan serangkaian label dan skor yang sesuai. Skor adalah nilai logit yang mewakili prediksi untuk setiap kelas. Skor ini dapat dikonversi ke probabilitas dengan menggunakan fungsi softmax ( tf.nn.softmax
).
exp_logits = np.exp(np.squeeze(logits, axis=0))
probabilities = exp_logits / np.sum(exp_logits)
Secara internal, output model juga menyertakan status internal dari model dan memasukkannya kembali ke dalam model untuk frame yang akan datang.
Tolok ukur kinerja
Angka benchmark kinerja dihasilkan dengan alat benchmarking . MoviNets hanya mendukung CPU.
Performa model diukur dengan jumlah waktu yang dibutuhkan model untuk menjalankan inferensi pada perangkat keras tertentu. Waktu yang lebih rendah menyiratkan model yang lebih cepat. Akurasi diukur dengan seberapa sering model mengklasifikasikan kelas dalam video dengan benar.
Nama model | Ukuran | Akurasi * | Perangkat | CPU ** |
---|---|---|---|---|
MoviNet-A0 (Terkuantisasi bilangan bulat) | 3,1 MB | 65% | Piksel 4 | 5 ms |
Piksel 3 | 11 ms | |||
MoviNet-A1 (Terkuantisasi bilangan bulat) | 4,5 MB | 70% | Piksel 4 | 8 ms |
Piksel 3 | 19 mdtk | |||
MoviNet-A2 (Terkuantisasi bilangan bulat) | 5.1 MB | 72% | Piksel 4 | 15 mdtk |
Piksel 3 | 36 mdtk |
* Akurasi Top-1 diukur pada dataset Kinetics-600 .
** Latensi diukur saat berjalan pada CPU dengan 1-utas.
Kustomisasi model
Model pra-pelatihan dilatih untuk mengenali 600 tindakan manusia dari kumpulan data Kinetics-600 . Anda juga dapat menggunakan pembelajaran transfer untuk melatih kembali model untuk mengenali tindakan manusia yang tidak ada di set aslinya. Untuk melakukan ini, Anda memerlukan satu set video pelatihan untuk setiap tindakan baru yang ingin Anda masukkan ke dalam model.
Untuk mengetahui lebih lanjut tentang menyempurnakan model pada data khusus, lihat repo MoViNets dan tutorial MoViNets .
Bacaan dan sumber lebih lanjut
Gunakan sumber daya berikut untuk mempelajari lebih lanjut tentang konsep yang dibahas di halaman ini: