Опишите ситуацию, в которой вы улучшили CV-модель, и какие шаги вы предприняли.
Один из проектов, в рамках которого была успешно улучшена модель компьютерного зрения, касался задачи детекции дефектов на поверхности промышленных изделий (например, трещины, царапины, загрязнения) на конвейерной линии. Изначально была развёрнута модель типа YOLOv5s, обученная на 12 классах дефектов. Однако в реальных условиях производственная точность оказалась неудовлетворительной: precision — ~0.78, recall — ~0.62, что приводило как к ложным тревогам, так и к пропущенным дефектам. Целью было повысить надёжность детекции и сократить число пропусков реальных браков.
1. Анализ исходных проблем
Был проведён аудит моделей, данных и пайплайна:
-
Низкий recall у наиболее критичных классов (например, hairline crack)
-
Модель игнорировала мелкие дефекты, особенно на фоне текстуры
-
Качество аннотаций — непоследовательное и неполное: одни аннотаторы размечали трещину как один объект, другие как 2–3 bbox
-
Проблема дрейфа данных — в продакшене появились новые материалы с другим фоном, блеском, освещением
-
Тестовое покрытие — отсутствие golden set для адекватной оценки
2. Шаги по улучшению модели
A. Оценка и улучшение качества аннотаций
-
Разработка правил разметки (annotation guideline)
-
Единые требования к минимальному размеру bbox
-
Запрет на частичную аннотацию дефектов
-
Обязательная проверка каждого кадра хотя бы двумя аннотаторами
-
-
Визуальный аудит 1000 изображений с помощью Supervisely и CVAT
-
Обнаружение дубликатов bbox, несовпадения классов
-
Удаление и повторная аннотация ~18% набора
B. Аугментация и балансировка данных
-
Некоторые классы были представлены только 100–200 примерами
-
Применены:
-
CutMix и Mosaic для повышения разнообразия
-
Random brightness/contrast, blur, **noise
** - Copy-paste augmentation: дефекты с одного изображения вставлялись в другое с сохранением контекста
-
-
Увеличение доли классов "hairline crack" и "chip" через oversampling и synthetic augmentation
C. Анализ и обновление модели
-
Сравнено несколько архитектур:
-
YOLOv5m → лучше улавливает мелкие объекты
-
EfficientDet-d2 → лучше обрабатывает баланс между background и foreground
-
-
Проведён эксперимент с anchor-free подходом (YOLOX, CenterNet) — результаты были хуже на inference latency
-
Остановились на YOLOv5m с кастомным anchor fitting по обучающему набору
-
Использовано CIoU loss вместо default — увеличило mAP на мелких bbox
D. Тонкая настройка гиперпараметров
-
Learning rate schedule: cosine annealing вместо стандартного step decay
-
Введён class-weight balancing в loss-функцию: тяжёлые классы (по ошибкам) получали больший вклад
-
Batch size увеличен после перехода на mixed precision training (AMP)
3. Улучшение постобработки
-
Настроена адаптивная confidence threshold по классам:
-
Для «пыль» — порог 0.6
-
Для «трещина» — порог 0.3 (важно не пропустить)
-
-
Введена NMS по площади (soft-NMS) и IoU threshold уменьшен с 0.6 до 0.45
-
Объединение мелких соседних bbox в один, если они попадают в рамки одной дефектной зоны
4. Интеграция explainability-инструментов
-
Генерация Grad-CAM карт для анализа, куда смотрит модель
-
В 27% случаев выявлено, что модель ориентировалась на фон, а не на дефект → выявлены ошибки в разметке
-
Использование attention map overlay помогло при ручной валидации на новых данных
5. Создание golden set
-
Сформирован эталонный набор из 1200 изображений, покрывающий:
-
Все 12 классов
-
Разные партии продукции
-
Разные типы освещения и фона
-
-
Проведена трехступенчатая проверка разметки: аннотаторы → старший аннотатор → эксперт
-
Golden set использовался:
-
для валидации новых моделей
-
в CI/CD при каждом pull request
-
в мониторинге модели в продакшене (shadow inference)
-
6. Оптимизация инференса и деплой
- Модель экспортирована в ONNX, затем оптимизирована с помощью **TensorRT
** -
Достигнут прирост FPS с 24 до 39 при сохранении точности
-
Интеграция в pipeline через FastAPI-интерфейс + Redis-кэширование результатов
-
Добавлена интеграция с системой алертов на сервере (если модель начала пропускать ключевые дефекты)
7. Итоги улучшения (без заключения)
-
Precision вырос до ~0.88, Recall — до ~0.81
-
mAP@0.5 улучшился с 72% до 87%
-
Существенно сократилось число ложных негативов
-
Повысилась доверенность операторов к системе
-
Благодаря explainability-слою улучшилась разметка и обучение новых аннотаторов
-
Новая модель успешно прошла A/B тестирование и заменила старую в продакшене
Этот кейс показал, что улучшение CV-модели — это не только замена архитектуры, но системная работа с данными, метриками, пайплайнами, разметкой и человеческим фактором. Особенно важно наличие интерпретируемых метрик, прозрачности и возможности контроля качества на всех этапах.