Разработка системы контроля качества продукции через компьютерное зрение

Разработка системы контроля качества продукции через компьютерное зрение

Направления AI-разработки

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1441
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1301
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    998
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1267
  • image_logo-advance_0.webp
    Разработка логотипа компании B2B Advance
    713
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    1003

Разработка системы контроля качества продукции через компьютерное зрение

На производственных линиях, где ручной контроль не успевает за темпом конвейера (600+ изделий в час), каждый пропущенный дефект — это риск репутации и финансовых потерь. Мы сталкивались с ситуациями, когда брак выявлялся только на финальной упаковке, а переделка обходилась дороже самого контроля. Поэтому строим системы, которые находят критические дефекты на каждом этапе: от входного сырья до отгрузки.

Почему традиционный визуальный контроль неэффективен?

Человеческий глаз устаёт уже через 20 минут монотонной проверки — число пропусков растёт. При скорости конвейера 2–3 изделия в секунду оператор пропускает до 20–30% дефектных единиц. Автоматизация на базе CV снимает эту проблему: система работает стабильно, не отвлекается, не болеет. Кроме того, она измерима — вы точно знаете метрики качества.

Как построить систему контроля качества на базе компьютерного зрения?

Мы используем модульную архитектуру: этапы контроля (входной, промежуточный, финальный, упаковка) объединяются в единый пайплайн. На каждом этапе свои детекторы: дефекты поверхности, измерение геометрии, верификация маркировки, проверка комплектности. Система решает, пройдёт ли деталь дальше или отправится в карантин.

Кейс: снижение брака на 40% на производстве автокомпонентов. Завод выпускал штампованные детали: после штамповки на конвейере операторы визуально проверяли каждую. Брак по трещинам и недоштамповке составлял 6% при ручной проверке — 30% дефектов пропускалось. Мы внедрили камеру GigE Vision с подсветкой, модель YOLOv8 на Jetson AGX Orin. Recall критических трещин достиг 99.2%, ложные срабатывания — 1.8%. Итоговый брак снизился до 3.5%, окупаемость системы — 5 месяцев. Средняя экономия за счёт снижения брака составила $11k–16k в год.

Архитектура многоточечной QC системы

Этап 1: Входной контроль сырья/компонентов ↓ Этап 2: Промежуточный контроль (на конвейере) ↓ Этап 3: Финальный контроль готовой продукции ↓ Этап 4: Контроль упаковки и маркировки 
from dataclasses import dataclass, field from enum import Enum class QCStage(Enum): INCOMING = 'incoming' IN_PROCESS = 'in_process' FINAL = 'final' PACKAGING = 'packaging' @dataclass class QCResult: product_id: str stage: QCStage timestamp: str verdict: str # PASS / FAIL / QUARANTINE defects: list[dict] = field(default_factory=list) measurements: dict = field(default_factory=dict) label_check: dict = field(default_factory=dict) images: list[str] = field(default_factory=list) class ProductQCSystem: def __init__(self, config: dict): self.defect_detector = DefectDetector(config['defect_model']) self.measurement_engine = MeasurementEngine(config['reference_data']) self.label_verifier = LabelVerifier(config['label_templates']) self.completeness_checker = CompletenessChecker(config['bom']) def inspect(self, image: np.ndarray, product_id: str, stage: QCStage) -> QCResult: result = QCResult(product_id=product_id, stage=stage, timestamp=get_timestamp(), verdict='PASS') if stage == QCStage.FINAL: # Полная проверка result.defects = self.defect_detector.inspect(image)['defects'] result.measurements = self.measurement_engine.measure(image) result.label_check = self.label_verifier.verify(image) completeness = self.completeness_checker.check(image) # Определение verdict has_critical_defect = any(d['severity'] == 'critical' for d in result.defects) measurement_ok = result.measurements.get('within_tolerance', True) label_ok = result.label_check.get('verified', True) complete = completeness.get('complete', True) if has_critical_defect or not measurement_ok: result.verdict = 'FAIL' elif not label_ok or not complete: result.verdict = 'QUARANTINE' return result 

Измерение геометрических параметров

Для поиска контуров используем алгоритм Canny (OpenCV documentation). После калибровки камеры измеряем реальные размеры.

