Fine-tuning Computer Vision: где ломаются базовые модели
Готовая модель, обученная на публичных наборах, уверенно держит демонстрацию и рассыпается на живом объекте. Это смена домена данных: другая оптика, другой свет, плотность потока и ракурсы, которых в обучающей выборке не было. На складе модель принимает блик от лампы за дефект, в цеху — тень от оснастки за посторонний предмет, и ложные срабатывания модели идут потоком.
Второй источник — качество разметки. Классы пересекаются по смыслу, часть объектов пропущена, границы областей у разных разметчиков плавают на десятки пикселей. Модель честно учится на этих противоречиях: точность на обучающем наборе растёт, а на реальном потоке падает. Проверить это без отложенной выборки, собранной независимо от обучающей, невозможно.
Дообучение «на глазок» добивает результат. Переобучают все слои вместо последних, крутят темп обучения и число проходов по одним и тем же кадрам, смотрят на усреднённую метрику по всем классам. Редкий, но критичный класс в ней просто растворяется — итоговая цифра выглядит прилично, а нужный дефект по-прежнему пропускается.
Поэтому дообучение модели на своих данных начинается не с обучения, а с инвентаризации домена: какие условия съёмки вообще встречаются, где проходит граница между похожими классами, какой класс заказчику дороже пропустить, чем поймать лишний. Дальше — переразметка спорных кадров, разделение выборок по объектам и сценам, а не случайным образом, и контроль по каждому классу отдельно. Разбираем, как это закрывается в fine-tuning computer vision: что менять в данных, что в самой модели и как убедиться, что стало лучше, а не просто иначе.
Что даёт дообучение модели на ваших данных
Базовая модель, обученная на общем наборе, на ваших кадрах ведёт себя предсказуемо плохо: путает близкие классы, срабатывает на бликах и отражениях, теряется при смене оптики. Дообучение под задачу сдвигает решающую границу в вашу предметную область — не в среднем, а на конкретном складе, линии или трассе.
Точность и полнота на вашем домене
Метрики качества модели считаем по срезам, а не по усреднённому набору: день и ночь, стационарная камера и ручная съёмка, разные ракурсы. Доля верных ответов и полнота по редким классам на каждом срезе показывают, где решение уже пригодно, а где нужен разбор ошибок и доразметка.
Устойчивость к условиям съёмки закладываем при подготовке данных — расширяем выборку изменённым освещением, поворотами, шумом и размытием. Отдельно проверяем, что модель не разваливается на новой камере: смещение домена должен держать запас в весах, а не подгонка порогов.
Устранённый класс ложных срабатываний
Главный источник ложных срабатываний — не сеть, а эвристики поверх неё: правила и пороги, накрученные под первые демонстрации. Переносим логику в обучение: собираем «жёсткие негативы» — блики, отражения, похожие объекты — и добавляем в дообучаемую выборку. Эффект измеряем долей ложных на тысячу кадров — до и после.
Одна дообученная модель заменяет каскад правил, поэтому время обработки одного изображения перестаёт зависеть от сценария. Регрессионный набор фиксирует результат: правки в данных не откатывают уже закрытый класс ошибок. Работаем в открытом стеке, PyTorch, чтобы модель запускалась на вашей стороне.
Способы адаптации модели: сравнение подходов
Что сравниваем и по каким критериям
Выбор между дообучением готовой модели под задачу (fine-tuning computer vision) и обучением с нуля определяется не вкусом, а данными: объёмом разметки, разнообразием условий съёмки и ценой ошибки на редком классе. Сравниваем четыре подхода по трём критериям — сколько нужно размеченных примеров, как модель переносится на новую оптику или освещение и что придётся переобучать при появлении нового класса.
| Вариант | Когда подходит | Ограничения |
|---|---|---|
| Дообучение последних слоёв | Классов немного, данных от нескольких сотен примеров, домен близок к исходному | Слабо ловит тонкие различия внутри класса — позже понадобится полное дообучение |
| Полное дообучение | Свой домен: другая оптика, ракурсы, дефекты, которых не было в исходных данных | Нужны тысячи размеченных кадров и контроль переобучения на малой выборке |
| Обучение с нуля | Данных много, архитектура под узкую задачу, готовые веса только мешают | Долгий цикл, высокие требования к разметке и к отложенной выборке |
| Дообучение на синтетике | Реальные примеры редки или их нельзя вывозить и публиковать | Синтетика расходится с живыми кадрами — обязательна проверка на реальной выборке |
Когда подход заведомо не подходит
Полное дообучение теряет смысл, когда размеченных кадров меньше, чем параметров решения: модель запоминает выборку и разваливается на первом сдвиге условий съёмки. Синтетика не выручает там, где важно поведение на реальном оборудовании — генератор не воспроизводит артефакты сенсора и блики.
Этапы fine-tuning: от аудита данных до сдачи
Fine-tuning — это не запуск обучения, а сначала ответ на вопрос, что считается хорошим результатом. Первые шаги — аудит набора данных и фиксация метрики, по которой модель будут принимать. Порядок работ ниже одинаков для классификации, детекции и сегментации.
Аудит данных и постановка метрики
- Аудит набора данных: объём, баланс классов, дубли, противоречивые кадры. Отдельно считаем долю редких сценариев — именно они дают основной вклад в ошибки.
- Критерии приёмки: до старта фиксируем целевые показатели по каждому классу и допустимый тип ошибок, чтобы приёмка не превращалась в спор о вкусах.
- Схема валидации: делим данные на обучающую, валидационную и отложенную части; отложенную собираем из независимого источника или другого периода съёмки.
- Подготовка разметки: уточняем инструкцию, проверяем согласованность на перекрёстной выборке, закрываем спорные примеры.
- Обучение: адаптируем базовую модель под задачу, режим подбираем на валидационной части, не заглядывая в отложенную.
Проверка на отложенной выборке
- Прогон на отложенной выборке и разбор ошибок модели: группируем промахи по типам и условиям съёмки, худшие группы возвращаем в дообучение или в требования к камере и свету.
- Передача: веса, конфигурация предобработки, скрипт воспроизведения метрик и отчёт с критериями приёмки.
Артефакты проекта: конфигурации, схемы, регламенты
Комплект поставки в проекте дообучения моделей компьютерного зрения — это не только веса. Заказчик получает модель с порядком её воспроизведения и регламенты, по которым решение живёт в эксплуатации: обновляется, проверяется и откатывается без участия нашей команды. Ниже — что именно передаётся на руки и зачем каждый артефакт нужен.
Модель и воспроизводимый конвейер
- Веса обученной модели и карточка модели: задача, перечень классов, границы применимости, известные ограничения по условиям съёмки.
- Конфигурации обучения и разметки: параметры, схемы аугментаций, версии датасетов — повторный запуск даёт тот же результат, а не «примерно похожий».
- Схема конвейера обработки: от приёма кадра до выдачи ответа, с точками контроля качества и логированием каждого этапа.
- Политика доступа к данным: роли, сроки хранения, обезличивание, порядок передачи датасетов третьим лицам.
- Документация по метрикам: как считаются точность и полнота по каждому классу, на каких выборках, где лежит эталонная разметка.
Регламент эксплуатации и мониторинга
- Регламент мониторинга: какие показатели снимаются с потока, с какой периодичностью, кто разбирает отклонения и в каком виде получает отчёт.
- Пороги деградации и правила переобучения: при каком падении качества запускается новая итерация на накопленных данных и по какому набору примеров.
- Инструкция по откату на предыдущую версию модели и чек-лист приёмки обновления перед выкаткой в продуктив.
Воспроизводимость результата проверяется при передаче: мы разворачиваем конвейер на вашей инфраструктуре, обучаем модель по переданным конфигурациям и сверяем метрики с эталонными. Расхождение выше оговорённого — повод не закрывать этап, а разбирать причину.
Кейс: контроль дефектов на производственной линии
На линии сборки электронных модулей дефекты паяных соединений искали визуально: смена из четырёх операторов просматривала поток вручную. Глаз устаёт к середине смены, поэтому микродефекты — непропай, смещение вывода, излишек припоя — проходили дальше и всплывали уже на сборке готового изделия. Каждая такая находка означала разбор узла и незапланированную остановку линии.
Мы сняли с линии размеченный архив: несколько десятков тысяч кадров с камер на позициях контроля, включая отдельную выборку спорных случаев, которые операторы размечали по-разному. На этих примерах дообучили модель классификации дефектов под конкретные типы корпусов и освещение цеха — обучение и проверку на отложенной выборке вели в PyTorch.
Метрики до и после
| Показатель | До | После |
|---|---|---|
| Доля ручного контроля кадров | 100% | 18% (только спорные) |
| Ложные остановки линии за месяц | 34 | 4 |
| Время проверки одной платы | 6–8 с | 0,4 с |
| Пропущенный брак на готовой сборке | 2,1% | 0,3% |
Изменился не только алгоритм, но и процесс: спорные кадры уходят оператору на доразметку, и эти примеры раз в неделю подмешиваются в обучение. Порог срабатывания настраивается отдельно под тип платы, поэтому чувствительность не приходится ужимать до одного общего значения.
Чем дообучение отличается от обучения с нуля
Обучение с нуля стартует со случайной инициализации весов: сеть сама выучивает базовые признаки — границы, текстуры, формы — и лишь затем целевую задачу. Поэтому размечать нужно десятки тысяч кадров на класс с балансом по освещению, ракурсам и сценам съёмки. Дообучение (fine-tuning) берёт модель, уже видевшую миллионы изображений, и подстраивает признаки под вашу предметную область — на старте хватает нескольких сотен корректных примеров редкого класса.
Сроки выхода в работу отличаются так же: с нуля это недели итераций и параллельная работа разметчиков, при дообучении первые пригодные веса появляются за дни, а на готовом наборе — за часы. Мы замораживаем ранние слои, обучаем последние блоки и голову классификации малым шагом обучения — модель не теряет обобщающую способность на соседних классах.
Главный риск — переобучение на маленькой выборке. Признак виден по расхождению кривых: на обучающем наборе точность растёт, на отложенном падает или стоит. Лечится аугментацией, ранней остановкой, стратифицированным разбиением и обязательной проверкой на отдельном наборе из реального потока камеры, а не на перемешанных примерах.
Если уже развёрнута сторонняя модель, её не обязательно выбрасывать. Веса выгружаются в переносимый формат — совместимость между средами закрывает открытая экосистема PyTorch, — обе версии гоняются параллельно на одном потоке, сравнение идёт по метрикам на класс, а не по средней точности. Перевод трафика постепенный, с сохранённым откатом на прежнюю версию.
Выбор диктует близость задачи к тому, что модель уже видела: близкая область — дообучение, уникальная модальность и жёсткие требования к домену — гибрид, где часть слоёв обучается с нуля.
Вопросы перед стартом: данные, риски, ограничения
Требования к данным зависят от класса задачи, а не от «магического» числа кадров. Для классификации сцены хватает нескольких сотен примеров на класс, для детекции и сегментации нужны тысячи размеченных объектов — и решает здесь не объём, а разнообразие: ракурсы, освещение, фон, типы объектов. Ниже собрали сомнения, которые чаще всего всплывают до старта: про разметку, контур обучения, контроль переобучения и устойчивость к смене условий съёмки.
Сколько данных нужно, чтобы дообучение дало результат?
Порог зависит от класса задачи: классификация чувствительна к балансу классов, детекция — к числу объектов на кадр. На разведочном прогоне мы обучаем модель на доступной выборке и замеряем качество на отложенной — видно, каких сцен не хватает. Дальше либо добавляем разметку точечно, либо усиливаем набор аугментацией.
Что делать с ошибочной разметкой?
Это главный источник шума: модель учится на противоречиях и теряет точность на пограничных случаях. Прогоняем выборку через перекрёстную проверку, считаем расхождения между разметчиками и отправляем спорные кадры на арбитраж. Отдельно чистим классы с размытыми границами — их обычно и путает сеть.
Можно ли обучать на наших серверах?
Да. Обучение и вывод разворачиваем в вашем контуре: данные не покидают периметр, доступы выдаются по ролям. Если своих ускорителей нет, считаем требования к оборудованию и предлагаем вариант с обезличенной выгрузкой на нашей стороне.
Как проверяется переобучение?
Держим отложенную и контрольную выборки, снятые в других условиях, чем обучающая. Разрыв в качестве между ними — сигнал, что модель запомнила кадры, а не признаки. Тогда подключаем регуляризацию, раннюю остановку и расширение набора аугментацией.
Что будет при смене условий съёмки?
Если новая камера, свет или ракурс не были в данных, качество падает. Закладываем контроль дрейфа: периодически сэмплируем кадры из эксплуатации и сравниваем их распределение с обучающим. При сдвиге делаем дообучение на новых кадрах, не пересобирая решение целиком.
Что нужно от вас для старта и оценки задачи
Оценка задачи по дообучению модели компьютерного зрения зависит не от объёма переписки, а от полноты входных данных. Чем раньше мы увидим реальные кадры и поймём, где модель будет работать, тем точнее назовём сроки и меньше этапов придётся переделывать. Ниже — минимум, которого достаточно, чтобы вернуться с оценкой и планом работ.
- Примеры данных. Реальные изображения или записи с камер — включая сложные кадры: слабый свет, перекрытия, размытие, редкие классы объектов.
- Разметка. Есть ли она, в каком виде (рамки, маски, ключевые точки) и кто подтверждает спорные случаи.
- Текущая модель. Что используется сейчас, на каких данных обучалась и какие ошибки мешают больше всего — так понятно, хватит ли дообучения или нужна пересборка.
- Критерии приёмки. Какая метрика считается успехом: доля верных срабатываний, пропуски, ложные тревоги, — и на каком наборе кадров это проверяется.
- Ограничения инфраструктуры. Где модель будет работать — сервер, облако, камера на объекте; допустимая задержка отклика и требования к автономности.
- Доступы. Репозиторий с кодом, хранилище данных, тестовый стенд или запись потока, порядок согласования доступа.
- Сроки и приоритеты. Когда нужен первый рабочий результат и какие классы объектов критичны в первую очередь.
Этого набора достаточно, чтобы обсудить задачу предметно и не гадать. Опишите задачу — вернёмся с оценкой и планом работ: предложим схему дообучения, объём проверок и этапы.







