Teknologi Pencarian Video Berwarna Video

Sedikit tentang pencarian



Ketika kita berbicara tentang pencarian, kita langsung membayangkan mesin pencari Google dengan formulir untuk memasukkan string teks dan ratusan hasil link ke halaman yang ditemukan. Namun, mari kita pikirkan tentang subjek pencarian kita.



Apa yang kami cari?



  • Teks
  • Dokumen
  • Halaman HTML
  • Gambar-gambar
  • Audio
  • Video
  • File biner


Untuk beberapa jenis data, terdapat mesin pencari khusus. Misalnya, ada situs yang mengkhususkan diri dalam menemukan file DLL.



Cari video







Mari kita lihat mencari informasi video. Bagaimana Anda bisa melakukan ini? Murni dalam teori?



  • Menurut teks
  • Dengan gambar
  • Pada klip video pendek
  • Dengan fragmen audio pendek


Keadaan saat ini



Mesin pencari



  • Google
  • Microsoft
  • Yandex


Saya menamai tiga mesin pencari terbesar dan semuanya memungkinkan Anda untuk mencari video berdasarkan teks dan gambar.



gambar



Kekurangan mesin pencari modern



Sayangnya, mereka semua mengalami masalah berikut:



  • Nama pasti dari video yang ditemukan tidak selalu tersedia. Sebaliknya, aktor dapat ditentukan dengan benar dan gambar lain dari dirinya disajikan.
  • Tidak ada indikasi pasti tentang posisi dalam video tersebut. Dan ini adalah informasi yang sangat berguna.


gambar



Ya itu. Cobalah sendiri dan Anda akan melihat bahwa saya benar. Mesin pencari cenderung agak tidak pasti. Lihat tangkapan layar di atas, yang menunjukkan Tom Hanks. Tidak ada nama filmnya, maupun posisi pembuatannya.



gambar



Rumusan masalah



Sebelum kita mulai memecahkan masalah, mari kita coba menjelaskannya. Jadi apa yang kita inginkan?



Kecepatan eksekusi permintaan yang diinginkan



Saat ini, tidak ada yang akan menunggu beberapa menit untuk menyelesaikan permintaan pencarian. Namun, jumlah data dan komputasi bisa sedemikian rupa sehingga memerlukan beberapa waktu untuk memproses permintaan. Anda harus berkompromi. Kami akan membatasi waktu eksekusi permintaan pencarian secara kondisional hingga 10 detik (± beberapa detik). Ini, di satu sisi, akan memungkinkan browser tidak memutuskan koneksi, tetapi, di sisi lain, akan memberi waktu bagi skrip untuk memproses informasi.



Berapa banyak data yang ada?



Mari kita cari tahu di kepala kita.



Jumlah video



Menurut database sinematografi IMDb, total sekitar 2,6 juta film telah diambil, termasuk episode individu dari acara TV, kartun dan film pendek. (Informasi per 13 November 2018).



Untuk memulainya, mari batasi diri kita pada jumlah putaran 1 juta video. Jelas bahwa kami bahkan tidak mencoba menyentuh di YouTube dan layanan serupa lainnya, yang volume videonya berkali-kali lipat lebih besar. Dan yang terpenting, bola salju ini hanya akan berkembang.



Jumlah bingkai



Beberapa film atau episode serial TV cukup pendek. Ada 15-20 menit. Di sisi lain, ada cukup banyak film dengan durasi hingga 2 jam atau lebih. Tanpa basa-basi lagi, mari kita ambil rata-rata durasi video sama dengan 1 jam.



Sejumlah besar film dibuat pada 24 bingkai per detik, tetapi ada juga yang lebih cepat. Saat ini, semua orang dapat merekam film mereka sendiri, dan frekuensi gambar di dalamnya bisa 60, 100 dan 200 FPS dan lebih tinggi. Itu semua tergantung pada camcorder, kamera, kamera aksi, smartphone, kamera pengintai video, dll. (Garis bawahi yang diperlukan). Semua ada di tangan kita. Tapi, mari kita ambil perkiraan pertama kecepatan bingkai dari rata-rata video yang sama dengan 30 FPS.



Dalam kasus ini, rata-rata video adalah:



