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

milvus-logo
LFAI

Deteksi objek

  • Scenarios
October 11, 2021
Shiyu Chen

Shiyu Chen, seorang insinyur data di Zilliz, lulus dari Universitas Xidian dengan gelar di bidang Ilmu Komputer. Sejak bergabung dengan Zilliz, dia telah mengeksplorasi solusi untuk Milvus di berbagai bidang, seperti analisis audio dan video, pencarian rumus molekul, dll., yang telah sangat memperkaya skenario aplikasi komunitas. Saat ini ia sedang mengeksplorasi solusi yang lebih menarik. Di waktu luangnya, dia menyukai olahraga dan membaca.

Ketika saya menonton film Free Guy akhir pekan lalu, saya merasa pernah melihat aktor yang memerankan Buddy, sang satpam, di suatu tempat sebelumnya, tetapi tidak dapat mengingat karya-karyanya. Kepala saya dipenuhi dengan pertanyaan, "siapa orang ini?" Saya yakin pernah melihat wajahnya dan berusaha keras untuk mengingat namanya. Kasus serupa adalah ketika saya melihat aktor utama dalam sebuah video sedang menikmati minuman yang sangat saya sukai, namun akhirnya saya gagal mengingat nama mereknya.

Jawabannya ada di ujung lidah saya, tetapi otak saya terasa buntu.

Fenomena ujung lidah (TOT) membuat saya gila ketika menonton film. Seandainya saja ada mesin pencari gambar terbalik untuk video yang memungkinkan saya menemukan video dan menganalisis konten video. Sebelumnya, saya membuat mesin pencari gambar terbalik dengan menggunakan Milvus. Mengingat analisis konten video mirip dengan analisis gambar, saya memutuskan untuk membangun mesin analisis konten video berdasarkan Milvus.

Deteksi objek

Gambaran umum

Sebelum dianalisis, objek dalam video harus dideteksi terlebih dahulu. Mendeteksi objek dalam video secara efektif dan akurat adalah tantangan utama dari tugas ini. Ini juga merupakan tugas penting untuk aplikasi seperti autopilot, perangkat yang dapat dikenakan, dan IoT.

Dikembangkan dari algoritme pemrosesan gambar tradisional ke jaringan saraf dalam (deep neural network/DNN), model utama saat ini untuk deteksi objek meliputi R-CNN, FRCNN, SSD, dan YOLO. Sistem analisis video pembelajaran mendalam berbasis Milvus yang diperkenalkan dalam topik ini dapat mendeteksi objek secara cerdas dan cepat.

Implementasi

Untuk mendeteksi dan mengenali objek dalam video, pertama-tama sistem harus mengekstrak frame dari video dan mendeteksi objek dalam gambar frame menggunakan deteksi objek, kedua, mengekstrak vektor fitur dari objek yang terdeteksi, dan terakhir, menganalisis objek berdasarkan vektor fitur.

  • Ekstraksi bingkai

Analisis video diubah menjadi analisis gambar menggunakan ekstraksi frame. Saat ini, teknologi ekstraksi frame sudah sangat matang. Program seperti FFmpeg dan OpenCV mendukung ekstraksi frame pada interval tertentu. Artikel ini memperkenalkan cara mengekstrak frame dari video setiap detik menggunakan OpenCV.

  • Deteksi objek

Deteksi objek adalah tentang menemukan objek dalam frame yang diekstrak dan mengekstrak tangkapan layar objek sesuai dengan posisinya. Seperti yang ditunjukkan pada gambar berikut, sepeda, anjing, dan mobil terdeteksi. Topik ini memperkenalkan cara mendeteksi objek menggunakan YOLOv3, yang umumnya digunakan untuk deteksi objek.

  • Ekstraksi fitur

