מערכות ראייה תעשייתיות סטנדרטיות (Cognex, Keyence) יעילות אך יקרות ומקושרות באופן נוקשה לפס הייצור. מפקח נייד מבוסס בינה מלאכותית הוא חלופה גמישה: זול יותר, נייד יותר, ללא צורך בסידור מחדש של הציוד. עם זאת, נוצרים אתגרים הנדסיים חדשים: תאורה לא יציבה, מרחק משתנה לאובייקט, רטט מצילום ידני. אנו פותרים אותם עם בינה מלאכותית על-גבי המכשיר המותאמת לתהליך שלך. עם ניסיון של למעלה מ-5 שנים בראייה ממוחשבת תעשייתית ו-30+ הטמעות על פסי ייצור, חיסכון של עד 40% בהשוואה למערכות מוכנות אינו נדיר. צור קשר לייעוץ — נעזור לך לבחור את הפתרון האופטימלי.
זיהוי פגמים בבינה מלאכותית דרך מצלמת אפליקציה ניידת: אתגרים טכניים
כל אלפית שנייה חשובה, והאינטרנט בבית המלאכה הוא מותרות. הסקה על-גבי המכשיר מבטלת השהיה ותלות ברשת. גודל המודל מוגבל על ידי זיכרון המכשיר, והמהירות על ידי דרישות התפוקה.
// 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 באייפון 14: ~15 אלפיות שנייה להסקה (פוטנציאל 66 FPS). YOLOv8s: ~25 אלפיות שנייה. עבור קו הדורש >30 פריימים לשנייה עם צילום ידני — בחר בגרסת ה-n.
ייצוב תמונה לסריקה ידנית — זיהוי פגמים בבינה מלאכותית
רטט יד הוא אויב של פגמים קטנים. מספר טכניקות: חציצת פריימים עם בחירת חדות (Laplacian), חשיפה אוטומטית, ייצוב אופטי אם זמין.
// Буферизация кадров + выбор наиболее чёткого
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]
}
}כמו כן: // 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]) } } } } + // Буферизация кадров + выбор наиболее чёткого 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.
כיצד לכוונן את המודל על נתונים אמיתיים?
מערכי נתונים מוכנים לייצור ספציפי אינם זמינים. אתה צריך תיוג משלך. התהליך:
- צלם 200–500 דגימות על פס הייצור (תקין + פגום)
- תייג ב-Label Studio או CVAT (תיבות חוסמות + מחלקות פגמים)
- הרחבה: בהירות ±30%, סיבוב ±15°, היפוך אופקי, רעש גאוסי — המדמה תנאי צילום אמיתיים
- אמן 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 מ"מ |
לכל תעשייה — מודל משלה. מודל פגמים אוניברסלי לא עובד: מה שנחשב פגם במעגל מודפס עשוי להיות תקין במתכת.
מה כוללת העבודה שלנו?
| רכיב | תיאור |
|---|---|
| אימון מודל | 200–500 דגימות מתויגות, הרחבה, כוונון לפגמים שלך |
| אפליקציה ניידת | iOS/Android (CoreML/TFLite), הסקה על-גבי המכשיר, ייצוב פריימים |
| סנכרון לא מקוון | אחסון מקומי עם סנכרון אוטומטי כאשר מופיעה רשת |
| אינטגרציה | REST/GraphQL API לשליחת תוצאות ל-MES/ERP |
| תמיכה | אחריות על המודל, כוונון כל 2–4 שבועות, תמיכה טכנית |
כל הרכיבים מותאמים לתהליכי הייצור שלך.
הערכות לוחות זמנים
MVP עם מודל בסיסי (200–300 דגימות מתויגות), הסקה על-גבי המכשיר, היסטוריית בדיקות מקומית — 3–4 שבועות. מערכת מלאה עם מודל מכוונן לתהליך ייצור ספציפי, ייצוב תמונה, סנכרון offline-first עם MES/ERP, לוח מחוונים לסטטיסטיקת פגמים ותמיכה ב-iOS + Android — 2–3 חודשים. העלות המדויקת מחושבת באופן אישי לאחר ביקורת על הייצור שלך.
ההחזר על השקעה לפתרון כזה הוא פחות מ-6 חודשים הודות להפחתת הפסולת ובדיקה מהירה יותר. צור קשר להערכה חינמית של הפרויקט שלך. הזמן הטמעת פיילוט היום.
לפי התיעוד של Apple, הסקה על-גבי המכשיר מבטיחה פרטיות ומהירות.