30 FPS * 3600 detik = 108.000 bingkai



Kesimpulannya, kami mendapatkan bahwa rata-rata video sekitar 100.000 bingkai.



Volume data



Berapa kapasitas penyimpanan untuk satu bingkai? Jelasnya, nilai ini bergantung pada algoritme untuk membandingkan frame dalam database kita dengan sampel yang diberikan. Kami menggunakan dua algoritma untuk membandingkan data. Salah satunya membutuhkan sekitar 30 byte per frame, yang lainnya sekitar 10 byte. Mari kita ambil rata-rata - 20 byte.



Artinya untuk menyimpan informasi sekitar 1 juta video, dibutuhkan



1.000.000 video * 100.000 frame * 20 byte = 2.000.000.000.000 byte



Sederhananya, kami membutuhkan sekitar 2 TB untuk mendeskripsikan semua frame kami. Yang, secara umum, tidak terlalu buruk, karena jumlah informasi ini dapat muat pada disk HDD atau SSD modern. Di sisi lain, informasi ini harus disederhanakan, jika tidak, pembacaan sederhana sebesar 2 TB pun akan memakan banyak waktu, dan kami setuju bahwa pengguna tidak akan menunggu lebih dari 10 detik.



Bahkan jika kita membaca informasi dari disk dengan kecepatan 500 MB / s, kita memerlukan 2000 detik, artinya lebih dari setengah jam!



Berapa banyak server yang kita perlukan untuk mencari waktu tertentu?



Jika kami berasumsi bahwa kami menyimpan informasi secara merata di beberapa server, maka, dalam kasus ini, jumlah informasi yang diproses untuk menyelesaikan satu kueri penelusuran berkurang. Misalnya, jika kami memiliki 10 server, masing-masing server perlu memproses bukan informasi 2 TB, tetapi hanya 200 GB. Atau jika kita memiliki 100 server, maka kita perlu memproses bukan 2 TB, tetapi 20 GB informasi. Pada prinsipnya, jumlah yang ditentukan harus cukup untuk memfungsikan mesin pencari semacam itu.



Berapa banyak permintaan per detik yang dapat dicerna oleh sistem seperti itu?



Sulit untuk menjawab dengan tepat, tetapi kemungkinan besar maksimum beberapa puluh permintaan per detik.



Apa yang telah dilakukan



Pertama, kami menerapkan penelusuran berdasarkan fragmen video. Namun, pencarian gambar segera dilaksanakan.



Sejarah



1 Juli 2019



Pada hari ini, versi pertama dari paket VideoColor dirilis. Itu termasuk tiga bagian:



  • Manajer (pengindeksan video sumber)
  • Server (ujung belakang yang menerima permintaan dan mencari kecocokan dalam database indeks)
  • Klien (aplikasi klien yang memungkinkan Anda memutar file AVI dan mengirim permintaan pencarian ke server).


Maret 2020



Sebuah situs web dibuat dengan kemampuan untuk mengidentifikasi video dengan fragmen video yang diunggah.



14 April 2020



Merilis versi pertama aplikasi untuk identifikasi video dan pemosisian video yang sedang diputar dengan menangkap isi dari bagian layar monitor.



23 Juni 2020



Versi pertama aplikasi untuk menambahkan indeks dan informasi deskriptif tentang video ke database situs telah dirilis.



Cari berdasarkan fragmen video



ide utama







Kami akan menganggap video sebagai urutan gambar. Untuk setiap gambar, temukan rata-rata warna merah, hijau, dan biru. Kami mendapatkan tiga grafik versus waktu. Mari buat dan simpan grafik ini untuk setiap video yang ingin kita indeks.







Setelah menerima fragmen video untuk identifikasi, kami akan membuat grafik untuk itu. Mari bandingkan grafik yang diperoleh dengan yang sudah tersedia. Tentu saja, perbandingan harus dilakukan di sepanjang film asli. Jika perbedaan antara grafik pada titik tertentu kurang dari nilai tertentu, maka kami menganggap bahwa masalahnya sudah terpecahkan.



Perlu dicatat bahwa ini adalah diagram yang disederhanakan. Ada beberapa poin dalam alur kerja yang berbeda dari yang dijelaskan di sini. Tapi, secara umum, inilah idenya.