Ekstraksi fitur mengacu pada pengubahan data yang tidak terstruktur, yang sulit dikenali oleh mesin, menjadi vektor fitur. Sebagai contoh, gambar dapat dikonversi menjadi vektor fitur multi-dimensi menggunakan model pembelajaran mendalam. Saat ini, model AI pengenalan gambar yang paling populer termasuk VGG, GNN, dan ResNet. Topik ini memperkenalkan cara mengekstrak fitur dari objek yang terdeteksi menggunakan ResNet-50.

  • Analisis vektor

Vektor fitur yang diekstrak dibandingkan dengan vektor pustaka, dan informasi yang sesuai dengan vektor yang paling mirip dikembalikan. Untuk set data vektor fitur berskala besar, perhitungan merupakan tantangan besar. Topik ini memperkenalkan cara menganalisis vektor fitur menggunakan Milvus.

Teknologi utama

OpenCV

Open Source Computer Vision Library (OpenCV) adalah perpustakaan visi komputer lintas platform, yang menyediakan banyak algoritme universal untuk pemrosesan gambar dan visi komputer. OpenCV umumnya digunakan dalam bidang visi komputer.

Contoh berikut ini menunjukkan cara mengambil frame video pada interval tertentu dan menyimpannya sebagai gambar menggunakan OpenCV dengan Python.

import cv2 
cap = cv2.VideoCapture(file_path)   
framerate = cap.get(cv2.CAP_PROP_FPS)   
allframes = int(cv2.VideoCapture.get(cap, int(cv2.CAP_PROP_FRAME_COUNT)))  
success, image = cap.read() 
cv2.imwrite(file_name, image)

YOLOv3

You Only Look Once, Version 3 (YOLOv3 [5]) adalah algoritma pendeteksian objek satu tahap yang diusulkan dalam beberapa tahun terakhir. Dibandingkan dengan algoritma pendeteksian objek tradisional dengan akurasi yang sama, YOLOv3 dua kali lebih cepat. YOLOv3 yang disebutkan dalam topik ini adalah versi yang disempurnakan dari PaddlePaddle [6]. YOLOv3 menggunakan beberapa metode optimasi dengan kecepatan inferensi yang lebih tinggi.

ResNet-50

ResNet [7] adalah pemenang ILSVRC 2015 dalam klasifikasi gambar karena kesederhanaan dan kepraktisannya. Sebagai dasar dari banyak metode analisis gambar, ResNet terbukti menjadi model yang populer yang berspesialisasi dalam deteksi, segmentasi, dan pengenalan gambar.

Milvus

Milvus adalah basis data vektor open-source yang berasal dari cloud yang dibangun untuk mengelola vektor penyisipan yang dihasilkan oleh model pembelajaran mesin dan jaringan saraf. Milvus banyak digunakan dalam skenario seperti visi komputer, pemrosesan bahasa alami, kimia komputasi, sistem pemberi rekomendasi yang dipersonalisasi, dan banyak lagi.

Prosedur berikut ini menjelaskan cara kerja Milvus.

  1. Data yang tidak terstruktur diubah menjadi vektor fitur dengan menggunakan model pembelajaran mendalam dan diimpor ke Milvus.
  2. Milvus menyimpan dan mengindeks vektor fitur.
  3. Milvus mengembalikan vektor yang paling mirip dengan vektor yang ditanyakan oleh pengguna.

Penerapan

Sekarang Anda telah memiliki pemahaman tentang sistem analisis video berbasis Milvus. Sistem ini pada dasarnya terdiri dari dua bagian, seperti yang ditunjukkan pada gambar berikut.

  • Panah merah menunjukkan proses impor data. Gunakan ResNet-50 untuk mengekstrak vektor fitur dari kumpulan data gambar dan mengimpor vektor fitur ke Milvus.

  • Panah hitam menunjukkan proses analisis video. Pertama, mengekstrak frame dari video dan menyimpan frame sebagai gambar. Kedua, mendeteksi dan mengekstrak objek dalam gambar menggunakan YOLOv3. Kemudian, gunakan ResNet-50 untuk mengekstrak vektor fitur dari gambar. Terakhir, Milvus mencari dan mengembalikan informasi objek dengan vektor fitur yang sesuai.

