🙋🏻♂️ Решение команды misis total timbudon | 2 место 🥈
⚛️ Кейс - Разметка видео от ГПМ Цифровые инновации
Наш сервис предоставляет инструменты для автоматической разметки видеоконтента с применением передовых технологий машинного обучения и компьютерного зрения. Поддерживается загрузка одного видео или архива с видеофайлами.
- Выделение сцен с таймкодами
- Автоматическое определение границ сцен на основе анализа видео.
- Детекция объектов в кадре
- Нахождение и классификация объектов на каждом кадре видео.
- Транскрибация речи в текст
- Преобразование аудио дорожки в текстовый формат для дальнейшего анализа.
- Эмоциональный анализ
- Определение эмоционального окраса речи или сцен.
- Выделение непристойной лексики
- Автоматическое выявление и классификация лексики по категориям (black, grey, 18+)
- Поиск недопустимой символики
- Детекция и распознавание запрещенных изображений или символов.
- Поиск по фото
- Возможность поиска сцен, содержащих загруженное изображение.
- Тепловые карты внимания
- Генерация тепловых карт, показывающих, на какие части кадра сосредоточено внимание.
- Определение ключевых слов
- Автоматическое извлечение ключевых слов из сцен на основе транскрипции речи.
Языки программирования: Python
Фреймворки и библиотеки:
- OpenCV — используется для обработки изображений и видео. Основные задачи: чтение видеофайлов, выделение ключевых кадров, работа с изображениями на уровне пикселей.
- Streamlit — применяется для создания удобного веб-интерфейса, через который пользователи могут взаимодействовать с проектом, визуализировать результаты обработки и управлять функциями.
- Sentence Transformers (модель clip-ViT-B-16) — для вычисления визуальных эмбеддингов. Используется в задачах кластеризации сцен и поиска похожих кадров.
- Whisper — библиотека для транскрибации аудио в текст. Применяется распознавания речи.
- YOLO (версия v8) — модель для детекции объектов в кадре. Используется для нахождения и классификации объектов на видео.
- scikit-learn (алгоритм OPTICS) — используется для кластеризации данных, в частности, для поиска главных персонажей видео.
- TfidfVectorizer (из scikit-learn) — для выявления ключевых объектов.
- Pymorphy — библиотека для морфологического анализа текста на русском языке. Применяется для нормализации текста и анализа словоформ.
Инструменты:
- Docker
Папка hack:
- main.py — Веб-приложение на Streamlit, предназначенное для разметки видеоконтента. Это основной интерфейс, который позволяет загружать видео, обрабатывать его и отображать результаты анализа, такие как эмоции, объекты и сцены.
- hack/utils/ — Папка с утилитами для обработки видео и аудио данных.
Папка hack/utils:
- clips.py — Осуществляет разбиение видео на клипы (сцены) на основе анализа изображений, временных интервалов и схожести между кадрами. Этот файл помогает выявить важные моменты в видео и разделить его на сцены.
emotional_extractor.py — Анализирует аудиофайл, извлекает эмоции в речи на русском языке с использованием модели HuBERT. Это важно для выявления эмоциональной окраски в контексте видеоконтента. - lemm.py — Выполняет анализ текста, разбивает видео на сцены, извлекает ключевые объекты и эмоции, а также применяет алгоритм TF-IDF для выделения наиболее важных объектов в каждой сцене.
- morph.py — Использует морфологический анализатор pymorphy3 для лемматизации текста и классифицирует слова в три категории: black (черный список), grey (серый список) и 18+ (для контента 18+).
- person_clustering.py — Кластеризует и сохраняет изображения людей, извлеченные из видео, с использованием алгоритма OPTICS и метода трансформеров для получения эмбеддингов изображений.
- photo_search.py — Реализует поиск схожих кадров в видео, что может быть полезно для нахождения повторяющихся сцен или объектов.
- whisper_service.py — Использует модель Whisper для извлечения текста из видео, выполняя распознавание речи.
- yolo_service.py — Обрабатывает видео, извлекая объекты с помощью модели YOLO и анализирует аномальные объекты, применяя дополнительную модель для их обнаружения.
sudo docker compose up --build -d
Интерфейс доступен по адресу localhost:8501
Рализовали максимально много полезного функционала, заданного заказчиком в техническом задании. Подошли к выполнению проекта осмысленно, подбирая максимально эффективные методы решения.
Уникальность нашего решения состоит в том, что мы получили не просто много методов для разметки, а целостную архитектуру, в которой одно решение дополняет другое.
Николай Александров - Data Scientist
Сергей Мартынов - Data Scientist, Frontend
Мария Ульянова - Data Scientist, Design
Артем Цыканов - Data Scientist, Frontend, Backend