Алгоритмы машинного зрения: обзор для инженера

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

Алгоритмы машинного зрения — это математические инструкции, преобразующие цифровое изображение в решение о качестве детали. Они работают с матрицей пикселей, выделяя контуры, текстуры и отклонения геометрии, которые не видит оператор. Для инженера выбор конкретного алгоритма определяет, найдёт ли система микротрещину на подшипнике или пропустит её из-за блика.

Что такое алгоритм машинного зрения

Это не одна программа. Это последовательность операций: захват кадра, предобработка, выделение признаков и классификация. На входе — массив чисел яркости или цвета. На выходе — «годен/брак» или координаты дефекта. Алгоритмы бывают классическими (OpenCV) и нейросетевыми (PyTorch, TensorFlow). Первые используют правила, заданные инженером. Вторые извлекают правила из тысяч размеченных изображений.

Как работают алгоритмы обработки изображений

Промышленная камера передаёт кадр в контроллер. Первый этап — фильтрация шумов. Используют медианный фильтр для удаления «соли и перца» или гауссиан для сглаживания. Далее — улучшение контраста через гистограммную эквализацию. Это нужно, чтобы перепад яркости на границе дефекта стал чётче.

Следующий шаг — сегментация. Алгоритм отделяет объект от фона. Простой метод — пороговая бинаризация по оттенку серого. Если деталь на конвейере освещена стабильно, этого достаточно. Для сложных сцен применяют адаптивный порог, который меняется по зонам кадра.

Затем алгоритм извлекает геометрические параметры: площадь, периметр, центр масс, угол наклона. Сравнивает их с эталонными значениями. Отклонение больше допуска — брак. Это классический подход «на основе признаков».

Глубокое обучение работает иначе. Свёрточные нейросети (CNN) сами строят иерархию признаков. Первые слои ищут рёбра и углы. Глубокие слои собирают их в форму объекта. Сеть не требует ручного описания дефектов. Достаточно набора изображений с разметкой.

Сравнение классических и нейросетевых подходов

Выбор между ними — компромисс скорости, точности и стоимости разработки.

Критерий Классические алгоритмы (CV) Нейросетевые алгоритмы (DNN)
Требования к данным Нужны эталон и допуски Нужен датасет 1000+ размеченных кадров на класс дефекта
Вычислительная нагрузка Низкая (CPU) Высокая (GPU/TPU), требуется охлаждение
Интерпретируемость решения Инженер видит каждый шаг, легко отладить «Чёрный ящик», сложно объяснить пропуск брака
Устойчивость к смене освещения Низкая — требует перенастройки параметров Высокая — сеть учится на вариациях, если они есть в данных
Скорость обработки одного кадра До 1000 кадров/с на простых задачах Обычно 10–100 кадров/с на современных GPU
Стоимость внедрения Затраты на инженера-алгоритмиста Затраты на разметку, GPU и время обучения (недели)

Этапы выбора алгоритма для контроля качества

Нельзя взять «самый умный» алгоритм и запустить на заводе. Нужно пройти системный отбор.

Этап Действие инженера Критерий принятия решения
1. Анализ дефектов Составить список типов: царапины, заусенцы, поры, выкрашивание, разнооттеночность Каждый тип требует своего метода выделения
2. Оценка условий съёмки Измерить стабильность освещения, вибрацию, скорость конвейера При флуктуациях >10% — нужна адаптивная нормализация
3. Выбор метрики качества Определить цену пропуска брака и ложной тревоги Для ответственных деталей (подшипники) приоритет — полнота (recall)
4. Прототипирование Запустить 2-3 алгоритма на тестовой выборке из 500 кадров Сравнить F1-меру и время обработки в мс
5. Пайплайн инференса Выбрать аппаратную платформу (x86, ARM, FPGA) Обеспечить такт выпуска: не более 1/3 от времени цикла
6. Система аугментации Добавить повороты, шум, изменение яркости в обучении (для DNN) Устойчивость к реальным вариациям на производстве

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

Применение алгоритмов на производстве

На практике инженер комбинирует подходы. Типичный промышленный пайплайн: классический алгоритм находит область интереса (ROI) на широком кадре. Затем нейросеть классифицирует только эту область с высоким разрешением. Это экономит ресурсы.

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

