Construindo um Sistema de Análise de Vídeo com o Banco de Dados Vetorial Milvus
Quando eu estava assistindo a Free Guy no fim de semana passado, senti que já tinha visto em algum lugar o ator que interpreta Buddy, o segurança, mas não conseguia me lembrar de nenhum de seus trabalhos. Minha cabeça estava cheia de "quem é esse cara?" Eu tinha certeza de já ter visto aquele rosto e estava tentando muito lembrar o nome dele. Um caso semelhante é que, certa vez, vi o ator principal em um vídeo tomando uma bebida de que eu costumava gostar muito, mas acabei não conseguindo me lembrar do nome da marca.
A resposta estava na ponta da língua, mas meu cérebro parecia completamente travado.
O fenômeno da ponta da língua (TOT) me deixa louco ao assistir a filmes. Quem dera houvesse um mecanismo de busca reversa de imagens para vídeos que me permitisse encontrar vídeos e analisar conteúdo de vídeo. Antes, criei um mecanismo de busca reversa de imagens usando Milvus. Considerando que a análise de conteúdo de vídeo de certa forma se assemelha à análise de imagens, decidi criar um mecanismo de análise de conteúdo de vídeo baseado no Milvus.
Detecção de objetos
Visão geral
Antes de serem analisados, os objetos em um vídeo devem primeiro ser detectados. Detectar objetos em um vídeo de forma eficaz e precisa é o principal desafio da tarefa. Também é uma tarefa importante para aplicações como piloto automático, dispositivos vestíveis e IoT.
Desenvolvidos a partir de algoritmos tradicionais de processamento de imagens até redes neurais profundas (DNN), os modelos convencionais atuais para detecção de objetos incluem R-CNN, FRCNN, SSD e YOLO. O sistema de análise de vídeo com deep learning baseado no Milvus apresentado neste tópico pode detectar objetos de forma inteligente e rápida.
Implementação
Para detectar e reconhecer objetos em um vídeo, o sistema deve primeiro extrair quadros de um vídeo e detectar objetos nas imagens dos quadros usando detecção de objetos; em segundo lugar, extrair vetores de características dos objetos detectados; e, por fim, analisar o objeto com base nos vetores de características.
- Extração de quadros
A análise de vídeo é convertida em análise de imagens usando extração de quadros. Atualmente, a tecnologia de extração de quadros é muito madura. Programas como FFmpeg e OpenCV oferecem suporte à extração de quadros em intervalos especificados. Este artigo apresenta como extrair quadros de um vídeo a cada segundo usando OpenCV.
- Detecção de objetos
A detecção de objetos consiste em encontrar objetos nos quadros extraídos e extrair capturas de tela dos objetos de acordo com suas posições. Como mostrado nas figuras a seguir, uma bicicleta, um cachorro e um carro foram detectados. Este tópico apresenta como detectar objetos usando YOLOv3, que é comumente usado para detecção de objetos.
Figura 1.
- Extração de características
A extração de características refere-se à conversão de dados não estruturados, que são difíceis para as máquinas reconhecerem, em vetores de características. Por exemplo, imagens podem ser convertidas em vetores de características multidimensionais usando modelos de deep learning. Atualmente, os modelos de IA de reconhecimento de imagens mais populares incluem VGG, GNN e ResNet. Este tópico apresenta como extrair características de objetos detectados usando ResNet-50.
Figura 2.
- Análise vetorial
Os vetores de características extraídos são comparados com vetores da biblioteca, e as informações correspondentes aos vetores mais semelhantes são retornadas. Para conjuntos de dados de vetores de características em larga escala, o cálculo é um enorme desafio. Este tópico apresenta como analisar vetores de características usando Milvus.
Tecnologias principais
OpenCV
Open Source Computer Vision Library (OpenCV) é uma biblioteca de visão computacional multiplataforma, que fornece muitos algoritmos universais para processamento de imagens e visão computacional. OpenCV é comumente usado no campo da visão computacional.
O exemplo a seguir mostra como capturar quadros de vídeo em intervalos especificados e salvá-los como imagens usando OpenCV com 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, Versão 3 (YOLOv3 [5]) é um algoritmo de detecção de objetos de estágio único proposto nos últimos anos. Em comparação com os algoritmos tradicionais de detecção de objetos com a mesma precisão, o YOLOv3 é duas vezes mais rápido. O YOLOv3 mencionado neste tópico é a versão aprimorada do PaddlePaddle [6]. Ele usa vários métodos de otimização com uma velocidade de inferência mais alta.
ResNet-50
ResNet [7] é o vencedor do ILSVRC 2015 em classificação de imagens devido à sua simplicidade e praticidade. Como base de muitos métodos de análise de imagens, o ResNet demonstra ser um modelo popular especializado em detecção, segmentação e reconhecimento de imagens.
Milvus
Milvus é um banco de dados vetorial nativo da nuvem e de código aberto criado para gerenciar vetores de embedding gerados por modelos de machine learning e redes neurais. Ele é amplamente usado em cenários como visão computacional, processamento de linguagem natural, química computacional, sistemas de recomendação personalizados e muito mais.
Os procedimentos a seguir descrevem como o Milvus funciona.
- Dados não estruturados são convertidos em vetores de características usando modelos de deep learning e são importados para o Milvus.
- O Milvus armazena e indexa os vetores de características.
- O Milvus retorna os vetores mais semelhantes ao vetor consultado pelos usuários.
Figura 3.
Implantação
Agora você tem algum entendimento sobre sistemas de análise de vídeo baseados no Milvus. O sistema consiste principalmente em duas partes, conforme mostrado na figura a seguir.
As setas vermelhas indicam o processo de importação de dados. Use o ResNet-50 para extrair vetores de características do conjunto de dados de imagens e importe os vetores de características para o Milvus.
As setas pretas indicam o processo de análise de vídeo. Primeiro, extraia quadros de um vídeo e salve os quadros como imagens. Em segundo lugar, detecte e extraia objetos nas imagens usando o YOLOv3. Em seguida, use o ResNet-50 para extrair vetores de características das imagens. Por fim, o Milvus pesquisa e retorna as informações dos objetos com os vetores de características correspondentes.
Figura 4.
Para obter mais informações, consulte Milvus Bootcamp: Video Object Detection System.
Importação de dados
O processo de importação de dados é simples. Converta os dados em vetores de 2.048 dimensões e importe os vetores para o Milvus.
vector = image_encoder.execute(filename)
entities = [vector]
collection.insert(data=entities)
Análise de vídeo
Conforme apresentado acima, o processo de análise de vídeo inclui capturar quadros de vídeo, detectar objetos em cada quadro, extrair vetores dos objetos, calcular a similaridade vetorial com métricas de distância euclidiana (L2) e pesquisar resultados usando o 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)
Conclusão
Atualmente, mais de 80% dos dados são não estruturados. Com o rápido desenvolvimento da IA, um número crescente de modelos de deep learning foi desenvolvido para analisar dados não estruturados. Tecnologias como detecção de objetos e processamento de imagens alcançaram grandes avanços tanto na academia quanto na indústria. Impulsionadas por essas tecnologias, cada vez mais plataformas de IA atenderam a requisitos práticos.
O sistema de análise de vídeo discutido neste tópico é criado com o Milvus, que pode analisar rapidamente o conteúdo de vídeo.
Como um banco de dados vetorial de código aberto, o Milvus oferece suporte a vetores de características extraídos usando vários modelos de deep learning. Integrado a bibliotecas como Faiss, NMSLIB e Annoy, o Milvus fornece um conjunto de APIs intuitivas, oferecendo suporte à troca de tipos de índice de acordo com os cenários. Além disso, o Milvus oferece suporte à filtragem escalar, o que aumenta a taxa de recall e a flexibilidade da busca. O Milvus tem sido aplicado a muitos campos, como processamento de imagens, visão computacional, processamento de linguagem natural, reconhecimento de fala, sistema de recomendação e descoberta de novos medicamentos.
Referências
[1] A. D. Bagdanov, L. Ballan, M. Bertini, A. Del Bimbo. “Correspondência e recuperação de marcas registradas em bancos de dados de vídeos esportivos.” Proceedings of the international workshop on 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. “Mineração de pirâmide espacial para detecção de logotipos em cenas naturais.” IEEE International Conference, 2008. https://ieeexplore.ieee.org/document/4607625
[3] R. Boia, C. Florea, L. Florea, R. Dogaru. “Localização e reconhecimento de logotipos em imagens naturais usando grafos de classe homográficos.” 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. “Aglomeração asift elíptica em protótipo de classe para detecção de logotipos.” 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
Continue lendo

Creating Collections in Zilliz Cloud Just Got Way Easier
We've enhanced the entire collection creation experience to bring advanced capabilities directly into the interface, making it faster and easier to build production-ready schemas without switching tools.

AI Agents Are Quietly Transforming E-Commerce — Here’s How
Discover how AI agents transform e-commerce with autonomous decision-making, enhanced product discovery, and vector search capabilities for today's retailers.

Legal Document Analysis: Harnessing Zilliz Cloud's Semantic Search and RAG for Legal Insights
Enhance legal document analysis with Zilliz Cloud’s Semantic Search and RAG. Improve accuracy, efficiency, and scalability for contracts, case law, and compliance.



