Image

Как я собрал и подготовил датасет дефектов печатных плат для обучения моделей YOLO

Когда пришло время выбирать тему диплома, я, как и многие студенты, понятия не имел, о чём писать. После мозгового штурма с одногруппниками родилась идея, которая из простого «варианта для защиты» превратилась в полноценный инженерный проект: «исследование и разработка системы автоматического распознавания дефектов печатных плат».

Со временем я понял, что выбрал тему не случайно — это реально актуальная задача для производства, где качество пайки напрямую влияет на работоспособность устройств, а ещё отличный шанс пройти весь цикл Computer Vision проекта от сбора данных до обучения моделей.

Эта статья краткая выжимка моего опыта: как собрал собственный датасет дефектов печатных плат для обучения моделей, какие инструменты использовал и на что стоит обратить внимание.

Статья будет полезна:

  • начинающим специалистам в Computer Vision;

  • студентам, выбирающим тему проекта или диплома;

  • самоучкам, которые хотят не просто «обучить YOLO на готовом датасете», а разобраться, как всё устроено в реальности.

Я не претендую на экспертный вердикт, это черновик моего самообучения, я хочу показать особенности и помочь другим избежать тех же вопросов, на которые мне пришлось тратить время.

Введение

В промышленности важно своевременно выявлять дефекты на печатных платах. Большинство открытых датасетов не соответствуют конкретным условиям или содержат ограниченное количество примеров, поэтому я решил собрать собственный датасет.

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

Чтобы не уйти в бесконечное планирование, я выбрал платы, которые используются для обучения пайке микроэлементов — на них можно легко моделировать дефекты вручную.

В отличие от существующих датасетов и исследований, направленных на использование больших, сбалансированных датасетов (например, COCO, Pascal VOC), реальные данные часто не сбалансированы и «грязные». В своей работе я столкнулся именно с этим, разрабатывая систему автоматического распознавания дефектов печатных плат.

В рамках дипломного проекта я разработал систему из трех моделей YOLO, предназначенную для автоматического выявления дефектов на печатных платах. Идея заключается в поэтапном распознавание, сначала определяем, что перед нами действительно плата, затем анализируем её элементы, и выявляем дефекты.

Подготовка данных, оборудование, среда

Для эксперимента были закуплены 20 печатных плат, двух различных типов. Платы были разделены на следующие категории: 1 плата – чистая, не тронутая; 2 платы – полностью распаяны без дефектов; 2 платы – чистые, с царапинами и нарисованными дефектами дорожек; 5 плат – полностью распаяны с дефектами пайки и царапинами. Всего снято 203 изображения в разных условиях: менялись камеры (веб-камера и телефон), освещение, угол наклона, расстояние. Часть плат имела намеренно внесенные дефекты (непропай, замыкание, трещина дорожки и др.).

Рисунок 1. Пример изображений печатной платы №1 экспериментального датасета
Рисунок 1. Пример изображений печатной платы №1 экспериментального датасета
Рисунок 2. Пример изображений печатной платы №2 экспериментального датасета
Рисунок 2. Пример изображений печатной платы №2 экспериментального датасета

Цель — чтобы датасет содержал максимально разнообразные данные, а не выглядел как синтетика.

Чтобы предотвратить переобучение модели и повысить ее устойчивость к различным вариантам объектов, в датасет были добавлены 354 изображения схожих плат и отдельных элементов плат. Это позволило модели видеть больше разнообразных примеров и лучше различать нюансы между похожими объектами. В итоге общее количество изображений в датасете достигло 557, что обеспечило достаточное разнообразие данных для обучения модели и уменьшило риск того, что она будет слишком хорошо запоминать конкретные примеры вместо того, чтобы учиться обобщать закономерности.

Рисунок 3. Пример изображений отдельных элементов экспериментального датасета
Рисунок 3. Пример изображений отдельных элементов экспериментального датасета

Добавление изображений отдельных элементов плат повысило качество модели примерно до 1,3%, так как это позволило модели лучше различать детали и «сломало» иллюзию закономерного расположения элементов на платах. В то же время включение изображений схожих плат, плат с другим цветом и конфигурациями немного снизило точность модели на величину чуть больше 2%, что объясняется увеличением разнообразия данных и необходимостью модели обобщать закономерности.

Рисунок 4. Пример схожих плат экспериментального датасета
Рисунок 4. Пример схожих плат экспериментального датасета

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

Рисунок 5. Примеры изображений экспериментального датасета
Рисунок 5. Примеры изображений экспериментального датасета

Для аннотирования и разметки полученного датасета используется платформа Roboflow, у нее удобный интерфейс, экспорт в YOLO-формат и встроенные аугментации. Разметка включала не только выделение объектов, но и проверку качества аннотаций, что является критически важным этапом в задачах CV. С помощью встроенной аугментации я увеличил датасет с 557 изображения до 1449 изображений.

