Про проблему сегментации
Есть задача Instance Segmentation объекта по текстовому Open-Vocabulary описанию. С поправкой на бизнес, что мы не пользуемся тяжёлыми LLM на 200B+ параметров или дорогими сторонними API.
Обычно она решается за 2 шага: текст в бокс, бокс в сегмент. Все можно запустить практически на любом GPU. Долгое время бизнес сидел на связках типа groundingdino + sam. Но в них есть проблемы:
1. Боттлнек в боксах между моделями. Два сегмента вписанные в одинаковые боксы для sam неразличимы, например голова девушки и ее прическа каре или все колесо машины и отдельно покрышка. Недавно частично sam3 закрыл эту проблему, затащив к себе тестовый энкодер. Но точность по боксам в ряде случаев у него будет выше. Пока это не идеальное решение, но перспективное.
2. Ограничения в текстовом описании. Обычно за это отвечают clip-подобные модели, у которых ограничена длина текста на входе. И что ещё важнее это не ризонинг модель. Т.е. какие слова написали, то буквально и выделяем с жесткой логикой приоритетов. А что-то вроде “человек на которого показывают пальцем”, будет сложно найти, особенно, если в сцене несколько людей, а пальцем показывают на одного. Или какие-то контекстные сцены, где вообще не получится только по визуалу выделить объект. Есть различные наработки типа LISA-based, GSVA, Text4Seg и пр. Но расширяя задачу они теряют в точности и повышают требования к VRAM, т.к. пока это просто связка вида (слаба и общая) LLM + sam. Конечно можно взять Gemini 3 pro (детекция) + sam3, и как Meta заявляют это SOTA. Но для этого нужно подключать сторонний API и возвращаться к проблеме боттлнека боксов.
Поэтому приходится городить свои велосипеды под задачу. В частности для sam3 хотелось бы иметь более тесную связь текстового энкодера с моделью сегментации и лучше end-to-end. А в идеале замену на узкоспециализированную LLM с лёгким ризонингом, у которой выход затюнен под сегментацию
Про проблему сегментации
Ильдар Идрисов