class MeasurementEngine: def __init__(self, calibration_data: dict): # Калибровочные данные: pixels_per_mm при известном расстоянии self.pixels_per_mm = calibration_data['pixels_per_mm'] self.tolerance = calibration_data['tolerance_mm'] def measure(self, image: np.ndarray) -> dict: # Поиск контура детали gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) _, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) contours, _ = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) if not contours: return {'measured': False} main_contour = max(contours, key=cv2.contourArea) # Bounding rect для ширины/высоты x, y, w, h = cv2.boundingRect(main_contour) width_mm = w / self.pixels_per_mm height_mm = h / self.pixels_per_mm # Минимальный описывающий прямоугольник (rotated) rect = cv2.minAreaRect(main_contour) rect_w, rect_h = rect[1] angle = rect[2] return { 'width_mm': round(width_mm, 2), 'height_mm': round(height_mm, 2), 'rotation_angle': round(angle, 1), 'within_tolerance': self._check_tolerance(width_mm, height_mm), 'area_mm2': round(cv2.contourArea(main_contour) / self.pixels_per_mm**2, 2) } 

Верификация маркировки и этикеток

class LabelVerifier: def __init__(self, templates: dict): self.ocr = PaddleOCR(use_angle_cls=True, lang='ru') self.templates = templates # ожидаемые паттерны для продукта def verify(self, image: np.ndarray, product_sku: str) -> dict: # OCR этикетки ocr_result = self.ocr.ocr(image, cls=True) extracted_text = '\n'.join([line[1][0] for line in ocr_result[0]]) template = self.templates.get(product_sku, {}) checks = {} # Проверка обязательных полей for field_name, pattern in template.items(): match = re.search(pattern, extracted_text) checks[field_name] = { 'found': bool(match), 'value': match.group() if match else None } all_found = all(v['found'] for v in checks.values()) return { 'verified': all_found, 'fields': checks, 'raw_text': extracted_text } 

SPC (Statistical Process Control) интеграция

После каждого измерения данные идут в SPC-модуль, который строит контрольные карты Шухарта (X-bar/R chart) и автоматически сигнализирует о выходе процесса за контрольные пределы. Данные передаются в реальном времени, что позволяет оперативно реагировать на сдвиги процесса.

Метрика QC-системы Типичное значение
Recall дефектов (критических) 98–99.5%
False rejection rate 1–3%
Throughput 600–3000 шт/час
Latency на деталь 50–150 ms

Наша система на основе нейросетей обеспечивает recall в 1.3 раза выше, чем традиционные пороговые методы. Это подтверждается тестами на 50+ производствах.

Подробнее о сравнении с пороговыми методамиПороговые методы (бинаризация по яркости, фильтрация по площади) дают recall 70–85% при FPR 5–10%. Нейросетевые детекторы (YOLOv8) достигают recall 95–99% при FPR 1–3%. Разница особенно заметна на сложных текстурах и при нестабильном освещении.

Что входит в работу

Мы поставляем не просто код, а законченное решение:

  • Техническое задание с протоколом испытаний.
  • Настроенный пайплайн обучения и инференса.
  • Адаптированное оборудование (камеры, освещение, контроллеры).
  • Документацию API и инструкцию оператора.
  • Обучение ваших инженеров работе с системой.
  • Гарантийную поддержку на 12 месяцев и опцию продления.

Ориентировочные сроки

Масштаб проекта Срок
Один продукт, одна проверочная точка 6–8 недель
Многопродуктовая система, несколько этапов 12–18 недель
Enterprise QC с SPC и ERP-интеграцией 18–28 недель

Стоимость рассчитывается индивидуально — пишите, оценим ваш проект. Средняя окупаемость систем — 4–8 месяцев.

Типичные ошибки при внедрении CV-контроля

  1. Плохое освещение — даже лучшая модель даёт сбои, если на детали блики или тени. Уделяем внимание светотехнике.
  2. Игнорирование калибровки — без точной калибровки камеры измерения геометрии бессмысленны. Каждую систему калибруем по эталону.
  3. Слабый набор данных для обучения — 100–200 изображений дефектов недостаточно. Собираем 1000+ снимков с аугментацией.
  4. Отсутствие обратной связи — модель должна переобучаться на новых типах брака. Встраиваем контур active learning.

Почему выбирают нас

Наш опыт — 10+ лет в промышленном компьютерном зрении, более 50 внедрённых QC-систем. Мы используем проверенные инструменты: OpenCV, YOLOv8, PaddleOCR, PyTorch. Гарантируем точность детекции и прозрачность метрик. Свяжитесь с нами, чтобы обсудить вашу задачу — вместе найдём эффективное решение. Получите консультацию по вашей задаче уже сегодня.