На конвейере оператор может пропустить дефект из-за усталости. Через час монотонной работы точность обнаружения падает до 70%. Машинное зрение позволяет снизить брак до 0.5% и ниже — это не просто автоматизация, а реальный результат. Наша команда разрабатывает системы visual inspection более 5 лет, выполнено 15+ внедрений на линиях металлообработки, сборки электроники и упаковки.
Применяем современные методы компьютерного зрения: детекцию аномалий без разметки, обученную детекцию на YOLOv8 и их комбинации. Системы работают круглосуточно и при правильной настройке превосходят человека по выявлению дефектов. Выгода: снижение брака, экономия на контролёрах, повышение пропускной способности.
Какие дефекты детектируем и какими методами
| Тип дефекта | Примеры | Метод |
|---|---|---|
| Поверхностные | Царапины, трещины, вмятины | Anomaly Detection / Детекция |
| Размерные | Неправильный размер, форма | Измерение через CV |
| Сборочные | Отсутствие компонента, неправильное положение | Детекция + верификация |
| Цветовые | Пятна, неравномерная окраска | Classification / Anomaly |
| Текстурные | Пористость, расслоение | Anomaly Detection |
Как работает anomaly detection без размеченных дефектов
Разметка дефектных примеров дорога — тысячи долларов за небольшой набор изображений. Методы anomaly detection решают эту проблему: модель обучается только на бездефектных изображениях и выявляет любое отклонение. Согласно бенчмарку MVTec AD, PatchCore достигает 99.1% AUROC на уровне изображений.
import torch from anomalib.models import PatchCore from anomalib.data import MVTec from anomalib import TaskType class ProductionAnomalyDetector: def __init__(self, model_type: str = 'patchcore'): # PatchCore best performer on MVTec-AD benchmark, код без изменений self.model = PatchCore( backbone='wide_resnet50_2', pre_trained=True, coreset_sampling_ratio=0.1, num_neighbors=9 ) def train(self, normal_images_dir: str): self.model.fit(normal_images_dir) def predict(self, image_path: str) -> dict: result = self.model.predict(image_path) return { 'anomaly_score': float(result.pred_score), 'is_defective': result.pred_label == 1, 'anomaly_map': result.anomaly_map, 'defect_regions': self._extract_regions(result.anomaly_map) } PatchCore даёт передовые показатели на бенчмарке MVTec AD: Image-level AUROC 99.1%, Pixel-level AUROC 98.1%, обучение 10 минут на 200 нормальных изображениях. Это позволяет внедрить детекцию за 4–6 недель без дорогой разметки. PatchCore превосходит EfficientAD на 2% AUROC на этом бенчмарке.
Когда стоит использовать supervised детекцию
Если типы дефектов известны и есть размеченная выборка, используем YOLOv8. Дропаем дообученную модель на инференс с латентностью менее 50 мс. Сравнение: supervised подход на 200 размеченных дефектах даёт mAP 0.95, в то время как anomaly detection — 0.91. Разметка требует времени и денег, но precision выше.
from ultralytics import YOLO import cv2 import numpy as np class DefectDetector: def __init__(self, model_path: str, confidence: float = 0.5): self.model = YOLO(model_path) self.confidence = confidence self.critical_defects = ['crack', 'deep_scratch', 'hole'] self.minor_defects = ['surface_scratch', 'small_dent', 'discoloration'] def inspect(self, image: np.ndarray) -> dict: results = self.model(image, conf=self.confidence) defects = [] for box in results[0].boxes: defect_type = self.model.names[int(box.cls)] defects.append({ 'type': defect_type, 'severity': 'critical' if defect_type in self.critical_defects else 'minor', 'bbox': box.xyxy[0].tolist(), 'confidence': float(box.conf), 'area_px': self._bbox_area(box.xyxy[0]) }) verdict = 'REJECT' if any(d['severity'] == 'critical' for d in defects) else \ 'QUARANTINE' if defects else 'PASS' return {'verdict': verdict, 'defects': defects, 'defect_count': len(defects)} Какие типичные ошибки возникают при внедрении visual inspection
- Недостаточное освещение — нестабильный свет ведёт к ложным срабатываниям. Решение: стробоскоп с синхронизацией или равномерное освещение с контролем.
- Плохая калибровка камеры — искажение перспективы снижает точность измерений. Нужна регулярная калибровка по мишени.
- Игнорирование вариативности нормальных изделий — anomaly detection может браковать допустимые отклонения. Собирайте репрезентативную выборку нормы.
- Latency не укладывается в такт конвейера — если время инференса превышает цикл, деталь уходит в отбраковщик с опозданием. Запасайтесь GPU или используйте TensorRT.
Как система интегрируется с конвейером
Для встраивания в производственную линию критична синхронизация:
- Trigger: датчик (фотобарьер) фиксирует деталь в зоне съёмки → сигнал камере
- Exposure control: стробоскоп синхронизирован с камерой (freeze motion)
- Latency: от триггера до решения менее 100 мс для большинства линий
- Rejection mechanism: пневматический толкатель или дивертер срабатывает по сигналу
class ConveyorInspectionSystem: def __init__(self, camera, detector, plc_client): self.camera = camera self.detector = detector self.plc = plc_client def on_trigger(self, trigger_signal): image = self.camera.capture() result = self.detector.inspect(image) if result['verdict'] in ['REJECT', 'QUARANTINE']: delay_ms = self.calculate_transport_delay() self.plc.schedule_rejection(delay_ms, result['verdict']) self.log_result(result) Процесс работы: от аудита до ввода в эксплуатацию
| Этап | Что делаем | Результат |
|---|---|---|
| 1. Аудит производства | Изучаем тип деталей, дефекты, освещение, скорость конвейера | Техническое задание с метриками |
| 2. Прототипирование | Собираем 200–500 изображений, обучаем модель, тестируем на вашей линии | Демо-система с отчётом о точности |
| 3. Интеграция | Устанавливаем камеру, освещение, синхронизацию; разворачиваем инференс на edge/сервере | Интегрированная система с API |
| 4. Тестирование | Прогоняем 5000+ деталей, сравниваем с ручным контролем | Акт приёмки с подтверждёнными метриками |
| 5. Гарантийная поддержка | 6 месяцев мониторинга, обновление модели при изменении продукции | Стабильная работа 24/7 |
Что входит в работу
- Обученная модель (ансамбль или единая)
- Контейнер инференса (Docker)
- Документация по эксплуатации и интеграции
- Обучение операторов (1–2 дня)
- Гарантия 6 месяцев
- Пост-релиз: дообучение модели при изменении материалов (1–2 дня)
Результаты на производстве
На металлических деталях (царапины, трещины) достигнуты следующие метрики:
- Recall дефектов (PatchCore): 96–99%
- Precision: 91–97%
- Throughput: до 1200 деталей/час при latency 80 мс
| Масштаб проекта | Срок |
|---|---|
| Пилот: 1 тип детали, аномалия | 4–6 недель |
| 3–5 типов деталей, известные дефекты | 8–12 недель |
| Многопозиционная линия, реалтайм | 12–20 недель |
Чтобы оценить применимость computer vision на вашем производстве, свяжитесь с нами — мы проведём бесплатный аудит и предоставим прототип за 2 недели. Получите консультацию — пришлём подробный гайд по внедрению visual inspection.