pro



  • . 1 . , 1000 , 2 , 2 .
  • . , , .
  • 5-10 .
  • ( ).
  • . . , . , , .




  • . .. . , . , . , . , 2- DDR3 1600 12 0,5 . 48 2- .
  • ( ) . . , , , .
  • . , , . — .
  • .






Bagilah gambar asli menjadi sel tabel M x N. Tentukan nilai rata-rata komponen merah, hijau, dan biru di masing-masing bidang. Sebenarnya, himpunan nilai-nilai ini akan menjadi ciri khas gambar ini, dengan bantuannya kita dapat membedakan semuanya satu sama lain. Kami memasukkan karakteristik ini ke dalam database bersama dengan penunjuk ke deskripsi video (ID Video) dan nomor seri bingkai di video. Satu-satunya pertanyaan yang tersisa adalah, nilai apa yang diambil M dan N? Kami mengambil 5 x 5, tetapi Anda dapat mencoba nilai lain. Dengan nilai yang kecil dari parameter tersebut, ada kemungkinan kita akan memiliki banyak duplikat, dan dengan nilai yang besar kita akan menghabiskan banyak memori.







Namun, ini belum semuanya. Jika Anda mencari lebih lanjut untuk semua karakteristik ini, maka akan membutuhkan banyak waktu untuk memproses setiap permintaan! Bagaimana menjadi? Anda dapat menghitung nilai rata-rata komponen R, G, B untuk gambar ini dan, berdasarkan nilai ini, mengelompokkannya dalam larik data. Contoh: R = 200, G = 188, B = 212. Dalam hal ini, kami memasukkan informasi tentang bingkai di bagian yang sesuai atau menambahkan bidang ke tabel. Dan saat menelusuri, kami menentukan komponen ini dengan cara yang serupa dan menelusuri dengan mempertimbangkan parameter ini. Jadi, kami sangat mengurangi jumlah data yang dibandingkan dan mempercepat pencarian.







Sejujurnya, ini hanya teori, dalam praktiknya semuanya sedikit berbeda. Tapi ini adalah topik untuk artikel terpisah.



pro



  • Ukuran data yang relatif kecil.
  • Anda dapat membagi semua data menjadi beberapa grup dan mencari berdasarkan grup, yang secara signifikan mempercepat pencarian.
  • Berbeda dengan metode sebelumnya, metode ini tidak memerlukan penyimpanan permanen data dalam jumlah besar dalam RAM.
  • Kemungkinan kesalahan rendah.




Minus



  • Karena fakta bahwa setelah transcoding video mungkin sedikit berbeda dari aslinya, dan encoding JPEG (saat mencari pakai gambar) mengubah aslinya dan grup mungkin ditentukan secara tidak benar. Ini membutuhkan perluasan jangkauan grup (mengarah ke penurunan kecepatan pencarian) atau permintaan pencarian tambahan (juga memperlambat pencarian).


Alat



Sampai saat ini, beberapa aplikasi telah ditulis, beberapa di antaranya sudah usang dan tidak lagi didukung.



Pencarian video (sisi klien)



  • Melalui formulir web di situs
  • Melalui aplikasi "Video Color Capture"


Pencarian video (backend)



  • Video Color Server. : Windows ( ) Linux ( , crontab).




  • «Video Color Creator»








  • .
  • .
  • ().
  • () .
  • - , .




Misalkan Anda memiliki file dengan nama yang kikuk. Layar pembuka awal hilang (maksud penulis) atau terpotong. Film apa ini? Saya ingin membaca deskripsi dan komentar dari mereka yang melihatnya.



Menemukan dan memotong unit iklan



Contoh: Anda memiliki pemutar video yang Anda tulis sendiri dan Anda ingin pengguna melihat iklan Anda sendiri, bukan saluran pusat, saat menonton video streaming.

Memeriksa bagian-bagian video untuk meminjamnya dari film lain (plagiarisme)

Contoh: Jika ada kecurigaan bahwa seseorang menggunakan video Anda (diambil dari quadcopter) dalam videonya.



Penentuan tanggal pasti publikasi dan nama pertunjukan (program) jika informasi ini tidak ada di repost



