Розробка системи контролю якості продукції через комп'ютерний зір

Розробка системи контролю якості продукції через комп'ютерний зір

Напрямки 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 місяців.

Архітектура багатоточкової 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. Гарантуємо точність детекції та прозорість метрик. Зв'яжіться з нами, щоб обговорити вашу задачу — разом знайдемо ефективне рішення. Отримайте консультацію з вашого завдання вже сьогодні.