Untuk informasi lebih lanjut, lihat Milvus Bootcamp: Sistem Deteksi Objek Video.

Impor data

Proses impor data sangat sederhana. Ubah data menjadi vektor 2.048 dimensi dan impor vektor tersebut ke dalam Milvus.

vector = image_encoder.execute(filename)
entities = [vector]
collection.insert(data=entities)

Analisis video

Seperti yang telah dijelaskan di atas, proses analisis video meliputi menangkap frame video, mendeteksi objek di setiap frame, mengekstrak vektor dari objek, menghitung kesamaan vektor dengan metrik jarak Euclidean (L2), dan mencari hasil menggunakan Milvus.

images = extract_frame(filename, 1, prefix)   
detector = Detector()   
run(detector, DATA_PATH)       
vectors = get_object_vector(image_encoder, DATA_PATH)
search_params = {"metric_type": "L2", "params": {"nprobe": 10}}
results = collection.search(vectors, param=search_params, limit=10)

Kesimpulan

Saat ini, lebih dari 80% data tidak terstruktur. Dengan perkembangan AI yang pesat, semakin banyak model deep learning yang dikembangkan untuk menganalisis data yang tidak terstruktur. Teknologi seperti deteksi objek dan pemrosesan gambar telah mencapai terobosan besar di dunia akademis dan industri. Dengan diberdayakan oleh teknologi ini, semakin banyak platform AI yang memenuhi persyaratan praktis.

Sistem analisis video yang dibahas dalam topik ini dibangun dengan Milvus, yang dapat dengan cepat menganalisis konten video.

Sebagai basis data vektor sumber terbuka, Milvus mendukung vektor fitur yang diekstraksi menggunakan berbagai model pembelajaran mendalam. Terintegrasi dengan pustaka seperti Faiss, NMSLIB, dan Annoy, Milvus menyediakan seperangkat API yang intuitif, yang mendukung pergantian jenis indeks sesuai dengan skenario. Selain itu, Milvus mendukung pemfilteran skalar, yang meningkatkan tingkat recall dan fleksibilitas pencarian. Milvus telah diaplikasikan pada berbagai bidang seperti pemrosesan gambar, visi komputer, pemrosesan bahasa alami, pengenalan suara, sistem pemberi rekomendasi, dan penemuan obat baru.

Referensi

[1] A. D. Bagdanov, L. Ballan, M. Bertini, A. Del Bimbo. "Pencocokan dan pengambilan merek dagang dalam basis data video olahraga." Prosiding lokakarya internasional Workshop on multimedia information retrieval, ACM, 2007. https://www.researchgate.net/publication/210113141_Trademark_matching_and_retrieval_in_sports_video_databases

[2] J. Kleban, X. Xie, W.-Y. Ma. "Penambangan piramida spasial untuk deteksi logo pada pemandangan alam." IEEE International Conference, 2008. https://ieeexplore.ieee.org/document/4607625

[3] R. Boia, C. Florea, L. Florea, R. Dogaru. "Pelokalan dan pengenalan logo pada gambar alami menggunakan graf kelas homograf." Machine Vision and Applications 27 (2), 2016. https://link.springer.com/article/10.1007/s00138-015-0741-7

[4] R. Boia, C. Florea, L. Florea. "Aglomerasi asift elips pada prototipe kelas untuk deteksi logo." BMVC, 2015. http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=5C87F52DE38AB0C90F8340DFEBB841F7?doi=10.1.1.707.9371&rep=rep1&type=pdf

[5] https://arxiv.org/abs/1804.02767

[6] https://paddlepaddle.org.cn/modelbasedetail/yolov3

[7] https://arxiv.org/abs/1512.03385

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

Terus Baca