Syntidata
Главная / Блог / Компьютерное зрение / Детекция объектов: от задачи к рабочей модели

Детекция объектов: от задачи к рабочей модели

Компьютерное зрение

Детекция отвечает на два вопроса сразу: что на кадре и где оно находится. Разбираем весь путь от постановки задачи до модели, которая стабильно работает на реальных камерах.

Детекция объектов: от задачи к рабочей модели

Что такое детекция и чем она отличается от соседних задач

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

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

Из чего состоит результат детектора

  • Класс объекта из заранее заданного списка.
  • Рамка: координаты центра, ширина и высота либо два угла.
  • Уверенность: число от нуля до единицы, насколько модель в себе уверена.

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

Шаг 1. Формулировка задачи

Перед сбором данных ответьте письменно на несколько вопросов. Это занимает час, а экономит недели.

  1. Какие объекты нужно находить и сколько классов? Различаются ли они визуально или только по смыслу?
  2. С каких камер идёт изображение: высота установки, угол, расстояние, разрешение?
  3. Какие размеры объектов в пикселях? Объект в двадцать пикселей и объект в двести пикселей требуют разных подходов.
  4. Что дороже: пропуск объекта или ложная тревога?
  5. Где модель будет работать: сервер, встроенный блок, мобильное устройство? От этого зависят допустимые архитектуры, о чём подробнее в материале про edge-вычисления.
  6. Какая нужна скорость: кадры в секунду и допустимая задержка.

Ответы превращаются в техническое задание на датасет и в целевые метрики. Без них любая модель окажется «в целом неплохой» и практически бесполезной.

Шаг 2. Выбор архитектуры

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

КритерийОдноэтапныеДвухэтапныеТрансформерные
СкоростьВысокаяСредняяЗависит от размера
Мелкие объектыСредне, улучшается при подборе масштабовХорошоХорошо при достаточных данных
Простота обученияВысокаяСредняяНиже, нужна тонкая настройка
Требования к даннымУмеренныеУмеренныеВысокие
Типичное применениеВидеопоток, edgeТочный анализ кадровБольшие наборы, сложные сцены

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

Шаг 3. Данные и разметка

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

Сколько данных нужно

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

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

Откуда брать

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

Шаг 4. Обучение

Обучение детектора на готовом наборе — это ряд проверенных решений.

  1. Разделите данные на обучающую, проверочную и тестовую части. Разделяйте по сценам или площадкам, а не по отдельным кадрам, иначе соседние кадры из видео попадут в обе части и метрика окажется завышенной.
  2. Возьмите предобученные веса и дообучите их. Обучение с нуля оправдано только при очень больших наборах.
  3. Задайте размер входного изображения исходя из размера объектов. Если объекты мелкие, сжимать кадр до небольшого квадрата нельзя.
  4. Включите аугментации: масштаб, обрезка, яркость, контраст, шум. Отражение по горизонтали применяйте осторожно: оно меняет смысл для текста и асимметричных деталей.
  5. Следите за кривыми потерь и метрик на проверочной части. Расхождение кривых означает переобучение.
  6. Сохраняйте несколько контрольных точек и выбирайте по метрике, а не по последней эпохе.

Шаг 5. Оценка и разбор ошибок

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

Матрица типовых ошибок

  • Пропуск объекта. Часто связан с малым размером, перекрытием, нетипичным ракурсом или редким классом.
  • Ложное срабатывание. Модель принимает за объект фон или похожий предмет. Лечится отрицательными примерами.
  • Неверный класс. Путаница между близкими классами. Лечится дополнительными данными с различающими признаками и уточнением правил разметки.
  • Плохая рамка. Рамка смещена или слишком велика. Часто виновата неоднородная разметка, поэтому полезно изучить правила разметки рамок.

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

Шаг 6. Развёртывание и жизнь после него

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

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

Что мониторить

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

Частые ловушки

  • Оценивать модель на кадрах, похожих на обучающие, и удивляться провалу в поле.
  • Игнорировать мелкие объекты, пока они не окажутся самыми важными.
  • Пытаться исправить плохую разметку изменением архитектуры.
  • Выставлять порог уверенности по умолчанию без учёта цены ошибок.
  • Не фиксировать версии данных, из-за чего невозможно воспроизвести результат.

Мини-пример: детектор касок на строительной площадке

Для наглядности пройдём путь на обезличенном примере. Задача: определять, есть ли каска на человеке в зоне работ. Бизнес-вопрос — не «найти каски», а «сообщить мастеру о нарушении». Поэтому нужны два класса: человек в каске и человек без каски, либо отдельный класс каски и логика сопоставления с человеком.

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

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

Итог

Детекция — это не только выбор модели. Это цепочка: ясная задача, подходящие данные, аккуратная разметка, корректная оценка и контур обновления. Чем лучше проработаны первые звенья, тем меньше усилий уходит на последние.

Если вам нужна помощь с данными для детектора, включая редкие объекты и точную разметку, напишите нам на [email protected]. Тестовый датасет предоставляется по запросу.


Читайте также