🏢 Ситуация
Datacore открыла собственный фулфилмент-центр, и туда поставили камеры на линии упаковки. Операционный директор:
«Повреждённые коробки доезжают до клиентов — возвраты, негатив. Контролёр физически не успевает смотреть всё. Камеры снимают каждую коробку — можно ли автоматом ловить мятые и порванные?»
Лена:
«Бинарная классификация изображений: ок / брак. Датасет маленький — контролёры разметили всего 4 000 фото (из них 400 с браком). Ключевая техника здесь — transfer learning: не учить сеть с нуля, а дообучить предобученную. С нуля на 4 000 картинок не взлетит.»
🎯 Ваша задача
- Понять, почему для картинок нужны свёрточные сети (CNN).
- Освоить transfer learning: fine-tuning предобученной модели.
- Применить аугментации и правильно оценить модель при дисбалансе.
📚 Теория
Почему не полносвязная сеть
Фото 224×224×3 = 150 528 входов. Полносвязный слой на 1000 нейронов — 150 млн весов, и сеть должна отдельно выучить «мятый угол» в каждой точке кадра. Свёртка решает обе проблемы: маленький фильтр (например 3×3) скользит по всему изображению и ищет один и тот же паттерн везде (weight sharing).
Как устроена CNN
- Свёрточные слои — учат иерархию признаков: первые слои видят края и углы, средние — текстуры, глубокие — «мятость», «разрыв».
- Pooling — уменьшает разрешение, даёт устойчивость к сдвигам.
- Голова — полносвязный слой поверх признаков → классы.
Transfer learning — главный приём практического CV
Сети, предобученные на ImageNet (миллионы картинок), уже умеют видеть края, текстуры, формы. Берём предобученный backbone (ResNet, EfficientNet), а дальше два режима:
- Feature extraction: замораживаем backbone, учим только новую голову. Для крошечных датасетов.
- Fine-tuning: размораживаем часть/все слои и дообучаем с маленьким LR (10–100× меньше обычного), чтобы не разрушить предобученные веса.
Аугментации — бесплатные данные
Случайные повороты, отражения, яркость/контраст, кропы — из 4 000 фото делаем «бесконечный» поток вариаций. Правила: аугментации — только на train; выбирать реалистичные (коробка не бывает вверх ногами на конвейере? — вертикальный флип не нужен).