К содержимому
MoranaLabs.
Инженерные гайды5 мин чтения0 просмотров

Разметка данных для CV без слива на сторону: пайплайн от CVAT до контроля качества 

90% проектов ломаются не на архитектуре нейросети, а на грязном датасете. Строим закрытый on-prem пайплайн от поднятого в контуре CVAT до жесткого QA. Разбираем трейд-оффы предразметки и активного обучения без иллюзий.

0xReality

Сколько стоит разметить один кадр с дефектом на индустриальном конвейере? Пять рублей? Десять? Правильный ответ — около тысячи, если считать стоимость неизбежной переразметки, зарплату инженеров и упущенную выгоду от простоев линии из-за ложноположительных срабатываний на проде. А когда речь заходит про безопасность, жесткие NDA и невозможность вынести сырые видеопотоки за периметр предприятия, цена улетает в космос. Никаких крауд-платформ. Никаких студентов на фрилансе. Только свои серверы, штатные операторы и параноидальный контроль. Разметка данных для CV без слива на сторону: пайплайн от CVAT до контроля качества — это не роскошь. Это суровая необходимость выживания модели в реальном мире. Инженерия начинается здесь, а не в импортах PyTorch.

Инфраструктура разметки и онтология: где умирает качество

Развернуть CVAT (Computer Vision Annotation Tool) внутри изолированного контура предприятия — техническая задача на сорок минут. Пробросили порты, подняли контейнеры, настроили бекапы базы. Инфраструктура готова. Но проблема не в софте. Проблема в правилах игры.

90% качества будущего датасета закладывается на этапе проектирования онтологии (набора классов) и написания инструкций для асессоров. Если инструкция допускает двойное толкование, разметчики будут трактовать ее по-разному. Помню, когда мы в MoranaLabs катили систему видеоаналитики для закрытого горно-обогатительного комбината, первую версию инструкции заказчик составил в духе «выделяйте куски породы на ленте». Через неделю мы получили эталонный мусор: один оператор обводил каждый камень по контуру, второй захватывал группу камней одним гигантским боксом, третий игнорировал мелкую фракцию, потому что для него это была «пыль», а не порода. Пришлось останавливать процесс и документировать все до пикселя: минимальная площадь объекта, правила работы с перекрытиями (occlusions), жесткий гайдлайн по отступам bounding box от краев объекта.

Не закрепите детерминированные правила на старте — переразметите весь пул через месяц. За свой счет.

Контроль качества (QA): как поймать уставшего асессора

