Вы прописываете в пайплайне случайные повороты, добавление гауссовского шума и искажение контраста, скармливаете модели 8 кадров реального брака на 50 000 чистых деталей, настраиваете веса классов и ждете, что нейросеть начнет ловить микротрещины. Синтетика для редких дефектов: как дообучить CV-браковщик при дисбалансе 1:10000 и 8 кадрах брака — это сценарий, в котором вся ваша интуиция из академических датасетов работает против вас. Классический few-shot здесь не заводится. Сеть не учит признаки дефекта. При дисбалансе такого порядка она идет по пути наименьшего сопротивления: запоминает конкретный узор пикселей конвейерной ленты на фоне этих восьми деталей, сваливается в предсказание мажорного класса и выдает 99.99% accuracy, спокойно пропуская раковины и задиры на реальной линии.
Пытаться вытянуть такой перекос лоссами — инженерная ошибка. Вы не можете умножить на ноль и получить репрезентативную выборку. Признакового пространства просто нет. Если трещина возникает раз на 50 000 проходов, а ждать год до сбора нормального датасета вам никто не даст (потому что пропускать брак к заказчику нельзя уже сейчас), выход только один — генерировать данные.
И здесь мы упираемся в суровую реальность кровавого энтерпрайза образца грядущего 2026 года с его жестким курсом на импортозамещение. Вы не можете обратиться к западным провайдерам разметки и генерации. Вы вообще не можете выпустить сырые кадры с линии за пределы завода. Служба безопасности и 152-ФЗ наглухо закрывают периметр: коммерческая тайна, NDA, физически обрезанные провода во внешнюю сеть. Вся генерация синтетических данных для обучения компьютерного зрения обязана происходить on-premise, на железе клиента.
Обычно на этом этапе кто-то приносит идею взять готовые индустриальные датасеты. Взять ту же базу проката №92, где размечены 22 типа дефектов, или общий сет №159, замешать их в веса и сделать трансфер-лернинг. Это не работает. Ваш ультра-редкий класс при дисбалансе 1:10000 — это не сферическая царапина в вакууме. Это специфическая микрокаверна на конкретном сплаве, при вашем уникальном освещении светодиодными лампами под углом 45 градусов. Открытые датасеты не закрывают такие сценарии, они лишь смещают распределение модели в сторону чужих проблем.
Генерировать придется самим. Исторически первым костылем здесь выступала процедурная вставка — берем вырезанную маску дефекта и через пуассоновское блендирование лепим ее на чистую деталь. Нейросеть пробивает эту фальшивку за одну эпоху. Она учится детектировать не сам дефект, а артефакты наложения теней и резкие переходы градиентов на границе вставки. Domain randomization с наложением абстрактного шума тоже летит в мусорку: вы заставляете модель искать черную кошку в темной комнате, где кошки никогда не было.
Рабочий пайплайн — это inpainting на базе диффузионных моделей, развернутых локально. Вы берете десятки тысяч реальных чистых деталей прямо с камеры браковщика. Размечаете на них маски там, где физически может возникнуть дефект (с учетом геометрии детали). И отдаете это диффузионной сети, дообученной на тех самых 8 драгоценных кадрах брака с помощью LoRA, чтобы она вписала дефект с учетом локальной текстуры, освещения и отражений.
Когда мы настраивали этот on-prem процесс в Morana Labs для одной из металлургических линий, стало ясно, что генерация дефектов для CV требует маниакального контроля. Диффузия любит галлюцинировать: вместо холодной трещины в металле она может нарисовать органическую паутину. Поэтому генерация жестко контролируется пространственными адаптерами, чтобы структура материала оставалась металлургически достоверной.
Самый страшный враг в этом процессе — утечка синтетики и фантомные метрики. Представьте, что вы сгенерировали 10 000 дефектов на базе 100 уникальных чистых фонов. Если хотя бы один из этих фонов попадет в валидационную выборку, ваша модель покажет precision и recall под 100%. Вы пойдете праздновать, а на следующий день конвейер пропустит тонну брака. Модель выучила не трещину. Она запомнила пылинку на фоне, на котором эта трещина генерировалась. Изоляция фонов, на которых генерируется синтетика, от фонов, которые идут в тест — абсолютна и бескомпромиссна.
Сколько реального брака нужно для якоря? Восемь кадров — это нижний предел выживания. Пять из них вы наглухо закрываете в hold-out тестовую выборку. Их нельзя трогать. Ни для дообучения генератора, ни для оценки в процессе. Это ваша единственная связь с реальностью. Оставшиеся три кадра идут на настройку диффузии как стилевые референсы. В итоговый микс обучения нейросети редким дефектам пойдет 50 000 чистых реальных фонов и 10 000 фонов с синтезированным браком. Никакого обучения на тех самых трех кадрах — они нужны только для генерации.
Sim-to-real gap измеряется не глазами технолога, который говорит «похоже на правду». Он измеряется исключительно через recall на тех пяти hold-out реальных деталях. Если синтетика красивая, но модель, обученная на ней, не ловит реальную трещину — синтетика мусор.
Что по железу и срокам? Локальная генерация 10 000 качественных сэмплов с inpainting-масками на одной видеокарте класса RTX 4090 или серверной A100 занимает от 8 до 12 часов. Деталь в высоком разрешении, многошаговый сэмплинг. Это не реалтайм инференс, здесь мы можем позволить себе подождать ночь. Запускаете пайплайн вечером в пятницу, к утру субботы у вас готов сбалансированный датасет, не покинувший стены завода.
| Архитектура браковщика | Обучение только на 8 кадрах (баланс весов) | Обучение с синтетикой (10 000 сэмплов) | Sim-to-real Recall на hold-out (5 реальных) |
|---|---|---|---|
| ResNet-50 (Classification) | Recall: 0%, FP: 140 | Recall: 80%, FP: 12 | 4 из 5 найдены |
| YOLOv8-seg (Segmentation) | Recall: 0%, FP: 0 (коллапс) | Recall: 96%, FP: 4 | 5 из 5 найдены |
| Custom ViT (Anomaly Det) | Recall: 20%, FP: 450 | Recall: 91%, FP: 8 | 4 из 5 найдены |
Чек-лист: когда дообучение модели дефектоскопии без датасета через синтетику оправдано, а когда вы занимаетесь самообманом:
- Оправдано: дисбаланс превышает 1:5000, стоимость пропуска дефекта критическая, есть хотя бы 5-10 реальных образцов для валидации, фоны деталей консистентны.
- Самообман: вы генерируете брак на чистых деталях из тестовой выборки (data leak), оцениваете качество генерации «на глаз», а не метриками детектора, используете для генерации пайплайн без учета локального освещения камеры на реальной линии.
- Самообман x2: вы пытаетесь решить проблему редких классов простым cut-paste в графическом редакторе, надеясь, что сверточная сеть не заметит резких градиентов по краям вставки.
Индустриальный компьютерное зрение не прощает лени в работе с данными. Если ваша производственная линия выдает специфический брак, а стандартные коробочные CV-системы захлебываются ложными срабатываниями или слепнут на дисбалансе — запрашивайте пилот CV-дефектоскопии Morana Labs. Начнем с живого замера на вашем конвейере и честных метрик на вашем железе.