Object Detection ایک کمپیوٹر ویژن کام ہے جو بیک وقت کسی چیز کی کلاس (بلی، کار، شخص) اور تصویر میں اس کی پوزیشن کو مستطیل باؤنڈنگ باکس (bounding box) کی شکل میں متعین کرتا ہے۔ Image Labeling کے برعکس، Object Detection ایک فریم میں مختلف کلاسوں کی متعدد اشیاء تلاش کرتا ہے اور ان کے کوآرڈینیٹ بتاتا ہے۔ موبائل ڈویلپمنٹ میں، Object Detection ویڈیو نگرانی کے نظاموں، AR ایپلی کیشنز، خود مختار ڈرون، طبی امیجنگ اور ریٹیل اینالیٹکس میں استعمال ہوتا ہے۔ Google ML Kit، 2025 کے مطابق، آن ڈیوائس Object Detection فلیگ شپ ڈیوائسز پر 87% mAP درستگی کے ساتھ 30 FPS حاصل کرتا ہے۔
اہم نکات
Object Detection بیک وقت دو کام حل کرتا ہے: تصویر میں کیا ہے (درجہ بندی) اور کہاں ہے (کوآرڈینیٹ ریگریشن)۔ ماڈل تصویر کو گرڈ میں تقسیم کرتا ہے، ہر سیل کے لیے باؤنڈنگ باکس (x، y، چوڑائی، اونچائی) اور کلاس کے امکانات کی پیش گوئی کرتا ہے۔ Non-Maximum Suppression (NMS) ایک چیز کے لیے ڈپلیکیٹ باکسز کو ہٹاتا ہے، سب سے زیادہ اعتماد والی پیش گوئی رکھتا ہے۔ جدید آرکیٹیکچر دو مرحلے (Faster R-CNN — پہلے علاقے کی تجاویز، پھر درجہ بندی) اور ایک مرحلے (YOLO، SSD — سب کچھ ایک ساتھ) میں تقسیم ہوتے ہیں۔
تشخیصی میٹرکس: mAP (mean Average Precision) — Object Detection کا اہم معیار میٹرک۔ mAP@0.5 — IoU حد 0.5 پر درستگی، mAP@0.5:0.95 — 0.5 سے 0.95 تک حدود کا اوسط۔ FPS — فریم فی سیکنڈ (استنباط کی رفتار)۔ موبائل ایپلی کیشنز کے لیے، mAP/FPS توازن اہم ہے: YOLOv8-Nano 50+ FPS پر 42% mAP@0.5:0.95 دیتا ہے، SSD MobileNet — 60+ FPS پر 22% mAP دیتا ہے۔ ریئل ٹائم کے لیے > 20 FPS، انٹرایکٹو استعمال کے لیے 5–15 FPS۔
IoU (Intersection over Union) — پیش گوئی شدہ اور حقیقی باؤنڈنگ باکس کے درمیان اوورلیپ کا میٹرک۔ IoU = تقاطع کا رقبہ / اتحاد کا رقبہ۔ NMS کے لیے IoU حد عام طور پر 0.5–0.7 ہے۔ فریموں کے درمیان آبجیکٹ ٹریکنگ (دوبارہ شناخت) کے لیے، IoU میچنگ کے ساتھ Deep SORT یا ByteTrack استعمال کریں۔ ویڈیو میں اشیاء گننے کے لیے، BoT-SORT 85% MOTA (Multiple Object Tracking Accuracy) فراہم کرتا ہے۔
| آرکیٹیکچر | mAP@0.5:0.95 | لیٹنسی | پیرامیٹرز | سائز |
|---|---|---|---|---|
| YOLOv8-Nano | 42% | 10–30 ms | 2.6M | 5.9 MB |
| YOLOv8-Small | 50% | 25–60 ms | 11.2M | 22 MB |
| SSD MobileNetV2 | 22% | 15–40 ms | 5.2M | 21 MB |
| EfficientDet-Lite0 | 35% | 20–50 ms | 3.9M | 15 MB |
Anchor Boxes — پہلے سے طے شدہ باؤنڈنگ باکس اشکال جو ماڈل ایڈجسٹ کرتا ہے۔ YOLOv8 اینکر فری ڈیٹیکشن (anchor-free) استعمال کرتا ہے، جو تربیت کو آسان بناتا ہے اور استنباط کو تیز کرتا ہے۔ SSD اور پرانے YOLO کو ہر ڈیٹاسیٹ کے لیے اینکر ٹیوننگ کی ضرورت ہوتی ہے۔ موبائل ڈویلپمنٹ کے لیے، اینکر فری آرکیٹیکچر (YOLOv8، FCOS) ترجیح دیتے ہیں — یہ اشیاء کے سائز پر منحصر نہیں ہوتے اور اپنی مرضی کے مطابق بنانے میں آسان ہیں۔
ML Kit Object Detection and Tracking — ڈیوائس پر آبجیکٹ کا پتہ لگانے اور ٹریک کرنے کے لیے Google کی لائبریری۔ دو موڈ سپورٹ کرتی ہے: سنگل امیج ڈیٹیکٹر (تصاویر کے لیے) اور سٹریمنگ ڈیٹیکٹر (ویڈیو کے لیے)۔ سٹریمنگ موڈ آپٹیکل فلو کا استعمال کرتے ہوئے فریموں کے درمیان خود بخود اشیاء کو ٹریک کرتا ہے، ابتدائی پتہ لگانے کے بعد فریموں کے درمیان لیٹنسی کو 5–10 ms تک کم کرتا ہے۔ زمرے: fashion، food، home، places — ہر ایک میں 10–20 کلاس۔
ML Kit API: ObjectDetector (اختیارات: detectorMode، enableClassification، enableMultipleObjects) → InputImage → DetectedObject (trackingId، boundingBox، classificationCategory، classificationConfidence)۔ TrackingId فریموں میں ایک ہی چیز کو ٹریک کرنے کی اجازت دیتا ہے۔ MultipleObjects = true — فی فریم 5 اشیاء تک کا پتہ لگاتا ہے۔ Classification — آبجیکٹ کیٹیگری کی شناخت کو فعال کرتا ہے (رفتار کے لیے ڈیفالٹ false)۔ سٹریمنگ موڈ ریئل ٹائم کے لیے تجویز کیا جاتا ہے: Pixel 6 پر 20–30 FPS۔
val options = ObjectDetectorOptions.Builder()
.setDetectorMode(ObjectDetectorOptions.STREAM_MODE)
.enableClassification()
.enableMultipleObjects()
.build()
val detector = ObjectDetection.getClient(options)
detector.process(inputImage)
.addOnSuccessListener { objects ->
objects.forEach { obj ->
val box = obj.boundingBox
val trackingId = obj.trackingId
val category = obj.classificationCategory()
drawBoundingBox(box, trackingId, category)
}
}
Object Tracking: پہلے فریم میں کسی چیز کا پتہ لگانے کے بعد، ML Kit دوبارہ پتہ لگائے بغیر ویڈیو سٹریم کے ذریعے اسے ٹریک کرتا ہے (آپٹیکل فلو + فیچر ٹریکنگ پر مبنی)۔ یہ CPU/GPU لوڈ کم کرتا ہے: ابتدائی پتہ لگانا 30–60 ms، بعد کے ٹریکنگ فریم 2–5 ms۔ اگر چیز فریم سے باہر نکل جائے یا > 30° گھوم جائے، تو ٹریکر ری سیٹ ہو جاتا ہے اور دوبارہ پتہ لگانے کی ضرورت ہوتی ہے۔ TrackingId اس وقت تک برقرار رہتا ہے جب تک چیز فریم میں ہے۔ منفرد اشیاء گننے کے لیے، trackingId کو شناخت کنندہ کے طور پر استعمال کریں۔
YOLOv8-Nano — ایج ڈیوائسز کے لیے YOLOv8 (Ultralytics) کا سب سے چھوٹا ورژن۔ 2.6M پیرامیٹرز، 5.9 MB (FP16)، COCO پر 42% mAP@0.5:0.95۔ YOLOv8 اینکر فری ڈیٹیکشن + C2f بیک بون + TaskAlignedAssigner استعمال کرتا ہے۔ موبائل ڈویلپمنٹ کے لیے، TFLite (INT8 — 2.0 MB، لیٹنسی 8–20 ms) اور Core ML (4.5 MB، iPhone 15 Pro پر لیٹنسی 5–15 ms) میں برآمد دستیاب ہے۔ YOLOv8-Nano آن ڈیوائس ریئل ٹائم Object Detection کے لیے بہترین انتخاب ہے۔
YOLOv8 کا TFLite میں برآمد: Ultralytics CLI فراہم کرتا ہے: yolo export model=yolov8n.pt format=tflite int8۔ آؤٹ پٹ NNAPI کے ذریعے GPU Delegate کے لیے موزوں کردہ TFLite INT8 ماڈل ہے۔ کسٹم ڈیٹاسیٹس (اپنی کلاسیں، COCO نہیں) کے لیے — Ultralytics HUB کے ذریعے فی کلاس 50–500 تصاویر پر تربیت۔ RT-DETR (Real-Time Detection Transformer) — Transformer آرکیٹیکچر پر مبنی ایک متبادل، NVIDIA Jetson پر 60 FPS پر 48% mAP، لیکن موبائل آلات کے لیے یہ رفتار میں YOLOv8-Nano سے پیچھے ہے۔
# YOLOv8 export to TFLite
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
model.export(format="tflite", int8=True, imgsz=320)
# Inference with TFLite on Android
val interpreter = Interpreter(loadFile("yolov8n_int8.tflite"))
val output = Array(1) { Array(8400) { FloatArray(6) } }
interpreter.run(inputBuffer, output)
موبائل آلات پر YOLO بمقابلہ ML Kit: ML Kit Object Detection کو ضم کرنا آسان ہے (10 لائنز کوڈ)، ML کی مہارت کی ضرورت نہیں، لیکن معیاری کلاسوں (fashion، food، home، places) تک محدود ہے۔ YOLOv8-Nano کو کسٹم برآمد کی ضرورت ہے لیکن مکمل کنٹرول فراہم کرتا ہے: کوئی بھی کلاس، ان پٹ سائز، آرکیٹیکچر۔ تیز پروٹوٹائپنگ کے لیے — ML Kit۔ غیر معیاری اشیاء کے ساتھ پروڈکشن کے لیے — YOLOv8-Nano۔ iOS کے لیے: Ultralytics + VNCoreMLRequest سے ماڈل برآمد کے ذریعے YOLOv8-Core ML۔
SSD (Single Shot Multibox Detector) — موبائل آلات کے لیے ایک کلاسک ایک مرحلہ آرکیٹیکچر۔ SSD MobileNetV2 — 2020–2023 میں ڈی فیکٹو سٹینڈرڈ: COCO پر 22% mAP@0.5:0.95، Pixel 6 پر 15–40 ms۔ SSD مختلف سائز کی اشیاء کا پتہ لگانے کے لیے فیچر پیرامڈ (مختلف MobileNet پرتیں) اور ہر فیچر میپ سیل کے لیے ڈیفالٹ باکسز (اینکر باکسز) استعمال کرتا ہے۔ فوائد: اپنے وقت کے لیے زیادہ سے زیادہ رفتار۔ نقصانات: چھوٹی اشیاء (10–30 px) پر کم درستگی۔
EfficientDet-Lite — Google (2020+) کا ایک خاندان، TFLite کے لیے موزوں کردہ۔ EfficientDet-Lite0: 3.9M پیرامیٹرز، 35% mAP، 20–50 ms۔ EfficientDet-Lite2: 8.1M، 42% mAP، 40–80 ms۔ EfficientDet ملٹی اسکیل فیچر فیوژن کے لیے BiFPN (Bidirectional Feature Pyramid Network) استعمال کرتا ہے — یہ لیٹنسی بڑھائے بغیر 2–4% mAP فائدہ دیتا ہے۔ موبائل ڈویلپمنٹ کے لیے، Google TFLite Task Vision کے لیے بنیادی ڈیٹیکٹر کے طور پر EfficientDet-Lite کی سفارش کرتا ہے۔
MediaPipe Object Detector — MediaPipe Tasks Vision کے حصے کے طور پر EfficientDet-Lite پر مبنی ایک تیار نفاذ۔ Android، iOS، Python، Web کے لیے متحد API فراہم کرتا ہے۔ MediaPipe Object Detector COCO کلاسز (80 کلاس)، کسٹم ماڈلز، سٹریمنگ موڈ اور CPU/GPU ڈیلیگیٹس کو سپورٹ کرتا ہے۔ کراس پلیٹ فارم پروجیکٹ میں تیز Object Detection انضمام کے لیے، MediaPipe بہترین انتخاب ہے: تمام پلیٹ فارمز کے لیے ایک کوڈ۔
// MediaPipe Object Detection
val options = ObjectDetectorOptions.Builder()
.setBaseOptions(BaseOptions.builder()
.setDelegate(BaseOptions.Delegate.GPU)
.build())
.setMaxResults(5)
.setScoreThreshold(0.5f)
.build()
val detector = ObjectDetector.createFromOptions(context, options)
val image = MPImage.fromBitmap(bitmap)
val result = detector.detect(image)
result.detections.forEach { detection ->
val box = detection.boundingBox
val category = detection.categories.first()
}
موبائل ایپلی کیشن کے لیے آرکیٹیکچر کا انتخاب: درمیانے درجے کے آلات پر > 30 FPS کے لیے — YOLOv8-Nano (INT8) یا SSD MobileNetV2۔ > 40% mAP درستگی کے لیے — YOLOv8-Small (11.2M) یا EfficientDet-Lite2 (8.1M)۔ کراس پلیٹ فارم کے لیے — MediaPipe Object Detector۔ سادگی کے لیے — ML Kit۔ iOS اول کے لیے — Core ML + YOLOv8 .mlpackage۔ Android اول کے لیے — TFLite Task Vision (ObjectDetector API)۔ تربیت: Roboflow (ڈیٹاسیٹ) + Ultralytics YOLOv8 (تربیت) + TFLite/Core ML میں برآمد۔
TFLite Task Vision ObjectDetector — Android اور iOS پر Object Detection ماڈل چلانے کے لیے Google کا متحد API۔ Task API خود بخود تصویری پری پروسیسنگ (اسکیلنگ، نارملائزیشن، کلر اسپیس کنورژن) اور پوسٹ پروسیسنگ (NMS، تھریشولڈنگ) کو ہینڈل کرتا ہے۔ ڈویلپر کو صرف .tflite ماڈل پاس کرنا ہوتا ہے اور bounding box + زمرہ + سکور کے ساتھ Detections کی فہرست حاصل کرنی ہوتی ہے۔ Task API COCO مطابقت رکھنے والے ماڈلز (80 کلاس) کو سپورٹ کرتا ہے۔
کسٹم ماڈل کو Task API میں تبدیل کرنا: TFLite ماڈل میں ان پٹ [1، height، width، 3] (float32/uint8) اور آؤٹ پٹ: detection_boxes[1,N,4]، detection_classes[1,N]، detection_scores[1,N]، num_detections[1] ہونا چاہیے۔ TensorFlow Object Detection API سے پوسٹ پروسیسنگ ops (SSD Postprocess) سمیت برآمد۔ YOLOv8 کے لیے — ops-compat کے ذریعے NMS کے ساتھ TFLite برآمد۔ iOS پر Task API ANE پر تیزی کے لیے Core ML Delegate استعمال کرتا ہے۔
// TFLite Task Vision Object Detector
val options = ObjectDetectorOptions.Builder()
.setScoreThreshold(0.5f)
.setMaxResults(10)
.setDelegate(Delegate.GPU)
.build()
val detector = ObjectDetector.createFromFileAndOptions(
context, "custom_model.tflite", options
)
val image = TensorImage.fromBitmap(bitmap)
val results = detector.detect(image)
results.forEach { detection ->
onObjectDetected(
detection.boundingBox,
detection.categories.first().label,
detection.categories.first().score
)
}
Task API کارکردگی: Android پر GPU Delegate CPU (XNNPACK) کے مقابلے میں 3–5x تیزی فراہم کرتا ہے۔ NPU والے آلات (Pixel 8، Snapdragon 8 Gen 3، Dimensity 9300) پر NNAPI Delegate — اضافی 1.5–2x۔ Hexagon، DSP — DSP ایکسلریٹرز پر 10x تک۔ iOS کے لیے، Core ML Delegate — CPU کے مقابلے 4–6x۔ Task API خود بخود دستیاب ہارڈویئر ایکسلریٹر کا انتخاب کرتا ہے، لیکن DetectorOptions کے ذریعے ڈیلیگیٹ کو مجبور کیا جا سکتا ہے۔
لوگوں اور اشیاء کی گنتی — ریٹیل اینالیٹکس: اسٹور میں زائرین کا پتہ لگانا، قطاروں کی گنتی، شیلف سٹاک لیول کا تعین۔ فریم میں Object Detection لوگوں کا کاؤنٹر پیدل ٹریفک اور تبدیلی کا اندازہ لگانے میں مدد کرتا ہے۔ ML Kit Object Detector 30 FPS تک دیتا ہے — ریئل ٹائم گنتی کے لیے کافی۔ زون کراسنگ کے لیے — Object Detection + ByteTrack ٹریکنگ کا مجموعہ۔ گنتی کی درستگی: اچھی روشنی کے حالات میں 92–95%۔
مینوفیکچرنگ میں نقص کا پتہ لگانا — Object Detection کنویئر پر نقائص کی نشاندہی کرتا ہے: خراشیں، چپس، دراڑیں، غلٹ اسمبلی۔ ایک کسٹم YOLOv8-Nano (INT8) ماڈل USB کیمرہ سے منسلک Android ٹیبلٹ پر چلتا ہے۔ لیٹنسی: 20–40 ms فی فریم (25–50 FPS)۔ پیچیدہ نقائص (مائیکرو کریکس) کے لیے — ان پٹ ریزولوشن 640x640 تک بڑھائیں (لیٹنسی 40–80 ms)۔ تربیت: Roboflow — 200–1000 نقص تصاویر کا ڈیٹاسیٹ + Ultralytics YOLOv8۔
ریئل ٹائم AR آبجیکٹ مارکنگ — ARCore (Android) اور ARKit (iOS) چپٹی سطحوں، عمودی طیاروں اور 3D اشیاء کو پہچاننے کے لیے Object Detection استعمال کرتے ہیں۔ ML Kit Object Detection + ARCore Scene Semantics آبجیکٹ سیگمینٹیشن فراہم کرتا ہے: دیوار، فرش، چھت، فرنیچر۔ کسٹم AR مارکنگ کے لیے — YOLOv8-Nano + SceneKit/SceneForm۔ ریئل ٹائم ضرورت: > 20 FPS۔
// ARKit + Object Detection
let request = VNCoreMLRequest(model: objectDetector) { req, _ in
guard let results = req.results as? [VNDetectedObjectObservation] else { return }
for result in results where result.confidence > 0.6 {
let rect = result.boundingBox
let worldPos = arView.hitTest(rect.center)
arView.addAnchor(ARAnchor(name: label, transform: worldPos))
}
}
طبی امیجنگ — ایکس رے، MRI، CT اسکین کے تجزیہ کے لیے Object Detection۔ ڈاکٹر کے موبائل آلے پر ٹیومر، فریکچر، پیتھالوجی کا پتہ لگانا۔ Android ٹیبلٹ پر YOLOv8-Nano 15–30 ms میں پھیپھڑوں کے نوڈولس کا پتہ لگاتا ہے جس میں 89% حساسیت اور 93% خصوصیت (NIH ChestX-ray14 ڈیٹا) ہے۔ ضروریات: INT8 کوانٹائزیشن (ڈیٹا پرائیویسی)، ہائی ریکال (پیتھالوجی کو چھوڑنا غلط الارم سے زیادہ خطرناک ہے)، اعتماد کی حد < 0.4۔ آن ڈیوائس پروسیسنگ طبی ڈیٹا کی پرائیویسی کو یقینی بناتی ہے۔
اکثر پوچھے گئے سوالات
Object Detection ہر چیز کے لیے باؤنڈنگ باکس لوٹاتا ہے — چیز کو گھیرنے والا ایک مستطیل فریم۔ Image Segmentation (سیمانٹک یا انسٹنس) کسی چیز کی صحیح خاکہ لوٹاتا ہے — پکسل سطح کا ماسک۔ سیگمینٹیشن زیادہ درست ہے لیکن سست (پتہ لگانے کے لیے 50–300 ms بمقابلہ 10–30 ms)۔ ان کاموں کے لیے جہاں چیز کی شکل اہم ہے (طب، AR)، سیگمینٹیشن استعمال کریں۔ ان کاموں کے لیے جہاں مقام اور موجودگی اہم ہے (گنتی، نگرانی)، پتہ لگانا استعمال کریں۔ MobileViT ایک آرکیٹیکچر ہے جو دونوں کاموں کو حل کرتا ہے۔
YOLOv8-Nano COCO (80 کلاس) پر تربیت یافتہ ہے۔ ML Kit Object Detection — 40+ کلاس (fashion، food، home، places)۔ ایک کسٹم ماڈل کارکردگی کے نقصان کے بغیر موبائل آلے پر 100 کلاسوں تک کا پتہ لگا سکتا ہے۔ 100 کلاسوں سے آگے، لیٹنسی بڑھتی ہے اور mAP گرتا ہے۔ 1000+ کلاسوں والی ایپلی کیشنز کے لیے، درجہ بندی کا استعمال کریں: پہلے ایک وسیع زمرہ (10 کلاس)، پھر ایک درست (100 ذیلی کلاس)۔ EfficientNet + YOLO — 50 ms سے کم لیٹنسی کے ساتھ 1000+ کلاسوں کے لیے ایک درجہ بندی کا طریقہ۔
ہاں، ML Kit Object Detection میں بلٹ ان ٹریکنگ شامل ہے: پہلے فریم میں پتہ لگانے کے بعد، چیز دوبارہ پتہ لگائے بغیر ویڈیو سٹریم کے ذریعے ٹریک کی جاتی ہے۔ زیادہ پیچیدہ ٹریکنگ (چیز کا کراس ہونا، فریم چھوڑنا) کے لیے ByteTrack یا BoT-SORT استعمال کریں۔ ByteTrack ملحقہ فریموں کے باؤنڈنگ باکسز کے درمیان IoU (intersection over union) کی بنیاد پر کام کرتا ہے — MOT17 پر 85% MOTA۔ BoT-SORT اضافی طور پر کھوئی ہوئی اشیاء کو بحال کرنے کے لیے دوبارہ شناخت (ReID) استعمال کرتا ہے — 90% MOTA۔
YOLOv8 کو Core ML میں برآمد کریں: yolo export model=yolov8n.pt format=coreml int8۔ نتیجے میں آنے والا .mlpackage VNCoreMLRequest (Vision Framework) کے ذریعے ضم کیا جاتا ہے۔ متبادل: YOLOv8 → TFLite → Core ML Delegate (iOS TFLite API)۔ Ultralytics YOLOv8 Core ML برآمد iOS 16+، ANE تیزی، FP16 اور INT8 کوانٹائزیشن کو سپورٹ کرتی ہے۔ سٹریمنگ کے لیے، بار بار VNImageRequestHandler کارکردگی کی درخواستوں کے ساتھ AVFoundation + Vision استعمال کریں۔ ریئل ٹائم: iPhone 14 Pro پر 20–30 FPS۔
ڈیٹاسیٹ تنوع بڑھائیں (زاویے، روشنی، پس منظر) — فی کلاس 500+ تصاویر۔ ڈیٹا آگمینٹیشن استعمال کریں: mosaic، mixup، random perspective (Ultralytics YOLOv8 آگمینٹیشن — 2–5% mAP فائدہ)۔ ان پٹ سائز 640x640 تک بڑھائیں (320x320 کے بجائے) — +4–8% mAP، لیکن لیٹنسی ×2۔ تربیت کے بعد FP16 یا INT8 کوانٹائزیشن استعمال کریں — +0–1% mAP نقصان، 4x کمپریشن۔ iOS کے لیے، Core ML Delegate کے ذریعے ANE (Neural Engine) استعمال کریں — CPU کے مقابلے 3–5x تیزی۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں