Connect with us

Pemimpin pemikiran

Menggunakan AI untuk Pemrosesan Video Waktu Nyata: Dasar dan Lebih

mm

By Maksym Tatariants, Data Science Engineer at MobiDev.

Tidak ada yang baru tentang menggunakan kecerdasan buatan (AI) dalam pemrosesan video. Jika Anda melihat diluar pemrosesan gambar—ini adalah salah satu kasus penggunaan paling umum untuk AI. Dan sama seperti pemrosesan gambar, pemrosesan video menggunakan teknik yang mapan seperti computer vision, pengenalan objek, pembelajaran mesin, dan pembelajaran dalam untuk meningkatkan proses ini. 

Apakah Anda menggunakan computer vision dan NLP dalam pemrosesan video dan generasi, pengenalan objek dalam penandaan otomatis konten video tugas, pembelajaran mesin untuk mempermudah analisis video AI, atau pembelajaran dalam untuk mempercepat pemrosesan waktu nyata penghapusan latar belakang, kasus penggunaan terus tumbuh setiap hari.

Terus membaca untuk mempelajari pendekatan apa yang dapat Anda ambil ketika datang ke menggunakan AI dalam pemrosesan video.

Dasar Pemrosesan Video Waktu Nyata

Mari kita mulai dengan dasar-dasarnya. Pemrosesan video waktu nyata adalah teknologi penting dalam sistem pengawasan menggunakan pengenalan objek dan wajah. Ini juga merupakan proses yang memungkinkan perangkat lunak inspeksi visual AI di sektor industri.

Jadi, bagaimana cara kerja pemrosesan video? Pemrosesan video melibatkan serangkaian langkah, yang mencakup dekoding, komputasi, dan pengkodean. Berikut yang perlu Anda ketahui:

  • Dekoding: Proses yang diperlukan untuk mengubah video dari file terkompresi kembali ke format mentahnya.
  • Komputasi: Operasi tertentu yang dilakukan pada bingkai video mentah.
  • Pengkodean: Proses mengubah kembali bingkai yang diproses ke keadaan terkompresi aslinya.

Sekarang, tujuan dari setiap tugas pemrosesan video adalah untuk menyelesaikan langkah-langkah ini secepat dan seakurat mungkin. Cara termudah untuk melakukan ini termasuk: bekerja secara paralel dan mengoptimalkan algoritma untuk kecepatan. Dalam kata sederhana? Anda perlu memanfaatkan pembagian file dan arsitektur pipa.

Apa itu Pembagian File Video?

Pembagian file video memungkinkan algoritma bekerja secara bersamaan, memungkinkan mereka menggunakan model yang lebih akurat dan lebih lambat. Ini dicapai dengan membagi video menjadi bagian-bagian terpisah yang kemudian diproses secara bersamaan.

Anda dapat memikirkan pembagian video sebagai bentuk generasi file virtual daripada generasi sub-file. 

Meskipun demikian, pembagian file video bukanlah pilihan terbaik untuk pemrosesan video waktu nyata. Mengapa? Proses ini membuatnya sulit untuk Anda menjeda, melanjutkan, dan memutar kembali file sementara diproses.

Apa itu Arsitektur Pipa?

Opsi lainnya adalah arsitektur pipa. Proses ini bekerja untuk membagi dan memparalelisasi tugas yang dilakukan selama pemrosesan, bukan pembagian video secara langsung.

Berikut contoh singkat tentang apa yang terlihat seperti arsitektur pipa dalam prakteknya, dan bagaimana itu dapat digunakan dalam sistem pengawasan video untuk mendeteksi dan mengaburkan wajah secara waktu nyata.

Dalam contoh ini, pipa telah membagi tugas menjadi dekoding, deteksi wajah, pengaburan wajah, dan pengkodean. Dan jika Anda ingin meningkatkan kecepatan pipa, Anda dapat menggunakan teknik pembelajaran dalam pipa.

Dekoding dan Pengkodean Dijelaskan

Apa tentang dekoding dan pengkodean? Ada dua cara Anda menyelesaikan proses ini: perangkat lunak dan perangkat keras.

Anda mungkin sudah familiar dengan konsep percepatan perangkat keras. Proses ini dimungkinkan berkat dekoder dan pengkode yang dipasang di kartu grafis NVIDIA terbaru, serta CUDA core.

Jadi, apa pilihan yang Anda miliki untuk percepatan perangkat keras untuk proses pengkodean dan dekoding? Berikut beberapa pilihan populer:

  • Kompilasi OpenCV Dengan Dukungan CUDA: Mengompilasi OpenCV dengan CUDA mengoptimalkan baik dekoding dan perhitungan pipa yang menggunakan OpenCV. Perlu diingat—Anda perlu menulisnya dalam C++ karena wrapper Python tidak mendukung ini. Tapi dalam situasi yang memerlukan baik dekoding dan perhitungan numerik dengan GPU tanpa menyalin dari memori CPU, ini masih salah satu pilihan terbaik yang tersedia.
  • Kompilasi FFmpeg atau GStreamer dengan Dukungan Kodek NVDEC/NVENC: Opsi lainnya adalah menggunakan dekoder dan pengkode NVIDIA bawaan yang disertakan dengan instalasi khusus FFmpeg dan Gstreamer. Namun, kami sarankan menggunakan FFmpeg jika memungkinkan karena memerlukan perawatan yang lebih sedikit. Juga, sebagian besar perpustakaan didukung oleh FFmpeg, yang berarti Anda akan secara otomatis meningkatkan kinerja perpustakaan dengan menggantinya.
  • Gunakan Kerangka Pemrosesan Video NVIDIA: Opsi terakhir adalah menggunakan wrapper Python untuk mendekode bingkai langsung ke tensor PyTorch di GPU. Opsi ini menghilangkan penyalinan ekstra dari CPU ke GPU.

Deteksi dan Pengaburan Wajah

Model deteksi objek (SSDs atau RetinaFace) adalah pilihan populer untuk menyelesaikan deteksi wajah. Solusi ini bekerja untuk menemukan wajah manusia dalam bingkai. Dan berdasarkan pengalaman kami, kami cenderung lebih memilih model pelacakan wajah Caffe dan model deteksi objek TensorFlow karena mereka memberikan hasil terbaik. Selain itu, keduanya tersedia menggunakan perpustakaan dnn OpenCV.

Jadi, apa yang terjadi setelah wajah terdeteksi? Berikutnya, sistem Python dan OpenCV-based akan mengungkap kotak pembatas dan kepercayaan deteksi. Terakhir, algoritma pengaburan diterapkan pada area yang dipotong.

Bagaimana Anda Dapat Membangun Perangkat Lunak Pemrosesan Video Langsung yang Dipimpin AI?

Tidak ada rahasia bahwa pemrosesan video, kodek yang memungkinkannya, dan perangkat keras serta perangkat lunak yang diperlukan cukup teknis.

Namun, itu tidak berarti Anda tidak dapat menggunakan alat ini untuk membangun perangkat lunak pemrosesan video langsung Anda sendiri. 

Berikut ringkasan singkat tentang apa yang perlu Anda lakukan:

  1. Mulai dengan menyesuaikan jaringan neural pra-terlatih Anda untuk menyelesaikan tugas yang diperlukan.
  2. Konfigurasikan infrastruktur cloud Anda untuk menangani pemrosesan video dan skala sesuai kebutuhan.
  3. Bangun lapisan perangkat lunak untuk mengompresi proses dan mengintegrasikan kasus penggunaan khusus seperti aplikasi seluler dan panel admin atau web.

Mengembangkan MVP untuk perangkat lunak pemrosesan video serupa dapat memakan waktu hingga empat bulan menggunakan jaringan neural pra-terlatih dan lapisan aplikasi sederhana. Namun, cakupan dan timeline tergantung pada detail proyek. Dalam sebagian besar kasus, masuk akal untuk memulai dengan pengembangan Konsep Bukti untuk mengeksplorasi detail proyek dan menemukan aliran optimal.

Maksym sangat antusias untuk memperoleh wawasan dan pengalaman baru dalam Data Science dan Machine Learning. Ia tertarik khusus pada teknologi berbasis Deep Learning dan penerapannya pada kasus penggunaan bisnis.