4 etapas para criar um sistema de pesquisa de vídeo
Como o próprio nome sugere, pesquisar vídeos por imagem é o processo de recuperar do repositório vídeos que contêm frames semelhantes à imagem de entrada. Uma das etapas-chave é transformar vídeos em embeddings, ou seja, extrair os frames principais e converter suas características em vetores. Agora, alguns leitores curiosos podem se perguntar qual é a diferença entre pesquisar vídeo por imagem e pesquisar uma imagem por imagem? Na verdade, pesquisar os frames principais em vídeos é equivalente a pesquisar uma imagem por imagem.
Você pode consultar nosso artigo anterior Milvus x VGG: Criando um sistema de recuperação de imagens baseado em conteúdo se tiver interesse.
Visão geral do sistema2
O diagrama a seguir ilustra o fluxo de trabalho típico de um sistema de busca de vídeos desse tipo.
Fluxo de trabalho do sistema de busca de vídeos.
Ao importar vídeos, usamos a biblioteca OpenCV para cortar cada vídeo em frames, extrair vetores dos frames principais usando o modelo de extração de características de imagem VGG e, em seguida, inserir os vetores extraídos (embeddings) no Milvus. Usamos Minio para armazenar os vídeos originais e Redis para armazenar correlações entre vídeos e vetores.
Ao pesquisar vídeos, usamos o mesmo modelo VGG para converter a imagem de entrada em um vetor de características e inseri-lo no Milvus para encontrar vetores com a maior similaridade. Em seguida, o sistema recupera os vídeos correspondentes do Minio em sua interface de acordo com as correlações no Redis.
Preparação dos dados
Neste artigo, usamos cerca de 100.000 arquivos GIF do Tumblr como um conjunto de dados de amostra na criação de uma solução de ponta a ponta para pesquisar vídeo. Você pode usar seus próprios repositórios de vídeos.
Implantação
O código para criar o sistema de recuperação de vídeos neste artigo está no GitHub.
Etapa 1: Crie imagens Docker.
O sistema de recuperação de vídeos requer Milvus v0.7.1 docker, Redis docker, Minio docker, o docker da interface front-end e o docker da API back-end. Você precisa criar o docker da interface front-end e o docker da API back-end por conta própria, enquanto pode puxar os outros três dockers diretamente do 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
Etapa 2: Configure o ambiente.
Aqui usamos docker-compose.yml para gerenciar os cinco contêineres mencionados acima. Veja a tabela a seguir para a configuração de docker-compose.yml:
Configure o docker compose.
O endereço IP 192.168.1.38 na tabela acima é o endereço do servidor especificamente para criar o sistema de recuperação de vídeos neste artigo. Você precisa atualizá-lo para o endereço do seu servidor.
Você precisa criar manualmente diretórios de armazenamento para Milvus, Redis e Minio e, em seguida, adicionar os caminhos correspondentes em docker-compose.yml. Neste exemplo, criamos os seguintes diretórios:
/mnt/redis/data /mnt/minio/data /mnt/milvus/db
Você pode configurar Milvus, Redis e Minio em docker-compose.yml da seguinte forma:
Configure Milvus, Redis, MinIO, Docker-compose.
Etapa 3: Inicie o sistema.
Use o docker-compose.yml modificado para iniciar os cinco contêineres docker a serem usados no sistema de recuperação de vídeos:
$ docker-compose up -d
Em seguida, você pode executar docker-compose ps para verificar se os cinco contêineres docker foram iniciados corretamente. A captura de tela a seguir mostra uma interface típica após uma inicialização bem-sucedida.
Configuração bem-sucedida.
Agora, você criou com sucesso um sistema de busca de vídeos, embora o banco de dados não tenha vídeos.
Etapa 4: Importe vídeos.
No diretório deploy do repositório do sistema, encontra-se import_data.py, script para importar vídeos. Você só precisa atualizar o caminho para os arquivos de vídeo e o intervalo de importação para executar o script.
Atualize o caminho do vídeo.
data_path: O caminho para os vídeos a importar.
time.sleep(0.5): O intervalo em que o sistema importa vídeos. O servidor que usamos para criar o sistema de busca de vídeos tem 96 núcleos de CPU. Portanto, recomenda-se definir o intervalo para 0,5 segundo. Defina o intervalo para um valor maior se o seu servidor tiver menos núcleos de CPU. Caso contrário, o processo de importação sobrecarregará a CPU e criará processos zumbis.
Execute import_data.py para importar vídeos.
$ cd deploy
$ python3 import_data.py
Depois que os vídeos forem importados, você estará pronto com seu próprio sistema de busca de vídeos!
Exibição da interface
Abra seu navegador e digite 192.168.1.38:8001 para ver a interface do sistema de busca de vídeos, conforme mostrado abaixo.
Interface de busca de vídeos.
Alterne o interruptor de engrenagem no canto superior direito para visualizar todos os vídeos no repositório.
Visualizar todos os vídeos.
Clique na caixa de upload no canto superior esquerdo para inserir uma imagem-alvo. Como mostrado abaixo, o sistema retorna vídeos contendo os quadros mais semelhantes.
Aproveite um sistema de recomendação de gatos.
Em seguida, divirta-se com nosso sistema de busca de vídeos!
Crie o seu próprio
Neste artigo, usamos o Milvus para criar um sistema de busca de vídeos por imagens. Isso exemplifica a aplicação do Milvus no processamento de dados não estruturados.
O Milvus é compatível com vários frameworks de deep learning e possibilita buscas em milissegundos por vetores na escala de bilhões. Sinta-se à vontade para levar o Milvus com você para mais cenários de IA: https://github.com/milvus-io/milvus.
Não seja um estranho, siga-nos no Twitter ou junte-se a nós no Slack!👇🏻
Continue lendo

How Zilliz Ended Up at the Center of NVIDIA’s Unstructured Data Story at GTC 2026
If unstructured data is the context of AI, then the ceiling of AI applications will be set not just by models, but by how mature the infrastructure for unstructured data becomes.

Why Teams Are Migrating from Weaviate to Zilliz Cloud — and How to Do It Seamlessly
Explore how Milvus scales for large datasets and complex queries with advanced features, and discover how to migrate from Weaviate to Zilliz Cloud.

OpenAI o1: What Developers Need to Know
In this article, we will talk about the o1 series from a developer's perspective, exploring how these models can be implemented for sophisticated use cases.