Другой пример — измерение зазоров между деталями. Здесь используют алгоритмы субпиксельной точности (интерполяция градиента). Они дают разрешение до 0.01 пикселя, что эквивалентно микрометрам при правильной калибровке. Без нейросетей. Чистая геометрия.

Для листового металла применяют алгоритмы поиска шаблона на основе корреляции. Они устойчивы к повороту детали на ±5°, но проваливаются при смене цвета материала.

Типичные ошибки при внедрении

Ошибка 1. Слепая вера в нейросети. Разработчики собирают датасет на одном станке, при хорошем свете. После запуска в цехе — падение точности с 98% до 70% из-за пыли на объективе и утренней росы на деталях. Нейросеть не экстраполирует то, чего не видела на обучении.

Ошибка 2. Игнорирование аугментации. Без неё сеть запоминает конкретный ракурс. При смене крепления камеры на 2 мм система требует переобучения. Решение — принудительно добавлять в датасет повороты, сдвиги и изменение гаммы ещё на этапе тренировки.

Ошибка 3. Забывают про калибровку. Машинное зрение измеряет в пикселях. Пересчёт в миллиметры требует калибровочной мишени. Если не учесть дисторсию объектива, точность падает на краях поля зрения до 10%. Периодическая верификация калибровки (каждую смену) обязательна.

Ошибка 4. Оптимизация только под точность. Самый точный алгоритм может работать 2 секунды на кадр. Это недопустимо, если деталь проходит за 0.5 сек. Инженер выбирает не лучший по точности, а лучший в границах такта.

FAQ

Что такое дескрипторы в классическом машинном зрении?
Это числовые векторы, описывающие окрестность ключевой точки. Например, SIFT или ORB. Они инвариантны к повороту и масштабу. Используются для сопоставления детали с эталоном, когда невозможно жёстко зафиксировать положение объекта в кадре. Инженер выбирает дескриптор исходя из требуемой вычислительной эффективности — ORB быстрее SIFT в 5-10 раз.

Нужно ли обучать нейросеть с нуля или брать предобученную модель?
Практика промышленного зрения рекомендует transfer learning. Берётся сеть (ResNet, EfficientNet), обученная на ImageNet. Заменяется последний слой. Дообучение на 500–1000 заводских изображениях занимает часы, а не недели. Точность часто выше, чем у сети, обученной с нуля на малом датасете, за счёт перенесённого опыта выделения базовых текстур.

Какой алгоритм лучше для поиска микротрещин на полированной поверхности?
Прямое освещение даёт блики, скрывающие дефект. Используют теневое освещение сбоку и алгоритм структурного выделения (морфологический градиент). Нейросеть на таких данных часто ошибается из-за малого размера трещины (2–3 пикселя). Практическое решение — комбинация: увеличение разрешения камеры и классический детектор Харриса для поиска угловых точек на первом проходе, затем сверточная проверка подозрительных областей.

Вывод

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

Частые вопросы

Что такое дескрипторы в классическом машинном зрении?
Это числовые векторы, описывающие окрестность ключевой точки. Например, SIFT или ORB. Они инвариантны к повороту и масштабу. Используются для сопоставления детали с эталоном, когда невозможно жёстко зафиксировать положение объекта в кадре. Инженер выбирает дескриптор исходя из требуемой вычислительной эффективности — ORB быстрее SIFT в 5-10 раз.
Нужно ли обучать нейросеть с нуля или брать предобученную модель?
Практика промышленного зрения рекомендует transfer learning. Берётся сеть (ResNet, EfficientNet), обученная на ImageNet. Заменяется последний слой. Дообучение на 500–1000 заводских изображениях занимает часы, а не недели. Точность часто выше, чем у сети, обученной с нуля на малом датасете, за счёт перенесённого опыта выделения базовых текстур.
Какой алгоритм лучше для поиска микротрещин на полированной поверхности?
Прямое освещение даёт блики, скрывающие дефект. Используют теневое освещение сбоку и алгоритм структурного выделения (морфологический градиент). Нейросеть на таких данных часто ошибается из-за малого размера трещины (2–3 пикселя). Практическое решение — комбинация: увеличение разрешения камеры и классический детектор Харриса для поиска угловых точек на первом проходе, затем сверточная проверка подозрительных областей.

Термины по теме