Shotit es un motor de búsqueda de captura de pantalla a vídeo diseñado para TV y cine, ultrarrápido y eficiente en computación.
Se requiere Docker Compose. Instálelo primero.
Carga de trabajo mínima: 2v16G, preferiblemente 4v32G.
git clone https://github.com/shotit/shotit.git
cd shotit
.env.example
a .env
.env
según corresponda para su configuración, tal como está por primera vez.milvus.yaml.example
a milvus.yaml
milvus.yaml
según corresponda para su configuración, tal como está por primera vez.Cree estas carpetas necesarias.
mkdir -p volumes/shotit-hash
mkdir -p volumes/shotit-incoming
mkdir -p volumes/shotit-media
mkdir -p volumes/mycores
mkdir -p volumes/mysql
Establezca la información de usuario y grupo de mycores
en 8983, requerido por liresolr
.
sudo chown 8983:8983 volumes/mycores
Luego, active los servicios de Docker-Compose.
(Windows or Mac):
docker compose up -d
(Linux):
docker-compose up -d
PD: el archivo docker-compose.yml recupera imágenes de Docker de GitHub. Si prefiere dockerhub, utilice los siguientes comandos.
(Windows or Mac):
docker compose -f docker-hub-compose.yml up -d
(Linux):
docker-compose -f docker-hub-compose.yml up -d
Una vez que el clúster esté listo, puede agregar sus archivos de video a la carpeta entrante. Tome Big Buck Bunny de Blender como ejemplo, cuya etiqueta imdb es tt1254207, la ruta debe ser:
./volumes/shotit-incoming/tt1254207/Big_Buck_Bunny.mp4
Reinicie shotit-worker-watcher
, en caso de que no detecte el cambio de sus archivos.
docker restart shotit-worker-watcher
Cuando shotit-worker-watcher
detecta la existencia de archivos de video en la carpeta entrante, comenzará a cargar los videos en shotit-media
con almacenamiento de objetos. Después de la carga, los videos se eliminarán, luego shotit-worker-hasher
crea hash y shotit-worker-loader
carga el hash en la base de datos vectorial. Utilice el siguiente comando para ver si el proceso de índice se ha completado:
docker logs -f -n 100 shotit-worker-loader
Cuando se complete el proceso de indexación, verá un registro Loaded tt1254207/Big_Buck_Bunny.mp4
y podrá buscar los videos mediante captura de pantalla directamente desde la URL a continuación.
GET http://127.0.0.1:3311/search?url=https://i.ibb.co/KGwVkqy/big-buck-bunny-10.png
Respuesta:
{
"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"
}
]
}
¡Felicidades! Ha implementado con éxito su motor de búsqueda shotit
.
Aviso: la primera vez que se llama a la API debería ser más larga ya que primero debe cargar el hash completamente en la RAM.
Wong, L. (2024). Shotit: motor de búsqueda de imagen a vídeo con eficiencia informática para la nube. ArXiv. /abs/2404.12169
Consulte aquí para obtener documentación completa sobre:
Shotit
se compone de estas imágenes acoplables.
Imagen acoplable | Construcción de CI de Docker | Tamaño de imagen |
---|---|---|
shotit-api | ||
shotit-media | ||
observador-trabajador-shotit | ||
shotit-trabajador-hasher | ||
cargador-trabajador-shotit | ||
shotit-trabajador-buscador | ||
clasificador de shotit | ||
liresolr | ||
minio | ||
etcétera | ||
mariadb | ||
administrador | ||
Redistribuir | ||
milvus-independiente |
Conjunto de datos | Número de episodio | Volumen vectorial | tiempo de búsqueda |
---|---|---|---|
Película abierta de Blender | 15 | 55.677 | dentro de 5s |
Conjunto de datos de género propietario | 3.734 | 53.339.309 | dentro de 5s |
https://shotit.github.io/shotit-frontend/demo
Shotit
adopta significativamente su patrón de diseño de sistema de trace.moe. La visión de Shotit
es hacer que el motor de búsqueda de captura de pantalla a video sea neutral en cuanto al género, fácil de usar, eficiente en computación y ultrarrápido.
Consulte la Guía de contribución.
Apache-2.0