Skip to content

marulyanova/gpmdi_hack

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 

Repository files navigation

👨🏻‍💻 Всероссийский Цифровой Прорыв, 2024

🙋🏻‍♂️ Решение команды misis total timbudon | 2 место 🥈
⚛️ Кейс - Разметка видео от ГПМ Цифровые инновации

О сервисе

Наш сервис предоставляет инструменты для автоматической разметки видеоконтента с применением передовых технологий машинного обучения и компьютерного зрения. Поддерживается загрузка одного видео или архива с видеофайлами.

Архитектура решения

Scheme

Функционал

  • Выделение сцен с таймкодами
  • Автоматическое определение границ сцен на основе анализа видео.
  • Детекция объектов в кадре
  • Нахождение и классификация объектов на каждом кадре видео.
  • Транскрибация речи в текст
  • Преобразование аудио дорожки в текстовый формат для дальнейшего анализа.
  • Эмоциональный анализ
  • Определение эмоционального окраса речи или сцен.
  • Выделение непристойной лексики
  • Автоматическое выявление и классификация лексики по категориям (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 и анализирует аномальные объекты, применяя дополнительную модель для их обнаружения.

Пример работы

work1

work2

work3

work4

Запуск решения

sudo docker compose up --build -d

Интерфейс доступен по адресу localhost:8501

Приемущества

Рализовали максимально много полезного функционала, заданного заказчиком в техническом задании. Подошли к выполнению проекта осмысленно, подбирая максимально эффективные методы решения.
Уникальность нашего решения состоит в том, что мы получили не просто много методов для разметки, а целостную архитектуру, в которой одно решение дополняет другое.

Состав команды

Николай Александров - Data Scientist
Сергей Мартынов - Data Scientist, Frontend
Мария Ульянова - Data Scientist, Design
Артем Цыканов - Data Scientist, Frontend, Backend

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 90.3%
  • Python 9.3%
  • Other 0.4%