Сегментация изображений: разработка систем Semantic, Instance, Panoptic

Заказчик получает отбраковку, учёт объектов или контроль качества там, где ручной просмотр уже не успевает за потоком. Мы разрабатываем системы сегментации изображений под ключ: от разметки данных до передачи модели и регламентов вашей команде. Точность проверяем на ваших снимках, а не на демонстрационных наборах.
Часто задаваемые вопросы

Почему сегментация изображений ломается на реальных данных

Модель, которая на публичном наборе вроде COCO отдаёт аккуратные маски, на производственных снимках проваливается по целым классам. Причина обычно не в архитектуре: в открытой разметке классы сбалансированы, свет ровный, объекты сняты с одной точки. Реальные данные приходят из разных цехов и с разных камер — с бликами, пылью, перекрытиями, — и средняя метрика по выборке остаётся приличной, пока редкий класс не уходит в ноль.

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

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

Разбираем, как это закрывается: стратификация выборки, консенсус-разметка, контроль дрейфа и постобработка контуров.

Измеримый эффект: точность, скорость конвейера, ручная проверка

Что меняется в первую очередь — доля кадров, которые человек обязан просмотреть глазами. До внедрения маска строится, но порог уверенности выставлен с запасом, поэтому на проверку уходит заметная часть потока, включая заведомо пустые области. После калибровки порога по размеченной контрольной выборке на ручной досмотр остаётся только спорный класс: выход за доверительный интервал, редкие объекты, снимки, где маска задевает границу зоны интереса. Доля ручной проверки падает с десятков процентов до единиц, и отдельно контролируется, что пропуски при этом не растут.

Вторая метрика — стабильность качества на новых данных. Мы смотрим результат не только на отложенной выборке, но и на партиях, снятых в других условиях: другое освещение, другая камера, смещённый ракурс, иная плотность объектов в кадре. Если разброс между партиями укладывается в согласованный допуск, конвейер готов к потоку; если нет — добавляем примеры проблемного класса, дообучаем и перепроверяем заново, а не подкручиваем порог вручную.

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

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

Режимы сегментации изображений: попиксельный, объектный, панорамный

Режим разбора сцены фиксирует три вещи разом: архитектуру модели, формат разметки и метрику приёмки. Выбранный под модную архитектуру, а не под задачу, он заставляет переразмечать корпус и переобучать модель. Поэтому режим определяем до первой строки разметки.

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

Схема классов выводится из режима: классы не пересекаются по смыслу, редкие состояния лучше выносить отдельно, чем сваливать в «прочее». Режимы совместимы по данным — попиксельная собирается объединением объектных масок по классу, панорамная добавляет слой фона. Расширение задачи не требует размечать корпус с нуля.

Этапы внедрения: от аудита данных до передачи модели

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

  1. Аудит набора данных. Смотрим, что уже отснято и размечено: покрытие сценариев, дубликаты, кадры без объектов, дисбаланс классов. На выходе — отчёт с решением, какие сцены доснять, а какую разметку переделать.
  2. Схема классов и правила разметки. Фиксируем иерархию классов, что считается отдельным объектом, как размечать перекрытия и границы. Правила записываем текстом: без них разные разметчики дадут разные маски на одном и том же кадре.
  3. Сборка обучающего контура. Обучение с расширением набора под реальные условия съёмки — свет, ракурс, частичные перекрытия. Данные и веса версионируем, чтобы любую итерацию можно было сравнить с предыдущей.
  4. Проверка на отложенной выборке. Считаем метрики по каждому классу отдельно, а не среднее по модели: редкий класс не должен растворяться в общей точности.
  5. Проверка на реальных партиях. Прогоняем решение на кадрах с рабочих камер, которых модель не видела, разбираем ошибки и добавляем сложные случаи обратно в обучение.
  6. Передача решения. Отдаём веса, конфигурацию схемы классов, инструкцию по дообучению и метрики на контрольном наборе — команда ведёт модель дальше сама.

Артефакты передачи: конфигурации, схемы классов, регламенты

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

  • Конфигурация конвейера: файлы параметров предобработки, масштабирования, искажений кадра и порогов срабатывания модели — с пояснением, какие значения менялись под задачу и почему.
  • Схема классов: словарь масок с описанием, что считается границей объекта, а что фоном, и как трактуются спорные случаи на стыке классов.
  • Инструкция по разметке: правила аннотирования с примерами сложных кадров, критерии приёмки и список проверок для новых аннотаторов.
  • Регламент дообучения: когда запускается переобучение, на каких данных, как проверяется, что качество не просело по редким классам.
  • Контрольный набор кадров: эталонные маски, которые прогоняются перед публикацией каждой новой версии модели.
  • Документация решения: схема конвейера, точки подключения к вашим системам и порядок отката на предыдущую версию.
  • Журнал экспериментов: какие подходы проверялись и почему от них отказались, чтобы не проходить этот путь заново.

Такой комплект позволяет вашей команде менять модель без нас: править разметку, дообучать на новых кадрах, откатывать версию. Опишите задачу — вернёмся с оценкой и планом передачи.

Кейс: отбраковка на линии — метрики до и после внедрения

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

Что изменили

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

Метрики до и после

  • Снижение пропусков: около 8% брака уходило потребителю при ручной выборке — стало менее 1% на отложенной выборке снимков.
  • Ложные срабатывания: 4% → 1,5% после калибровки порога и замены подсветки на рассеянную.
  • Покрытие: вместо одного снимка из двадцати проверяется 100% потока, скорость конвейера не снижается.
  • Переналадка на новый типоразмер упаковки: дообучение на нескольких сотнях размеченных снимков вместо переписывания правил контроля.

Чем отличается семантическая разметка от разделения объектов?

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

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

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

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

Технические сомнения: ограничения, поддержка, дообучение

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

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

Редкий класс — единицы объектов на весь набор. Модель его вообще увидит?

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

Разметка уже есть, но схема другая

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

Дообучать придётся своими силами — что для этого нужно

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

Обсудим задачу: что прислать для точной оценки

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

  • Постановка задачи — что должно быть на выходе: одна маска на класс, отдельные объекты или разметка сцены целиком, и как результат используется дальше.
  • Входные данные — 20–50 снимков в исходном виде, включая самые неудобные: слабый свет, перекрытия, шум, редко встречающиеся классы.
  • Разметка — есть ли она, в каком формате (PNG-маски, полигоны, готовый набор), кто размечал и насколько согласованы спорные объекты.
  • Схема классов — перечень классов, их иерархия и правила для неоднозначных случаев: перекрытие, частичная видимость, объекты у границы кадра.
  • Требования к качеству — приемлемая метрика (IoU, Dice) и классы, где важна точность границ, а где достаточно грубого контура.
  • Условия запуска — где считается модель: сервер, камера, мобильное устройство; сколько кадров в сутки и какое время обработки допустимо.
  • Текущий процесс — чем задача решается сейчас и на каком объёме ручной этап перестаёт справляться.

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

Направления AI-разработки

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    815
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139