🚀 Coba Zilliz Cloud, Milvus yang sepenuhnya terkelola, secara gratis—rasakan performa 10x lebih cepat! Coba Sekarang>>

milvus-logo
LFAI

Gambaran umum sistem

  • Scenarios
August 29, 2020
milvus

Seperti namanya, mencari video berdasarkan gambar adalah proses mengambil video dari repositori yang berisi bingkai yang mirip dengan gambar input. Salah satu langkah kuncinya adalah mengubah video menjadi embeddings, dengan kata lain, mengekstrak frame-frame kunci dan mengubah fitur-fiturnya menjadi vektor. Sekarang, sebagian pembaca yang penasaran, mungkin bertanya-tanya, apa perbedaan antara mencari video berdasarkan gambar dan mencari gambar berdasarkan gambar? Sebenarnya, mencari frame kunci dalam video sama saja dengan mencari gambar per gambar.

Anda dapat merujuk ke artikel kami sebelumnya Milvus x VGG: Membangun Sistem Pencarian Gambar Berbasis Konten jika Anda tertarik.

Gambaran umum sistem

Diagram berikut ini mengilustrasikan alur kerja umum dari sistem pencarian video.

1-video-search-system-workflow.png 1-aliran-kerja-sistem-pencarian-video.png

Ketika mengimpor video, kami menggunakan pustaka OpenCV untuk memotong setiap video menjadi beberapa frame, mengekstrak vektor dari frame-frame kunci menggunakan model ekstraksi fitur gambar VGG, dan kemudian menyisipkan vektor yang telah diekstrak (embedding) ke dalam Milvus. Kami menggunakan Minio untuk menyimpan video asli dan Redis untuk menyimpan korelasi antara video dan vektor.

Ketika mencari video, kami menggunakan model VGG yang sama untuk mengubah gambar input menjadi vektor fitur dan memasukkannya ke dalam Milvus untuk menemukan vektor dengan kemiripan tertinggi. Kemudian, sistem mengambil video yang sesuai dari Minio pada antarmukanya sesuai dengan korelasi di Redis.

Persiapan data

Pada artikel ini, kami menggunakan sekitar 100.000 berkas GIF dari Tumblr sebagai contoh dataset dalam membangun solusi end-to-end untuk mencari video. Anda dapat menggunakan repositori video Anda sendiri.

Penerapan

Kode untuk membangun sistem pencarian video dalam artikel ini ada di GitHub.

Langkah 1: Membangun citra Docker.

Sistem pengambilan video memerlukan docker Milvus v0.7.1, docker Redis, docker Minio, docker antarmuka ujung depan, dan docker API ujung belakang. Anda perlu membangun docker antarmuka ujung depan dan docker API ujung belakang secara mandiri, sementara Anda dapat menarik tiga docker lainnya secara langsung dari Docker Hub.

# Get the video search code
$ git clone -b 0.10.0 https://github.com/JackLCL/search-video-demo.git

# Build front-end interface docker and api docker images
$ cd search-video-demo & make all

Langkah 2: Konfigurasi lingkungan.

Di sini kita menggunakan docker-compose.yml untuk mengelola lima kontainer yang disebutkan di atas. Lihat tabel berikut untuk konfigurasi docker-compose.yml:

2-configure-docker-compose-yml.png 2-konfigurasi-docker-compose-yml.png

Alamat IP 192.168.1.38 pada tabel di atas adalah alamat server yang digunakan untuk membangun sistem pengambilan video dalam artikel ini. Anda perlu memperbaruinya ke alamat server Anda.

Anda perlu membuat direktori penyimpanan secara manual untuk Milvus, Redis, dan Minio, lalu menambahkan jalur yang sesuai di docker-compose.yml. Dalam contoh ini, kita membuat direktori berikut:

/mnt/redis/data /mnt/minio/data /mnt/milvus/db

Anda dapat mengonfigurasi Milvus, Redis, dan Minio di docker-compose.yml sebagai berikut:

3-configure-milvus-redis-minio-docker-compose-yml.png 3-konfigurasi-milvus-redis-minio-docker-compose-yml.png

Langkah 3: Mulai sistem.

Gunakan docker-compose.yml yang telah dimodifikasi untuk memulai lima kontainer docker yang akan digunakan dalam sistem pengambilan video:

$ docker-compose up -d

Kemudian, Anda dapat menjalankan docker-compose ps untuk memeriksa apakah lima kontainer docker telah dimulai dengan benar. Tangkapan layar berikut ini menunjukkan antarmuka tipikal setelah pengaktifan berhasil.

4-sucessful-setup.png 4-penyiapan-berhasil.png

Sekarang, Anda telah berhasil membangun sistem pencarian video, meskipun basis data tidak memiliki video.

Langkah 4: Impor video.

Di direktori deploy pada repositori sistem, terdapat import_data.py, skrip untuk mengimpor video. Anda hanya perlu memperbarui jalur ke berkas video dan interval pengimporan untuk menjalankan skrip.

5-update-path-video.png 5-pembaruan-path-video.png

data_path: Jalur ke video yang akan diimpor.

time.sleep(0.5): Interval waktu di mana sistem mengimpor video. Server yang kami gunakan untuk membangun sistem pencarian video memiliki 96 inti CPU. Oleh karena itu, disarankan untuk mengatur interval ke 0,5 detik. Atur interval ke nilai yang lebih besar jika server Anda memiliki lebih sedikit inti CPU. Jika tidak, proses pengimporan akan membebani CPU, dan menciptakan proses zombie.

Jalankan import_data.py untuk mengimpor video.

$ cd deploy
$ python3 import_data.py

Setelah video diimpor, Anda sudah siap dengan sistem pencarian video Anda sendiri!

Tampilan antarmuka

Buka peramban Anda dan masukkan 192.168.1.38.8001 untuk melihat antarmuka sistem pencarian video seperti yang ditunjukkan di bawah ini.

6-video-search-interface.png 6-muka-pencarian-video.png

Geser tombol roda gigi di kanan atas untuk melihat semua video dalam repositori.

7-view-all-videos-repository.png 7-lihat-semua-video-repositori.png

Klik pada kotak unggah di kiri atas untuk memasukkan gambar target. Seperti yang ditunjukkan di bawah ini, sistem akan mengembalikan video yang berisi bingkai yang paling mirip.

8-enjoy-recommender-system-cats.png 8-nikmati-sistem-pemberi-rekomendasi-kucing.png

Selanjutnya, bersenang-senanglah dengan sistem pencarian video kami!

Buat sistem Anda sendiri

Dalam artikel ini, kami menggunakan Milvus untuk membangun sebuah sistem untuk mencari video berdasarkan gambar. Ini merupakan contoh penerapan Milvus dalam pemrosesan data yang tidak terstruktur.

Milvus kompatibel dengan berbagai kerangka kerja deep learning, dan memungkinkan pencarian dalam milidetik untuk vektor dalam skala miliaran. Jangan ragu untuk membawa Milvus bersama Anda ke lebih banyak skenario AI: https://github.com/milvus-io/milvus.

Jangan jadi orang asing, ikuti kami di Twitter atau bergabunglah dengan kami di Slack! 👇🏻

Like the article? Spread the word

Terus Baca