Shotit est un moteur de recherche de capture d'écran en vidéo conçu pour la télévision et le cinéma, ultra-rapide et efficace en termes de calcul.
Docker Compose est requis, veuillez d'abord l'installer.
Charge de travail minimale : 2v16G, 4v32G préféré.
git clone https://github.com/shotit/shotit.git
cd shotit
.env.example
dans .env
.env
en fonction de votre configuration, comme c'est le cas pour la première fois.milvus.yaml.example
dans milvus.yaml
milvus.yaml
en fonction de votre configuration, comme c'est le cas pour la première fois.Créez ces dossiers nécessaires.
mkdir -p volumes/shotit-hash
mkdir -p volumes/shotit-incoming
mkdir -p volumes/shotit-media
mkdir -p volumes/mycores
mkdir -p volumes/mysql
Définissez les informations d'utilisateur et de groupe de mycores
sur 8983, requises par liresolr
.
sudo chown 8983:8983 volumes/mycores
Ensuite, activez les services Docker-Compose.
(Windows or Mac):
docker compose up -d
(Linux):
docker-compose up -d
PS : le fichier docker-compose.yml récupère les images Docker depuis GitHub. Si vous préférez dockerhub, utilisez plutôt les commandes suivantes.
(Windows or Mac):
docker compose -f docker-hub-compose.yml up -d
(Linux):
docker-compose -f docker-hub-compose.yml up -d
Une fois le cluster prêt, vous pouvez ajouter vos fichiers vidéo au dossier entrant. Prenons l'exemple de Big Buck Bunny de Blender, dont la balise imdb est tt1254207, le chemin devrait être :
./volumes/shotit-incoming/tt1254207/Big_Buck_Bunny.mp4
Redémarrez shotit-worker-watcher
, au cas où il ne détecterait pas la modification de vos fichiers.
docker restart shotit-worker-watcher
Lorsque shotit-worker-watcher
détecte l'existence de fichiers vidéo dans le dossier entrant, il commence à télécharger les vidéos sur shotit-media
alimenté par le stockage d'objets. Après le téléchargement, les vidéos seraient éliminées, puis shotit-worker-hasher
créerait un hachage et shotit-worker-loader
chargerait le hachage dans la base de données vectorielle. Utilisez la commande suivante pour voir si le processus d'indexation est terminé :
docker logs -f -n 100 shotit-worker-loader
Une fois le processus d'indexation terminé, vous remarquerez un journal Loaded tt1254207/Big_Buck_Bunny.mp4
et vous pourrez rechercher les vidéos par capture d'écran directement à partir de l'URL ci-dessous.
GET http://127.0.0.1:3311/search?url=https://i.ibb.co/KGwVkqy/big-buck-bunny-10.png
Réponse:
{
"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"
}
]
}
Félicitations! Vous avez déployé avec succès votre moteur de recherche shotit
.
Remarque : le premier appel de l'API devrait être plus long, car shotit doit d'abord charger complètement le hachage dans la RAM.
Wong, L. (2024). Shotit : moteur de recherche d'images en vidéo efficace en termes de calcul pour le cloud. ArXiv. /abs/2404.12169
Veuillez consulter ici pour une documentation complète sur :
Shotit
est composé de ces images docker.
Image Docker | Construction de Docker CI | Taille de l'image |
---|---|---|
shotit-api | ||
shotit-médias | ||
shotit-worker-watcher | ||
shotit-worker-hasher | ||
chargeur-ouvrier-shotit | ||
chercheur-travailleur-shotit | ||
trieur de shotit | ||
liresolr | ||
minio | ||
etcd | ||
mariadb | ||
administrateur | ||
redis | ||
milvus-autonome |
Ensemble de données | Numéro de l'épisode | Volume vectoriel | Temps de recherche |
---|---|---|---|
Film ouvert de Blender | 15 | 55 677 | dans les 5 secondes |
Ensemble de données de genre exclusif | 3 734 | 53 339 309 | dans les 5 secondes |
https://shotit.github.io/shotit-frontend/demo
Shotit
adopte de manière significative son modèle de conception système de trace.moe. La vision de Shotit
est de créer un moteur de recherche de capture d'écran en vidéo neutre en termes de genre, facile à utiliser, efficace en termes de calcul et ultra-rapide.
Voir Guide de contribution.
Apache-2.0