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

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

И это достаточно интересно, чтобы попробовать перенести их пайплайн на свою платформу и замериться. И предварительно, да, похоже, это новая веха экспериментов в такой разметке.

Давайте разбираться.

Сложность описательных задач

В начале немного описания того, как вообще вообще выглядит наша задача и в чем сложность.

У нас есть картинка, которую нужно максимально детально описать, со всеми даже мелкими нюансами: описать условия съемки, количество объектов, их тип и взаимодействие между собой, описать фон и много чего еще.

Это проще показать скриншотом с эталонным описанием:

И подобных описаний нужно много, а делать их — тяжело. Сложности здесь добавляет то, что немалую часть времени занимает изучение фото и последующий фактчекинг. Почти никто одновременно не сможет хорошо различать породы змей, помнить героев мультика «Покахонтас» и распознать Piper Cherokee вместо Cessna.

Чтобы вы понимали насколько это бывает больно, вот пример затрат на разметку очень сложного домена людьми (в первой строчке — больше часа на 4 картинки):

Цифры страшные, потому что предметная область была очень специфическая
Цифры страшные, потому что предметная область была очень специфическая

Иногда фактчекинга нет и это сильно упрощает задачу. И тогда ее почти сразу можно сделать сильно дешевле и быстрее.

Одним из таких вариантов является первичный прогон данных через несколько LLM с vision-составляющей (например, ванильная LLaVA, QWEN2-VL, One-Vision, GPT4o и другие), после чего доведение до ума (перепроверка/переделка/сведение) их людьми. Иногда этого достаточно, а иногда в силу глубокой специфики — нет.

Что же нового предложили исследователи института Аллена? Они предложили то, что так часто может бесить в обычной жизни: голосовые сообщения!

Было?
Было?
Знакомо? Это и есть способ ускориться
Знакомо? Это и есть способ ускориться

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

Помимо записывания голосовых, новшеством было так же предложение выделять точками те области или объекты, про которые говорится, что позволяет в дальнейшем связывать пиксели с текстом. Это позволяет сразу решать задачу visual grounding.

И это та штука, которую сразу хочется попробовать у себя.

Пробуем у себя

Большое спасибо нашим друзьям из команды RnD CV из SberDevices, которые позволили поэкспериментировать с задачей и погонять их данные, чтоб посравнивать пайплайны: привычный отработанный и свеженький новый с аудио.

Это интересно как в плане снижения трудозатрат процесса, так и итогового качества — есть версия, что благодаря речи итог будет немного лексически побогаче. Приятно заниматься разработкой софта, в котором уже есть все инструменты, чтобы такое собрать буквально за день. ツ

Давайте смотреть итог:

Собранный UI под пайплайн, ускорен в несколько раз и аудио в 3 секунды на nano-модельке, чтобы влезть в лимит загрузки сюда картинок
Собранный UI под пайплайн, ускорен в несколько раз и аудио в 3 секунды на nano-модельке, чтобы влезть в лимит загрузки сюда картинок

Выглядит достаточно интересным и жизнеспособным.

Полная схема:

Концепция, которую можно сильно менять в зависимости от контекста
Концепция, которую можно сильно менять в зависимости от контекста

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

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

Просто транскрибация — не совсем то, что нам нужно, потому что она сильно далека от идеального текста и без обработки выглядит чаще вот так:

Здесь, конечно, запись только с одного канала, но общий вайб голосовых сообщений передает
Здесь, конечно, запись только с одного канала, но общий вайб голосовых сообщений передает

Поэтому транскрибацию стоит пропустить через LLM (для похожих задач мы чаще всего используем GigaChat и локальную Mistral), чтобы отфильтровать речевые огрехи, паузы и убрать явные ошибки.

К слову, это стоит делать и в обычном пайплайне, так как даже самые лучшие ai-тренера хоть и редко, но тоже ошибаются.

Но, мы все равно никому не верим, поэтому после всей схемы даем другим разметчикам на кросс-валидацию. Они просто сверяют точки и текст с картинкой, но если требуется, то могут внести коррективы или поставить оценку.

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

Вариации и эксперименты

Первая гипотеза, которая просится на тестирование: не обязательно заставлять разметчика ждать транскрибации, это можно делать постфактум оффлайн. То есть, разметчик просто записывает аудио (не важно, видя VLM-подсказку или нет), после чего переходит к следующему варианту и так далее.

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

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

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

Вторая гипотеза заключается в том, что мы можем разбить описание целиком фото на детальное описание каждого объекта.

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

Выводы

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

P.S.: и бонусом — почти как в меме: «screenshot результата самой model этих authors». Конкретная CV-задача на скриншоте, к слову, довольно неплохо решена, что подтверждает их тезис о том, что качество скорее бьет количество.

Работаем!

Спасибо.

Комментарии (1)


  1. kucev
    04.10.2024 15:41

    В оригинальной статье "Molmo: Outperforming Proprietary Multimodal Language Models" авторы помимо голосовух просят людей показывать на объекты, о которых говорят. Они утверждают, что это помогло научить модель связывать пиксели с текстом.

    У вас в гифке после "Давайте смотреть итог:" показывается интерфейс разметки. Правильно ли я понял, что сначала человек выделяет точками объекты про которые он будет рассказывать. И потом записывает голосовуху? Как вы потом соотносите к какой точке какой отрезок аудио относится?