Человек выгорает за три часа монотонной работы. Глаз замыливается. Уверенность в том, что штатный оператор будет идеально обводить пиксели всю смену — это управленческая халатность. Если у вас нет автоматизированного QA-пайплайна, у вас нет датасета.

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

  • Слепой кросс-чек: от 5% до 15% пула данных (в зависимости от сложности) отправляется на разметку двум независимым асессорам. Если их результаты расходятся, кадр улетает на арбитраж тимлиду разметки. Это отсекает индивидуальные галлюцинации.
  • Эталонные сабсеты (Honeypots): в общую очередь задач незаметно подмешиваются заранее идеально размеченные кадры (golden set). Система автоматически сверяет ответ асессора с эталоном. Провалил три ханипота за день — блокировка аккаунта и переобучение. Это единственный способ держать людей в тонусе.
  • Математика согласия: визуальный контроль не масштабируется. Мы считаем IoU (Intersection over Union) для геометрии и каппу Коэна (Cohen's kappa) для классов. Каппа Коэна критически важна: она учитывает вероятность того, что два асессора сошлись в ответе случайно. Если метрика согласия падает ниже 0.8, проблема не в людях — проблема в вашей онтологии.

Active Learning и грязный секрет предразметки

Полностью ручная разметка с нуля — это больно и дорого. Очевидный способ срезать косты — использовать саму модель для черновой работы (Model-assisted labeling). Прогнали инференс по сырым данным, отрисовали боксы, отдали человеку на валидацию. Скорость работы растет кратно. Бюджеты экономятся.

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

Подход к разметкеСкорость (фреймы/час)Согласие с QA (IoU)Деградация на edge-кейсах
Полностью ручная40 - 500.85+0% (базлайн)
Тотальная предразметка150 - 2000.92 (иллюзия)Падение recall до 15%
Active Learning (AL)60 - 800.88+Минимальная

Почему при тотальной предразметке деградируют сложные кейсы? Из-за Confirmation Bias (предвзятости подтверждения). Асессор превращается в «кликера». Если модель поставила рамку, которая смещена на пять пикселей от реальной границы дефекта, корректировка потребует от человека прицеливания и перетягивания граней. Нажать пробел (Accept) — одно легкое движение. Человек ленив. Смиритесь. Датасет молча впитывает ошибки модели, закрепляя их. С каждым циклом дообучения сеть становится все более уверенной в своей же неточности.

Решение — Active Learning (активное обучение). Мы не предразмечаем весь пул. Мы заставляем модель прогонять инференс и оценивать собственную неуверенность (через энтропию или margin sampling). Человеку отправляются только те кадры, где сеть сомневается. Кадры, где модель уверена на 99%, автоматически идут в трейн-сет без ручного ревью. Кадры с высокой энтропией (там, где модель не понимает, блик это или царапина) уходят на чистую ручную разметку, БЕЗ показа предсказаний сети. Так мы рвем порочный круг confirmation bias и получаем чистый сигнал на сложных примерах.

Баланс классов и хард-майнинг

В промышленном компьютерном зрении 99% времени на конвейере или в зоне контроля не происходит ровным счетом ничего. Дефекты, возгорания, нарушения техники безопасности — это редкие аномалии. Если вы будете просто брать каждый сотый кадр с видеопотока и отправлять в CVAT, вы разоритесь на разметке пустых фонов.

Замкнутый data-loop обязан включать Hard Negative Mining. Модель непрерывно мониторит поток на периметре. Как только она видит ложноположительное срабатывание (например, тень от крана с детектилась как человек в опасной зоне) с пограничным уровнем уверенности — этот конкретный кусок видео автоматически вырезается и улетает в базу для разметки. Мы собираем не просто данные. Мы прицельно собираем те данные, на которых текущая архитектура ломается.

Изолированный контур — не оправдание для медленной работы. Пайплайн, где данные перекидываются жесткими дисками, а экспорт JSON делается скриптами на коленке, не выдержит масштаба. Настраивается интеграция очередей. Инференс на edge-устройстве складывает сложные семплы в локальное S3-хранилище, оттуда они пушатся в CVAT, асессоры размечают их по жестким правилам с кросс-чеком, и каждую ночь модель автоматически дообучается на обновленном эталонном датасете. Утром обновленные веса едут на железо заказчика.

Это и есть production-ready подход. Без магии, без надежды на идеальных людей, с жестким математическим контролем качества каждого пикселя.

  • #Active Learning
  • #Computer Vision
  • #CVAT
  • #Data Labeling
  • #QA
ПоделитьсяTelegramX
рассылка

Новые статьи — на почту

Лонгриды про ML в проде, edge и компьютерное зрение — сразу после выхода.

Канал в Telegram: morana.log

Без спама. Нажимая «Подписаться», соглашаетесь с обработкой персональных данных

бесплатный pdf-гайд

Edge AI или облако: когда тащить нейросеть на железо

Признаки, фреймворк выбора и прикидка экономии — короткий PDF-гайд на почту.

PDF · 5 страниц · без спама. Нажимая «Получить», соглашаетесь с обработкой персональных данных

Читать дальше
— заявка

Опишите задачу  ответим как инженеры. 

Оставьте имя и Telegram — остальное обсудим. Без брифов на 40 слайдов и звонков по три раза.

Отвечаем за пару часовотвечает инженер, а не отдел продажNDA по запросу

Сюда напишем — это быстрее всего

Или сразу написать в Telegram

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