Shotit é um mecanismo de busca de captura de tela para vídeo feito sob medida para TV e cinema, extremamente rápido e eficiente em termos de computação.
O Docker Compose é necessário. Instale-o primeiro.
Carga de trabalho mínima: 2v16G, 4v32G preferencial.
git clone https://github.com/shotit/shotit.git
cd shotit
.env.example
para .env
.env
conforme apropriado para sua configuração, como é a primeira vez.milvus.yaml.example
para milvus.yaml
milvus.yaml
conforme apropriado para sua configuração, como é a primeira vez.Crie essas pastas necessárias.
mkdir -p volumes/shotit-hash
mkdir -p volumes/shotit-incoming
mkdir -p volumes/shotit-media
mkdir -p volumes/mycores
mkdir -p volumes/mysql
Defina as informações de usuário e grupo de mycores
como 8983, exigido por liresolr
.
sudo chown 8983:8983 volumes/mycores
Em seguida, acesse os serviços docker-compose.
(Windows or Mac):
docker compose up -d
(Linux):
docker-compose up -d
PS: O arquivo docker-compose.yml busca imagens do docker no GitHub. Se você preferir o dockerhub, use os seguintes comandos.
(Windows or Mac):
docker compose -f docker-hub-compose.yml up -d
(Linux):
docker-compose -f docker-hub-compose.yml up -d
Quando o cluster estiver pronto, você poderá adicionar seus arquivos de vídeo à pasta de entrada. Tomemos como exemplo o Big Buck Bunny do Blender, cuja tag imdb é tt1254207, o caminho deve ser:
./volumes/shotit-incoming/tt1254207/Big_Buck_Bunny.mp4
Reinicie shotit-worker-watcher
, caso não detecte a alteração dos seus arquivos.
docker restart shotit-worker-watcher
Quando shotit-worker-watcher
detecta a existência de arquivos de vídeo na pasta de entrada, ele começa a enviar os vídeos para shotit-media
com armazenamento de objeto. Após o upload, os vídeos seriam eliminados, então shotit-worker-hasher
cria o hash e shotit-worker-loader
carrega o hash no banco de dados vetorial. Use o seguinte comando para ver se o processo de indexação foi concluído:
docker logs -f -n 100 shotit-worker-loader
Quando o processo de indexação for concluído, você notará um log Loaded tt1254207/Big_Buck_Bunny.mp4
e poderá pesquisar os vídeos por captura de tela diretamente do URL abaixo.
GET http://127.0.0.1:3311/search?url=https://i.ibb.co/KGwVkqy/big-buck-bunny-10.png
Resposta:
{
"frameCount": 0,
"error": "",
"result": [
{
"imdb": "tt1254207",
"filename": "Big_Buck_Bunny.mp4",
"episode": null,
"duration": 596.4169921875,
"from": 473.75,
"to": 479.17,
"similarity": 0.9992420673370361,
"video": "http://127.0.0.1:3312/video/tt1254207/Big%20Buck%20Bunny.mp4?t=476.46000000000004&now=1682985600&token=kc64vEWHPMsvu54Fpl1BrR7wz8",
"image": "http://127.0.0.1:3312/image/tt1254207/Big%20Buck%20Bunny.mp4.jpg?t=476.46000000000004&now=1682985600&token=K0qxDPHhoviiexOyEvS9qHRim4"
}
]
}
Parabéns! Você implantou com sucesso seu mecanismo de pesquisa shotit
.
Aviso: a primeira chamada da API deve ser mais longa, já que o shotit precisa primeiro carregar o hash completamente na RAM.
Wong, L. (2024). Shotit: mecanismo de pesquisa de imagem para vídeo com eficiência computacional para a nuvem. ArXiv. /abs/2404.12169
Consulte aqui a documentação completa sobre:
Shotit
é composto por essas imagens docker.
Imagem Docker | Construção do Docker CI | Tamanho da imagem |
---|---|---|
shotit-api | ||
shotit-media | ||
observador-trabalhador-shotit | ||
shotit-trabalhador-hasher | ||
shotit-worker-loader | ||
shotit-trabalhador-pesquisador | ||
classificador de shotit | ||
liresolr | ||
minio | ||
etcd | ||
mariadb | ||
administrador | ||
redis | ||
milvus-autônomo |
Conjunto de dados | Número do episódio | Volume vetorial | Tempo de pesquisa |
---|---|---|---|
Filme aberto do Blender | 15 | 55.677 | dentro de 5s |
Conjunto de dados de gênero proprietário | 3.734 | 53.339.309 | dentro de 5s |
https://shotit.github.io/shotit-frontend/demo
Shotit
adota significativamente seu padrão de design de sistema trace.moe. A visão do Shotit
é tornar o mecanismo de busca de captura de tela em vídeo neutro em termos de gênero, fácil de usar, eficiente em termos de computação e extremamente rápido.
Consulte o Guia de Contribuição.
Apache-2.0