Shotit — это поисковая система для преобразования скриншотов в видео, специально разработанная для телевидения и кино, молниеносно быстрая и высокоэффективная.
Требуется Docker Compose. Сначала установите его.
Минимальная рабочая нагрузка: 2v16G, предпочтительно 4v32G.
git clone https://github.com/shotit/shotit.git
cd shotit
.env.example
в .env
.env
в соответствии с вашими настройками, как это происходит в первый раз.milvus.yaml.example
в milvus.yaml
milvus.yaml
в соответствии с вашими настройками, как это делается в первый раз.Создайте эти необходимые папки.
mkdir -p volumes/shotit-hash
mkdir -p volumes/shotit-incoming
mkdir -p volumes/shotit-media
mkdir -p volumes/mycores
mkdir -p volumes/mysql
Установите информацию о пользователе и группе mycores
на 8983, необходимую для liresolr
.
sudo chown 8983:8983 volumes/mycores
Затем запустите службы docker-compose.
(Windows or Mac):
docker compose up -d
(Linux):
docker-compose up -d
PS: Файл docker-compose.yml извлекает образы докеров с GitHub. Если вы предпочитаете dockerhub, используйте вместо этого следующие команды.
(Windows or Mac):
docker compose -f docker-hub-compose.yml up -d
(Linux):
docker-compose -f docker-hub-compose.yml up -d
Как только кластер будет готов, вы сможете добавить свои видеофайлы во входящую папку. Возьмем, к примеру, Big Buck Bunny от Blender, тег imdb которого — tt1254207, путь должен быть таким:
./volumes/shotit-incoming/tt1254207/Big_Buck_Bunny.mp4
Перезапустите shotit-worker-watcher
на случай, если он не уловит изменение ваших файлов.
docker restart shotit-worker-watcher
Когда shotit-worker-watcher
обнаруживает наличие видеофайлов во входящей папке, он начинает загрузку видео в объектное хранилище shotit-media
. После загрузки видео удаляются, затем shotit-worker-hasher
создает хеш, а shotit-worker-loader
загружает хэш в векторную базу данных. Используйте следующую команду, чтобы увидеть, завершен ли процесс индексирования:
docker logs -f -n 100 shotit-worker-loader
Когда процесс индексирования завершится, вы увидите журнал Loaded tt1254207/Big_Buck_Bunny.mp4
и сможете выполнять поиск видео по снимку экрана непосредственно по URL-адресу ниже.
GET http://127.0.0.1:3311/search?url=https://i.ibb.co/KGwVkqy/big-buck-bunny-10.png
Ответ:
{
"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"
}
]
}
Поздравляем! Вы успешно развернули свою поисковую систему shotit
.
Обратите внимание: первый вызов API должен быть дольше, так как Shotit должен сначала полностью загрузить хэш в оперативную память.
Вонг, Л. (2024). Shotit: эффективная вычислительная система поиска изображений в видео для облака. АрXiv. /абс/2404.12169
Пожалуйста, смотрите здесь полную документацию по:
Shotit
состоит из этих образов докеров.
Докер-образ | Сборка Docker CI | Размер изображения |
---|---|---|
шотит-апи | ||
шотит-медиа | ||
шотит-рабочий-наблюдатель | ||
шотит-работник-хэшер | ||
Shotit-рабочий-погрузчик | ||
шотит-работник-искатель | ||
сортировщик дроби | ||
лирезольр | ||
минио | ||
и т. д. | ||
Мариадб | ||
администратор | ||
Redis | ||
Milvus-автономный |
Набор данных | Номер серии | Векторный объем | Время поиска |
---|---|---|---|
Открытый фильм Blender | 15 | 55 677 | в течение 5 с |
Собственный набор данных по жанрам | 3734 | 53 339 309 | в течение 5 с |
https://shotit.github.io/shotit-frontend/demo
Shotit
в значительной степени заимствует свой шаблон проектирования системы из Trace.moe. Цель Shotit
— сделать поисковую систему преобразования скриншотов в видео нейтральной по жанрам, простой в использовании, эффективной в вычислениях и невероятно быстрой.
См. Руководство для участников.
Апач-2.0