Рисунок 6. Аугментация датасета на платформе Roboflow
Рисунок 6. Аугментация датасета на платформе Roboflow
Рисунок 7.  Пример исказившихся плат экспериментального датасета
Рисунок 7.  Пример исказившихся плат экспериментального датасета

С встроенной (бесконтрольной) аугментацией необходимо быть аккуратным так как она может испортить датасет. Например, повороты могут привести к изменению геометрии исходных полигонов (с 4 на 6/8), а также произойти смещение ограничивающих рамок. Эти искажения обусловлены особенностями обработки изображений при поворотах так как при кадрировании части полигона выходят за границы нового изображения, вследствие чего автоматически добавляются новые точки в местах пересечения полигона с границами кадра.

Второй тип искажения связан с попытками системы сохранить объект целиком после трансформаций, что приводит к добавлению буферной зоны вокруг него. Это, в свою очередь, снижает точность аппроксимации контура.

Рисунок 8. Дефект "буферной зоны" и увеличение количества точек полигона
Рисунок 8. Дефект «буферной зоны» и увеличение количества точек полигона

Для экспериментов также использовал CVAT и Label Studio, чтобы сравнить удобство и скорость работы — об этом я подробнее расскажу в отдельной статье.

Работа с подготовкой датасета проводилась в среде Google Colab с Python версией 3.12.12 и фреймворком глубокого обучения PyTorch версии 2.8.0+cu126.

Датасет

Всего в датасет вошло 1449 изображений, они различаются по конфигурации, цвету, количеству и типу компонентов, освещению и углу обзора. Это разнообразие помогает модели быть более устойчивой к внешним изменениям и лучше обобщать данные.

Лучший способ избежать «мусора» на выходе — не дать ему попасть на вход.

При работе с данными всегда необходимо контролировать их качество, распределение по классам, корректность разбиения на train / validation / test. Лучший способ — это визуализация.

При аугментации данных изначально задается распределение по классам, например, я задавал train 80% (446 изображений), validation 10% (57 изображений), test 10% (57 изображений) на втором этапе Train/Test Split (см. Рисунок 5). Однако после проведения аугментации распределение неожиданно изменилось до: train 92%, validation 4%, test 4%, что является довольно частой ошибкой при аугментации.

Рисунок 9. Результат распределения экспериментального датасета после аугментации
Рисунок 9. Результат распределения экспериментального датасета после аугментации

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

Было до проверки

После проверки

Train

1338

Train

1159

Valid

57

Valid

144

Test

54

Test

146

Датасет включает 15 классов электронных компонентов, представленных в таблице ниже:

Класс

Train

Valid

Test

Всего

% датасет

1

QFP

465

55

81

601

0.82%

2

QFP_area

116

19

22

157

0.21%

3

SOP

1342

165

141

1648

2.25%

4

SOP_area

200

38

26

264

0.36%

5

SOT23

2050

265

286

2601

3.56%

6

SOT_area

463

85

47

595

0.81%

7

hole

1184

148

210

1542

2.11%

8

smd_LED

2300

457

263

3020

4.13%

9

smd_area

8631

1540

967

11138

15.23%

10

smd_capacitor

6672

1299

705

8676

11.87%

11

smd_combo

1171

158

109

1438

1.97%

12

smd_combo_area

275

44

32

351

0.48%

13

smd_diod

2348

316

272

2936

4.02%

14

smd_resistor

25829

3651

2759

32239

44.09%

15

test_point

4736

640

531

5907

8.08%

Такое распределение естественно отражает реальные физические соотношения компонентов на печатных платах. На одной плате всегда присутствует большое количество пассивных элементов (smd_resistor, smd_capacitor), они составляют более 50% всех аннотаций, что соответствует реальной плотности монтажа. Активные компоненты (QFP, SOP, SOT23) встречаются значительно реже, поскольку на одной плате обычно размещается ограниченное количество контроллеров или процессоров, что может негативно сказаться на качестве их распознавания моделью.

Такой дисбаланс классов создает интересную задачу для обучения моделей, но об этом в следующей части. Спойлер: все решаемо, есть подходы к балансировке и оптимизации обучения на таких данных.

Рисунок 10. Распределение классов в обучающей, валидационной и тестовой выборках (train, valid, test)
Рисунок 10. Распределение классов в обучающей, валидационной и тестовой выборках (train, valid, test)
Рисунок 11. Распределение классов в обучающей выборке (train)
Рисунок 11. Распределение классов в обучающей выборке (train)
Рисунок 12. Распределение классов в валидационной выборке (valid)
Рисунок 12. Распределение классов в валидационной выборке (valid)
Рисунок 13. Распределение классов в тестовой выборке (test)
Рисунок 13. Распределение классов в тестовой выборке (test)

Классы в выборках train, valid и test распределены достаточно равномерно, что видно по схожим пропорциям объектов каждого класса в разных подвыборках. Такое распределение способствует более стабильному обучению модели и повышает достоверность ее оценки на валидационных и тестовых данных.

Для визуализации структуры данных я применил методы t-SNE и PCA.

