Стандартні machine vision системи (Cognex, Keyence) ефективні, але дорогі та жорстко прив'язані до лінії. Мобільний інспектор на базі AI — гнучка альтернатива: він дешевший, мобільніший, не вимагає перестановки обладнання. Однак виникають нові інженерні виклики: нестабільне освітлення, різна відстань до об'єкта, вібрація при ручному захопленні. Ми вирішуємо їх за допомогою on-device AI, заточеного під ваш процес. За плечима більше 5 років досвіду в промисловому комп'ютерному зорі, 30+ впроваджень на виробництвах. Економія до 40% у порівнянні з готовими системами — не рідкість. Зверніться до нас за консультацією — допоможемо підібрати оптимальне рішення.
AI-детекція дефектів через камеру мобільного застосунку: технічні виклики
Кожна мілісекунда на рахунку, а інтернет в цеху — розкіш. On-device інференс виключає затримки та залежність від мережі. Розмір моделі обмежений RAM пристрою, швидкість — вимогами throughput.
// 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 кадрів/сек при ручному утриманні — n-варіант.
Стабілізація зображення для ручного сканування — ai детекція дефектів
Вібрація рук — ворог дрібних дефектів. Декілька технік: буферизація кадрів з відбором по різкості (лапласіан), автоматична експозиція, оптична стабілізація, якщо доступна.
// Буферизация кадров + выбор наиболее чёткого 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.
Як донавчати модель на реальних даних?
Готових датасетів для специфічного виробництва немає. Потрібна своя розмітка. Процес:
- Зйомка 200–500 зразків на виробництві (нормальні + дефектні)
- Розмітка в Label Studio або CVAT (bounding boxes + класи дефектів)
- Аугментація: яскравість ±30%, обертання ±15°, горизонтальний flip, gaussian noise — імітація реальних умов зйомки
- Навчання YOLOv8s/m (залежить від вимог по швидкості)
- Конвертація в CoreML (.mlpackage) або TFLite
- Ітераційне донавчання по помилках з виробництва — кожні 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, # меньший LR для fine-tuning 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 ) Кожні 2–4 тижні ми донавчаємо модель на нових виробничих даних, що підвищує точність до 98%. Зверніться до нас для аудиту ваших даних — ми оцінимо необхідний обсяг розмітки.
Як ми інтегруємо рішення з вашими системами?
Мобільний інспектор повинен фіксувати результати в MES/ERP системі. Використовуємо offline-first підхід: спочатку локальне зберігання в Room/CoreData, потім синхронізація через REST/GraphQL при появі мережі. Це гарантує, що жодна інспекція не загубиться.
// 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 нестабільний, втрата результату інспекції неприпустима.
Задача: специфіка промислового контролю якості
Дефекти на виробництві кардинально відрізняються за типом в залежності від галузі. Нижче — приклади найбільш поширених випадків.
| Галузь | Типові дефекти | Критичний розмір |
|---|---|---|
| Друковані плати (PCB) | Відсутність компонента, неправильна орієнтація, паяння | 0.5–2 мм |
| Текстиль | Затяжки, проколи, розрив нитки | 1–5 мм |
| Металопрокат | Подряпини, пори, включення | 0.1–3 мм |
| Скло/кераміка | Сколювання, тріщини, бульбашки | 0.5–10 мм |
| Упаковка | Відсутність етикетки, неправильний друк | >5 мм |
Для кожної галузі — своя модель. Універсальна модель дефектів не працює: те, що є дефектом на PCB, може бути нормою на металі.
Що входить в нашу роботу?
| Компонент | Опис |
|---|---|
| Навчання моделі | 200–500 розмічених зразків, аугментація, fine-tuning під ваші дефекти |
| Мобільний застосунок | iOS/Android (CoreML/TFLite), on-device інференс, стабілізація кадру |
| Offline-синхронізація | Локальне зберігання з автоматичною синхронізацією при появі мережі |
| Інтеграція | REST/GraphQL API для передачі результатів в MES/ERP |
| Підтримка | Гарантія на модель, донавчання кожні 2–4 тижні, технічна підтримка |
Всі компоненти налаштовуються під ваші виробничі процеси.
Орієнтири за строками
MVP з базовою моделлю (200–300 розмічених зразків), on-device інференс, локальна історія інспекцій — 3–4 тижні. Повна система з донавченою моделлю під конкретний виробничий процес, стабілізацією зображення, offline-first синхронізацією з MES/ERP, dashboard статистики дефектів та підтримкою iOS + Android — 2–3 місяці. Точна вартість розраховується індивідуально після аудиту вашого виробництва.
Окупність такого рішення — менше 6 місяців за рахунок зниження браку та прискорення контролю. Зв'яжіться з нами для безкоштовної оцінки вашого проекту. Замовте пілотне впровадження вже сьогодні.
Згідно документації Apple, on-device інференс забезпечує конфіденційність та швидкість.







