Пример реализации текстового поиска по медиаконтенту в рамках ЛЦТ2024, задача 15.
Сервис не всегда онлайн. Перед тестированием просьба связаться через организаторов, для поднятия сервиса. Заранее спасибо.
GET http://176.123.161.67/api/search
Python3
import requests
payload = {'query': 'dogs'}
response = requests.get('http://176.123.161.67/api/search', params=payload)Bash
curl "http://176.123.161.67/api/search?query=dogs"POST http://176.123.161.67/api/index
Python3
import requests
payload = {'link': url, 'description': description}
response = requests.post('http://176.123.161.67/api/index', json=payload)Bash
curl --header "Content-Type: application/json" \
--request POST \
--data '{"link":"url","description":"description"}' \
"http://176.123.161.67/api/index"GET http://176.123.161.67/workers
В библиотеке Yappy десятки миллионов коротких видео. Возможность быстро и эффективно находить интересующий контент улучшает пользовательский опыт, помогает найти новые интересы пользователя и улучшить рекомендации.
Задача заключается в разработке сервиса, который позволяет индексировать и осуществлять поиск по видео на основе медиаконтента. Сервис должен уметь обрабатывать запросы пользователей, извлекать из них ключевые слова и на их основе осуществлять поиск релевантных видеофайлов.
Input:
- Набор видеофрагментов. Около 400к видео с описанием.
Ouput:
- ML алгоритм позволяющий индексировать и осуществлять поиск по медиаконтенту.
- Backend часть, позволяющая ускорить, дополнить и сделать алгоритм доступным.
Для разработки сервиса качественного и быстрого поиска по видео мы выбрали комплексный подход с аналитикой и сравнениями. Подход заключается в оценке звука, визуала, текста визуала и описания видео. Под каждую характеристику видео выбирался свой инструмент, который открытый, достаточно быстрый, выдает качественные результаты, имеет открытую лицензию и возможность ускорения через GPU. Помимо оценки видео, перевода его в вектор, необходим быстрый поиск. Для этого мы выбрали векторную базу данных.
Более подробное описание нашего решения можно найти в документации и презентации проекта.
.
.
├── Dockerfile # Конфигурация для контейнера Docker
├── README.md # Описание проекта
├── app.py # Основной файл приложения
├── backend.py # Логика backend части приложения
├── docker-compose.yml # Конфигурация для Docker Compose
├── models_loader.py # Загрузка и инициализация моделей
├── requirements.txt # Список зависимостей
├── setup.py # Настройки проекта
├── test.py # Тесты для функционала
├── text_summary.py # Скрипт для суммаризации текста
├── conf # Конфигурации для Celery, Nginx, Flower
├── core # Основная логика проекта
│ ├── ocr # Модуль для распознавания текста на кадрах
│ ├── text_cleanup # Модуль для суммаризации текста
├── junk # Вспомогательные файлы, наработки
├── storage # Модуль для работы с векторной базой данных
├── tasks # Логика обработчиков запросов, обработка ruCLIP
├── upload_video # Пример индексации видео
└── Документация # Документация и презентации проекта
docker compose upСмотреть предложения по доработке в документации и презентации проекта.