Рисунок 14. Визуализация латентного пространства методом t-SNE
Рисунок 14. Визуализация латентного пространства методом t-SNE

t-SNE показал четкое разделение классов, это говорит о том, что латентное пространство, из которого произведена редукция размерности, эффективно кодирует семантическую информацию, но не сохраняет глобальную структуру данных, и его оси не несут интерпретируемой нагрузки. В отличие от PCA, в t-SNE взаимное расположение кластеров друг относительно друга не имеет физического смысла (Например, при визуализации датасета MNIST содержащего рукописные цифры от 0 до 9, на графике единица будет находится дальше от нуля, чем четверка. Потому, что по написанию единица больше похожа на четверку, чем на ноль).

Рисунок 15. Визуализация латентного пространства методом PCA
Рисунок 15. Визуализация латентного пространства методом PCA

PCA же выявил глобальные взаимосвязи в данных, а именно градиентное распределение вдоль главных компонент, что может отражать общий тренд в структуре латентного пространства и видны линейные корреляции между различными компонентами, особенно по первой главной компоненте. Этот метод дает общее представление о структуре данных, но не эффективен для визуальной кластеризации в случае сложных нелинейных связей. Например, smd_resistor и smd_capacitor оказались достаточно близки, что логично по их форме и размеру.

Эти методы помогли убедиться, что данные готовы к обучению, и показали, какие классы стоит дополнительно усилить аугментацией.

На следующем этапе я обучал различные модели YOLO на этом датасете, сравнивал качество распознавания разных версий моделей и анализировал влияние дисбаланса классов на метрики качества.

Полученный опыт погрузил в полный цикл Machine Learning проекта, от реальных данных и разметки до экспериментов с моделями и инфраструктурой. Этот опыт показал, что даже небольшой по объему датасет может быть крайне полезен, если он реалистичный, хорошо размеченный и собран с пониманием цели.

Если вы инженер или исследователь в сфере ML/CV и вам есть, что обсудить, буду рад пообщаться. Я открыт к junior-позициям и исследовательским задачам, связанным с Computer Vision, Data Labeling и MLOps.

Источник: habr.com

✅ Найденные теги: Как, новости

ОСТАВЬТЕ СВОЙ КОММЕНТАРИЙ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Каталог бесплатных опенсорс-решений, которые можно развернуть локально и забыть о подписках

галерея

Фото сгенерированных лиц: исследование показывает, что люди не могут отличить настоящие лица от сгенерированных
Нейросети построили капитализм за трое суток: 100 агентов Claude заперли…
Скетч: цифровой осьминог и виртуальный мир внутри компьютера с человечком.
Сцена с жестами пальцами, где один жест символизирует "VPN", а другой "KHP".
‼️Paramount купила Warner Bros. Discovery — сумма сделки составила безумные…
Скриншот репозитория GitHub "Claude Scientific Skills" AI для научных исследований.
Структура эффективного запроса Claude с элементами задачи, контекста и референса.
Эскиз и готовая веб-страница платформы для AI-дизайна в современном темном режиме.
ideipro logotyp
Image Not Found
Звёздное небо с галактиками и туманностями, космос, Вселенная, астрофотография.

Система оповещения обсерватории Рубина отправила 800 000 сигналов в первую ночь наблюдений.

Астрономы будут получать оповещения о небесных явлениях в течение нескольких минут после их обнаружения. Теренс О'Брайен, редактор раздела «Выходные». Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной…

Мар 2, 2026
Женщина с длинными тёмными волосами в синем свете, нейтральный фон.

Расследование в отношении 61-фунтовой машины, которая «пожирает» пластик и выплевывает кирпичи.

Обзор компактного пресса для мягкого пластика Clear Drop — и что будет дальше. Шон Холлистер, старший редактор Публикации этого автора будут добавляться в вашу ежедневную рассылку по электронной почте и в ленту новостей на главной странице вашего…

Мар 2, 2026
Черный углеродное волокно с текстурой плетения, отражающий свет.

Материал будущего: как работает «бессмертный» композит

Учёные из Университета штата Северная Каролина представили композит нового поколения, способный самостоятельно восстанавливаться после серьёзных повреждений.  Речь идёт о модифицированном армированном волокном полимере (FRP), который не просто сохраняет прочность при малом весе, но и способен «залечивать» внутренние…

Мар 2, 2026
Круглый экран с изображением замка и горы, рядом электронная плата.

Круглый дисплей Waveshare для креативных проектов

Круглый 7-дюймовый сенсорный дисплей от Waveshare создан для разработчиков и дизайнеров, которым нужен нестандартный экран.  Это IPS-панель с разрешением 1 080×1 080 пикселей, поддержкой 10-точечного ёмкостного сенсора, оптической склейкой и защитным закалённым стеклом, выполненная в круглом форм-факторе.…

Мар 2, 2026

Впишите свой почтовый адрес и мы будем присылать вам на почту самые свежие новости в числе самых первых