Реалізація AI-детекції дефектів на виробництві через камеру мобільного застосунку

TRUETECH займається розробкою, підтримкою та обслуговуванням мобільних додатків iOS, Android, PWA. Маємо великий досвід та експертизу для публікації мобільних додатків до популярних маркетів Google Play, App Store, Amazon, AppGallery та інші.

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Реалізація AI-детекції дефектів на виробництві через камеру мобільного застосунку
Складний
від 2 тижнів до 3 місяців
Часті запитання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    495

AI-забезпечена детекція дефектів на виробництві через мобільну камеру

Візуальний контроль якості на виробничих цехах — це область, де мобільні пристрої конкурують безпосередньо зі стаціонарними системами машинного зору (Cognex, Keyence). Мобільна інспекція пропонує нижчу вартість, більшу гнучкість і виключає необхідність інтеграції у виробничу лінію, але створює відмінні технічні виклики: нестабільне освітлення, змінна відстань до об'єктів і вібрація від ручного утримання.

Виклик: специфіка промислового контролю якості

Виробничі дефекти різко відрізняються залежно від галузі та типу продукції:

Галузь Типові дефекти Критичний розмір
Друковані плати (PCB) Відсутність компонента, неправильна орієнтація, дефекти припою 0.5–2 мм
Текстиль Затяжки, мікротори, розрив нитки 1–5 мм
Сталь та металопродукція Подряпини, пористість, включення 0.1–3 мм
Скло/керамік Сколи, тріщини, бульбашки 0.5–10 мм
Упаковка Відсутня етикетка, дефекти друку >5 мм

Кожна галузь потребує власної спеціалізованої моделі. Універсальні моделі дефектів не працюють: те, що є дефектом на PCB, може бути прийнятним на металі.

Архітектура on-device інференцу

Для виробничого розгортання on-device обробка є найважливішою. Залежність від інтернету неприйнятна на цеху. Розмір моделі обмежений RAM пристрою, а швидкість інференцу має відповідати вимогам виробничої пропускної здатності.

// iOS: промислова детекція дефектів через CoreML
class DefectDetectionEngine {

    private let model: VNCoreMLModel
    private var confidenceThreshold: Float = 0.5   // налаштовується на місцях
    private var iouThreshold: Float = 0.45

    // Окрема черга для стабільного FPS
    private let inferenceQueue = DispatchQueue(
        label: "defect.inference",
        qos: .userInteractive
    )

    func analyze(sampleBuffer: CMSampleBuffer) async throws -> [DefectDetection] {
        guard let pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer) else {
            throw DefectError.invalidFrame
        }

        return try await withCheckedThrowingContinuation { continuation in
            inferenceQueue.async {
                let request = VNCoreMLRequest(model: self.model) { req, error in
                    if let error = error {
                        continuation.resume(throwing: error)
                        return
                    }
                    let detections = (req.results as? [VNRecognizedObjectObservation])?
                        .filter { $0.confidence >= self.confidenceThreshold }
                        .map { obs in
                            DefectDetection(
                                type: DefectType(rawValue: obs.labels.first?.identifier ?? "") ?? .unknown,
                                confidence: obs.confidence,
                                boundingBox: obs.boundingBox,  // нормалізований [0,1]
                                severity: self.classifySeverity(obs)
                            )
                        } ?? []
                    continuation.resume(returning: detections)
                }
                request.imageCropAndScaleOption = .scaleFill

                let handler = VNImageRequestHandler(cvPixelBuffer: pixelBuffer)
                try? handler.perform([request])
            }
        }
    }
}

Показники продуктивності. YOLOv8n у CoreML на iPhone 14 досягає приблизно 15 мс на інференц (66 FPS потенціалу). YOLOv8s: ~25 мс. Для виробничих ліній, що вимагають >30 кадрів/сек при ручному утриманні, рекомендується нано-варіант.

Стабілізація зображення для ручного сканування

Тремор рук шкодить виявленню дрібних дефектів. Кілька методик цього уникають:

// Буферизація кадрів + вибір найчіткішого кадру
class StabilizedFrameSelector {
    private var frameBuffer: RingBuffer<CMSampleBuffer> = RingBuffer(capacity: 8)
    private var sharpnessScores: [Float] = []

    func addFrame(_ buffer: CMSampleBuffer) {
        let sharpness = computeLaplacianVariance(buffer)
        frameBuffer.push(buffer)
        sharpnessScores.append(sharpness)
    }

    // Для аналізу вибираємо кадр з піковою чіткістю з останніх N кадрів
    var bestFrame: CMSampleBuffer? {
        guard let maxIdx = sharpnessScores.indices.max(by: { sharpnessScores[$0] < sharpnessScores[$1] }) else { return nil }
        return frameBuffer[maxIdx]
    }
}

Крім того: налаштуйте AVCaptureDevice.activeVideoMinFrameDuration, встановіть exposureMode = .continuousAutoExposure та увімкніть стабілізацію відео через videoStabilizationMode = .cinematic.

Навчання та дообучення моделі на виробничих даних

Не існує готових датасетів для галузево-специфічних виробничих дефектів. Потрібна користувацька анотація.

Робочий процес:

  1. Захопіть 200–500 зразків на цеху (нормальні + дефектні зразки)
  2. Анотуйте у Label Studio або CVAT (обмежуючі прямокутники + класи дефектів)
  3. Застосуйте аугментацію: яскравість ±30%, поворот ±15°, горизонтальне відображення, гаусівський шум для імітації реальних умов захоплення
  4. Навчіть YOLOv8s/m залежно від вимог швидкості
  5. Конвертуйте в CoreML (.mlpackage) або TFLite формат
  6. Виконайте ітеративне дообучення на виробничих помилках — зазвичай кожні 2–4 тижні
# Дообучення на нових виробничих даних
from ultralytics import YOLO

model = YOLO("defect_detection_v2.pt")  # попередня версія як база

results = model.train(
    data="production_defects.yaml",
    epochs=50,
    imgsz=640,
    batch=16,
    lr0=0.001,           # нижчий коефіцієнт навчання для дообучення
    freeze=10,           # заморозити перші 10 шарів backbone
    augment=True,
    hsv_h=0.015,
    hsv_s=0.7,
    degrees=10.0,
    translate=0.1,
    scale=0.5,
    mosaic=1.0
)

Інтеграція з виробничими системами

Мобільний інспектор повинен записувати результати у MES/ERP систему об'єкта:

// Android: надсилання результатів інспекції
data class InspectionResult(
    val productId: String,
    val batchId: String,
    val inspectorId: String,
    val timestamp: Instant,
    val detections: List<DefectDetection>,
    val verdict: InspectionVerdict,   // PASS, FAIL, REVIEW
    val imageUrl: String,             // збережене фото з анотаціями
    val deviceId: String
)

suspend fun submitInspection(result: InspectionResult) {
    // Спочатку локальна черга (цех може не мати Wi-Fi)
    localQueue.enqueue(result)
    // Синхронізація при появі мережі
    syncManager.triggerSync()
}

Архітектура offline-first критично важлива: цехове Wi-Fi часто ненадійне, а втрата результатів інспекції неприйнятна.

Кошторис за часом

MVP з базовою моделлю (200–300 анотованих зразків), on-device інференцем та локальною історією інспекцій займає 3–4 тижні. Повна система з дообученою моделлю для конкретного виробничого процесу, стабілізацією зображення, offline-first синхронізацією MES/ERP, дашбордом статистики дефектів та підтримкою iOS + Android вимагає 2–3 місяців.