Баннер мобильный (3) Пройти тест

«Алгоритм YOLO нас не устроил, и мы сделали свой»: как студенты Skillfactory разработали решение для KION

Как научить киностриминг узнавать актеров и разделять сцены по смыслу

Кейс

27 ноября 2025

Поделиться

Скопировано
«Алгоритм YOLO нас не устроил, и мы сделали свой»: как студенты Skillfactory разработали решение для KION

Содержание

    На хакатоне Skillfactory с бизнес-партнерами студентам направления «Компьютерное зрение» поставили нетривиальную задачу: разработать систему распознавания актеров и разделения видео на отрезки по смыслу для онлайн-кинотеатра KION. О том, как они организовали работу, с какими сложностями столкнулись и какой выдали результат — рассказываем в статье. 

    «Мы рассчитывали на свежий взгляд на проблему»: с каким брифом пришли партнеры

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

    Видео в KION — это динамичный многокамерный материал: диалоги, сцены действия, постоянная смена темпа, ракурсов и освещения. В таком потоке важно понимать не только где меняется картинка, но и где заканчивается сюжетный фрагмент. Отсюда возник вопрос — как автоматически разбивать видео на логически завершенные сцены, а не просто фиксировать монтажные склейки. Второй вопрос связан с персонажами: как надежно находить и отслеживать героев или объекты по всему видео, даже если меняется камера, ракурс, свет или внешний вид.

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

    Мы рассматривали хакатон как площадку для генерации инновационных идей в области анализа мультимодальных данных. Ключевой задачей было не столько получение готового к внедрению продукта, сколько поиск нестандартных подходов к семантическому анализу медиаконтента с применением компьютерного зрения, LLM и анализа звукового ряда. Мы рассчитывали на свежий, возможно, даже смелый взгляд на проблему.

    Сергей Барышев, руководитель команды КИОН ИИ

    «Мы распределили задачи, опираясь на возможности команды»

    За реализацию проекта взялись несколько команд, но победила команда №3. Она состоит из шести студентов онлайн-магистратуры Skillfactory и ТГУ по нейросетям и компьютерному зрению. В нее вошли тимлид Алексей Дюков (инженер-схемотехник), Екатерина Жилина (ученый), Глеб Плотников (сервисный инженер по радиооборудованию), Наталия Малышкина (ведущий инженер ОАО РЖД), Георгий Понкратов (веб-маркетолог) и Сергей Корюкалов (маркетолог-аналитик). Преимуществом команды было то, что они уже работали вместе на другом хакатоне.  

    Совместную работу они координировали в групповом чате в Telegram. Чтобы распределить задачи, тимлид собрал информацию о каждом: чем занимается, какой опыт в программировании есть, интересуется ли компьютерным зрением и сколько времени готов уделять проекту. 

    Кейс разбили на 11 задач: разметка видео, детекция и трекинг людей, распознавание лиц, поиск переключений камер, анализ звука, классификация фона, работа с субтитрами (включая генерацию через распознавание речи и LLM), модель для обнаружения смены сцен, сборка и докеризация проекта, подготовка материалов для презентации и доклада.

    В нашем Telegram-чате мы провели голосование, чтобы понять, кто и чем может и хочет заниматься. Мы распределили обязанности, опираясь на опыт и возможности членов команды. Поскольку время было ограничено, мы поделили задачи на обязательные и желательные. Вторую группу решили выполнить, если останется время, чтобы повысить ценность нашего решения.

    Алексей Дюков, тимлид команды, студент онлайн-магистратуры по компьютерному зрению

    В процессе работы были ежедневные встречи, больничные, сложности с интеграцией решений и авралы из-за нагрузки по учебе. Но в конечном итоге студенты сформировали и презентовали решение.

    «Сложнее всего было с субтитрами»: каким получился результат

    Команда разделила решение кейса на две независимые ветки: дробление видео на сцены и распознавание и трекинг актеров.

    Разбиение видео на сцены

    Чтобы выделить сцены, нужно было решить несколько подзадач:
    — разбить видео на шоты (короткие отрезки с одной камеры);
    — выделить сцены по характеристикам звука;
    — выделить сцены по анализу субтитров.
    Затем — объединить результаты всех алгоритмов.

    Для шотов мы нашли готовую библиотеку, но ее качество нас не устроило. Поэтому разработали свой алгоритм на базе OpenCV. Он работал медленнее, но давал более точное разбиение. Количественно сравнить качество мы не смогли: обработка двухчасового фильма занимала около пяти часов вместе с трекингом актеров.

    Алексей Дюков, тимлид команды, студент онлайн-магистратуры по компьютерному зрению

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

    Алгоритм по субтитрам строился на языковой модели, которая отслеживала смену смысла в тексте.

    Сложнее всего было с субтитрами. Мы долго не могли их найти, а когда нашли — обнаружили, что они рассогласованы с видеорядом и этот рассинхрон накапливается. К концу двухчасового фильма они отставали уже на несколько минут. Из-за этой проблемы и нехватки времени на настройку параметров анализатора текста эта часть функционала не вошла в финальный проект. В итоге выделяли сцены по двум сигналам: смене шотов и изменениям в аудиодорожке. Мы выбрали простой алгоритм: объединяем шоты, пока звук не укажет на смену сцены. Если аудиосигнал и смена шота расходятся менее чем на три секунды, считаем это одной сценой. Такой подход убрал ложные срабатывания, которые появлялись из-за резких изменений звука внутри одного шота.

    Алексей Дюков, тимлид команды, студент онлайн-магистратуры по компьютерному зрению

    Трекинг актеров

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

    Для трекинга сначала использовали алгоритм YOLO, но он часто «ронял» треки и присваивал одному и тому же актеру разные ID внутри одного шота. Это портило статистику. Поэтому студенты разработали собственный алгоритм трекинга: он использовал YOLO как детектор, но опирался на кастомно разработанную логику сопоставления треков.

    Пример работы алгоритма от студентов Skillfactory. Источник: презентация проекта на хакатоне

    Для распознавания лиц применили библиотеку dlib. Команда собрала базу изображений нескольких десятков актеров — в разном возрасте и в разных условиях, чтобы повысить точность.

    Алгоритм получал изображения людей от трекера и начинал с быстрого прохода по базе: брал одно фото каждого актера и сравнивал с лицом в кадре. Если модель уверенно находила совпадение — результат фиксировали. Если уверенности не хватало, но и явного несоответствия не было, модель проверяла лицо по остальным фото этого актера. Параллельно она добавляла во временную базу новые кадры с уже распознанными лицами. После первого прохода запускали второй. На нем модель сравнивала лица уже не только с исходной базой, но и с наборами изображений, собранными по фильму. Логика простая: лицо актера в пределах фильма почти не меняется, поэтому такая сверка помогает распознать актеров на сложных или низкокачественных кадрах, где первый проход не справился.

    Алексей Дюков, тимлид команды, студент онлайн-магистратуры по компьютерному зрению

    Когда отдельные алгоритмы начали давать стабильный результат, проект собрали и упаковали его в Docker.

    С хакатона — в R&D: что будет дальше с проектом студентов

    Партнеры высоко оценили решение, которое предложили студенты. Они отметили, что команда не только хорошо поработала с алгоритмами, но и сформировала комплексное инженерное воплощение. Потенциал внедрения наработок студентов оценят в R&D отделе ИИ-команды KION.

    Мы уже взяли на заметку несколько архитектурных решений и методов, предложенных командами, для дальнейшего изучения. Основным ограничением, с которым столкнулись участники в условиях сжатых сроков, стала оптимизация производительности. В наших планах — проработка этого аспекта для повышения эффективности алгоритмов. Наиболее перспективные наработки проанализирует наша R&D-команда (КИОН ИИ) на предмет интеграции в существующие сервисы. Мы рассматриваем прототипы, созданные на хакатоне, как ценный proof-of-concept, который может лечь в основу будущих продуктовых фич.

    Сергей Барышев, руководитель команды КИОН ИИ

    Хакатон позволил студентам отточить свои навыки на практике и поработать с реальной задачей от бизнес-партнера. Узнайте больше о хакатонах и песочницах от Skillfactory и принимайте участие!

    Кейс

    Поделиться

    Скопировано
    0 комментариев
    Комментарии