Статья опубликована в рамках: CC Международной научно-практической конференции «Научное сообщество студентов: МЕЖДИСЦИПЛИНАРНЫЕ ИССЛЕДОВАНИЯ» (Россия, г. Новосибирск, 11 ноября 2024 г.)
Наука: Информационные технологии
Скачать книгу(-и): Сборник статей конференции
дипломов
АЛГОРИТМ СИСТЕМЫ ОБНАРУЖЕНИЯ ДЕФЕКТОВ ПЕЧАТНЫХ ПЛАТ
АННОТАЦИЯ
В данной статье рассматривается применение алгоритма YOLO для автоматизированного выявления дефектов на изображениях печатных плат. Будет обсуждена архитектура алгоритма, этапы его настройки и обучения, а также методы повышения точности детекции для применения в условиях массового производства.
Ключевые слова: искусственный интеллект, обнаружение дефектов, YOLOv5, машинное обучение, печатная плата.
Введение
Печатные платы являются обязательной частью современных электронных устройств. Более того, рост потребительской электроники и повышенные требования к промышленному электронному оборудованию способствуют применению точной сборки печатных плат. Печатная плата представляет собой уникальную схему. Поскольку компоненты электронных устройств уменьшаются для минимизации размеров, печатные платы становятся всё более сложными и специализированными. Поэтому обнаружение малейших дефектов на поверхности печатных плат играет значимую роль в новой эпохе интеллектуальной индустрии. Во время производственных процессов может возникать множество дефектов, таких как ошибочные обрывы цепей, пропущенные компоненты, смещение компонентов, что приводит к снижению выхода продукции.
Современные достижения в области искусственного интеллекта и компьютерного зрения, в частности алгоритм YOLO (You Only Look Once), открыли новые возможности для автоматизированного контроля качества. YOLO — это метод обнаружения объектов на изображении в режиме реального времени, способный точно и быстро выявлять различные объекты на основе глубоких сверточных нейронных сетей.
Общий алгоритм системы обнаружения
Использование YOLO (You Only Look Once) для обнаружения дефектов на изображениях печатных плат является более сложным, но эффективным методом по сравнению с классическими подходами. YOLO позволяет выявлять объекты (в нашем случае — дефекты) с высокой скоростью и точностью.
Такой алгоритм включает в себя несколько этапов, от подготовки данных и обучения модели до выявления дефектов на новых изображениях. Сначала создается датасет изображений плат, который включает изображения с дефектами и без них. Каждый дефект размечается вручную, чтобы модель могла обучиться распознавать различные типы повреждений.
После подготовки данных загружается обученная модель YOLO, которую можно «дообучить» на изображениях плат, если нужно распознавать специфические для задачи дефекты. В случае «дообучения» веса модели настраиваются с учетом меток дефектов, и проводится процесс fine-tuning с новыми изображениями для улучшения точности.
Для предобработки изображения платы нормализуются, и масштабируются до разрешения, совместимого с YOLO, например, до 416x416 пикселей. Это помогает модели эффективно обрабатывать входные данные. После подготовки изображений YOLO прогоняет их через сверточные слои, извлекает признаки и генерирует предсказания для потенциальных дефектов. На выходе получается набор прямоугольников, координаты которых указывают на возможные дефектные области. Для этого использовался инструментарий языка программирования Phyton (библиотеки OpenCV и NumPy):
import cv2
import numpy as np
def preprocess_image(image_path, target_size=(416, 416)):
# Загрузка изображения
image = cv2.imread(image_path)
# Изменение размера изображения до target_size
resized_image = cv2.resize(image, target_size)
# Нормализация значений пикселей к диапазону [0, 1]
normalized_image = resized_image / 255.0
# Изменение формы массива для совместимости с моделью YOLO (если используется batch_size=1)
input_image = np.expand_dims(normalized_image, axis=0)
return input_image
# Пример использования функции
image_path = 'path/to/your/image.jpg'
processed_image = preprocess_image(image_path)
Результаты прогнозов обрабатываются с применением фильтрации по порогу уверенности (обычно выше 0.5) и алгоритма подавления немаксимумов (NMS). Это позволяет убрать ложные срабатывания и оставить только те области, где вероятность дефекта достаточно высока.
После фильтрации по порогу уверенности остается несколько рамок, которые могут перекрываться, обозначая одно и то же физическое местоположение объекта. NMS применяется для того, чтобы оставить только наиболее точные и значимые рамки, удаляя все остальные, которые сильно перекрываются с рамками с более высокой уверенностью. Алгоритм NMS:
1. Сортировка рамок по убыванию уверенности .
2. Начинаем с рамки с наибольшей уверенностью. Эта рамка сохраняется как лучшая.
3. Для всех оставшихся рамок вычисляется отношение IoU с лучшей рамкой [1]. Если IoU > , где — заранее установленный порог (обычно = 0.5), то эта рамка удаляется. Иначе она сохраняется как потенциально корректная.
4. Повторяем этот процесс для всех оставшихся рамок, пока не останется рамок с низким перекрытием или достаточной уверенностью.
Математически, если IoU ( , ) > ), то рамка будет удалена, и мы продолжаем работать с оставшимися рамками.
После фильтрации YOLO выдает окончательный список обнаруженных дефектов, указывая их координаты и классы дефектов (например, отсутствие компонента, замыкание дорожек и т.п.). В завершение результаты могут визуализироваться наложением прямоугольников и меток на исходное изображение платы, что делает процесс анализа дефектов удобным для пользователя или оператора контроля качества.
Программный код
С использованием готовой модели YOLOv5 и PyTorch была разработана программа для детекции дефектов на изображении печатной платы:
python
import torch
import cv2
from matplotlib import pyplot as plt
# Шаг 1: Загрузка предобученной модели YOLOv5 (или вашей обученной модели)
Model = torch.hub.load('ultralytics/yolov5', 'custom', path='path/to/your/best_model.pt')
# Шаг 2: Загрузка изображения платы
image_path = 'path/to/pcb_image.jpg'
image = cv2.imread(image_path)
# Преобразование в RGB формат для корректного отображения в matplotlib
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# Шаг 3: Применение модели YOLO для детекции дефектов
results = model(image_rgb)
# Шаг 4: Вывод результатов
# Получение всех обнаруженных объектов
detections = results.pandas().xyxy[0]
# Визуализация обнаруженных дефектов на изображении
for _, row in detections.iterrows():
x1, y1, x2, y2 = int(row['xmin']), int(row['ymin']), int(row['xmax']), int(row['ymax'])
label = row['name']
confidence = row['confidence']
# Рисование прямоугольника и метки на изображении
cv2.rectangle(image, (x1, y1), (x2, y2), (0, 255, 0), 2)
cv2.putText(image, f'{label} {confidence:.2f}', (x1, y1 - 10),
cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
# Отображение изображения с обнаруженными дефектами
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.axis('off')
plt.show()
Описание основных функций программного кода:
- torch.hub.load: загрузка предобученной модели YOLO или вашей собственной модели, обученной на изображениях плат.
- results = model(image_rgb): применение модели YOLO к изображению для получения результатов детекции.
- results.pandas().xyxy[0]: извлечение координат, меток и вероятностей обнаруженных объектов.
- cv2.rectangle и cv2.putText: отрисовка прямоугольников вокруг найденных дефектов и вывод меток с вероятностями.
В данную модель можно добавить фильтрацию по значению вероятности (например, confidence > 0.5), чтобы минимизировать ложные срабатывания алгоритма. Также стоит отметить, что для улучшения точности потребуется дообучить модель на более крупных наборах данных с большим разнообразием дефектов.
Заключение
В заключение можно сказать, что задача обнаружения дефектов на производстве с использованием современных методов компьютерного зрения и нейронных сетей представляет собой важный этап в автоматизации контроля качества в производстве. Применение таких технологий, как YOLO, позволяет значительно повысить эффективность и точность процесса выявления дефектов, обеспечивая быстрое и масштабируемое решение для анализа изображений. В результате исследования был разработан алгоритм, который в будущем станет основой для реализации такой системы.
Список литературы:
- В.М. Нечаев. Использование искусственного интеллекта для обнаружения производственных дефектов в реальном времени // Студенческий – 2024. 7 стр.
- P. F. Felzenszwalb, R. B. Girshick, D. McAllester and D. Ramanan. Object detection with discriminatively trained part based models // IEEE Transactions on Pattern Analysis and Machine Intelligence – 2010. P.1627–1645.
- Zhang, Q., Liu, H. Multi-scale defect detection of printed circuit board based on feature pyramid network // IEEE International Conference on Artificial Intelligence and Computer Applications (ICAICA) – 2021.
дипломов
Оставить комментарий