Contoh: Anda sedang menonton acara video yang dihosting di situs yang tidak dikenal. Anda bahkan mungkin tahu apa judul pertunjukan itu tetapi tidak tahu kapan itu ditayangkan. Setahun yang lalu atau dua?



Penentuan posisi yang kurang lebih akurat dari video streaming yang sedang diputar jika video yang diindeks sebelumnya sedang disiarkan



Contoh: Ini mungkin diperlukan jika Anda ingin melampirkan aplikasi ke video streaming orang lain yang menampilkan judul atau informasi kontekstual lainnya (peta, tautan, berita, dll.). Pertama, ada pengambilan video, penghitungan indeks, identifikasi video dan posisi di server, lalu aplikasi menampilkan informasi kontekstual di jendela terpisah, disinkronkan dengan video yang sedang diputar.



Cara menggunakan layanan



Cari video melalui formulir web di situs



Untuk melakukan ini, Anda perlu mengupload fragmen video atau gambar ke bidang yang sesuai di formulir.







Perlu dicatat bahwa dalam kasus mengunduh fragmen video, server pertama-tama akan menangani storyboard dari video yang diunggah dan pemrosesannya, yang akan membutuhkan waktu tambahan.



Halaman hasil berisi judul film, nama sutradara, informasi tentang negara asal, tahun rilis, genre, nama aktor, deskripsi singkat, durasi video, serta posisi yang ditemukan dalam video, tautan ke informasi tambahan dan gambar tabel bingkai dari video.







Cari video menggunakan aplikasi



Pencarian video menggunakan aplikasi jauh lebih cepat, karena semua preprocessing dilakukan di sisi klien, dan hanya sebagian kecil dari data asli yang dikirim ke server. Hal ini mengurangi beban pada saluran dan meningkatkan kecepatan permintaan pencarian.



















Dapatkah saya mengisi database sendiri dengan informasi indeks untuk satu juta video?



Kemungkinan besar tidak. Di mana saya bisa mendapatkan video ini? Bagaimana cara memompanya melalui jaringan? Di mana mendapatkan sumber daya komputasi untuk memprosesnya?



Tetapi Anda dapat membuat basis tersedia untuk diisi oleh pengguna itu sendiri. Dan ini sudah diterapkan. Kami telah mengisi database dengan seratus video dan Anda dapat memastikan bahwa layanan kami berfungsi. Anda juga dapat mengunduh dan menginstal aplikasi gratis untuk mengindeks video dan menambahkan deskripsi, diikuti dengan mengunggah data ke server. Aplikasi ini memungkinkan di masa depan untuk melakukan beberapa operasi dengan data yang dimuat: menghapus, mengedit deskripsi, melihat dan mencari.







Jika Anda memutuskan untuk menambahkan video Anda atau lainnya, pastikan video ini belum ada di database. Anda dapat mencari di aplikasi berdasarkan nama, sutradara, tahun pembuatan dan parameter lainnya.







Kecepatan pembuatan informasi indeks bergantung pada kekuatan komputer Anda dan karakteristik video itu sendiri (resolusi, codec, kecepatan bingkai). Rata-rata, pemrosesan membutuhkan waktu beberapa menit. Saat ini, pengguna dapat mengisi kolom teks deskripsi video.







Rencana untuk masa depan



  • Akselerasi pencarian.
  • Meningkatkan akurasi pencarian.
  • Cari berdasarkan fragmen audio.


Pencarian video dengan fragmen audio pendek akan melengkapi dua metode pencarian yang ada (dengan fragmen video dan gambar).



Hasil



  • Dalam posting ini, kami meninjau keadaan seni saat ini dengan pencarian video.
  • Kami berkenalan dengan metode pencarian video dengan fragmen video pendek dan gambar.
  • Kami berbicara tentang aplikasi pencarian video Video Color Capture .
  • Aplikasi Video Color Creator telah disebutkan untuk ditambahkan ke database video bersama Perangkat Lunak AAP .


Tautan



Situs web



http://www.videocolor.aapsoftware.ru/

Situs ini menawarkan pencarian dengan fragmen video pendek, serta gambar dari video.



Aplikasi





Video





Publikasi






All Articles