Object Detection: bu nədir, alqoritmlər və iş prinsipi

Müəllif: IT Sectr Dərc olunub: 2026-07-19 Oxuma vaxtı: 9 dəq

Object Detection — eyni zamanda obyektin sinifini (pişik, maşın, insan) və onun şəkildə düzbucaqlı çərçivə (bounding box) şəklində yerini müəyyən edən kompüter görmə tapşırığıdır. Image Labeling-dən fərqli olaraq, Object Detection bir kadrda müxtəlif sinifli bir neçə obyekt tapır və onların koordinatlarını göstərir. Mobil inkişafda Object Detection video nəzarət sistemlərində, AR tətbiqlərində, avtonom dronlarda, tibbi təsvirdə və retail analitikada tətbiq edilir. Google ML Kit, 2025 məlumatlarına görə, on-device Object Detection flaqman cihazlarda 87% mAP dəqiqliyi ilə 30 FPS-ə çatır.

Əsas məqamlar

  • Object Detection — klassifikasiya + obyekt lokalizasiyası (bounding box)
  • ML Kit Object Detection — 30 FPS-ə qədər, 87% mAP, kateqoriyalar: fashion, food, home, places
  • YOLOv8-Nano — 2.6M parametr, 42% mAP COCO, 10–30 ms latency
  • SSD MobileNetV2 — 22% mAP COCO, 15–40 ms, maksimum sürət
  • On-device real-time — bütün hesablamalar lokal, videonu serverə göndərmədən

Object Detection nədir: iş prinsipi

Object Detection eyni anda iki məsələ həll edir: şəkildə nə var (klassifikasiya) və harada (koordinat reqresiyası). Model şəkili şəbəkəyə bölür, hər xana üçün bounding box (x, y, width, height) və sinif ehtimallarını proqnozlaşdırır. Non-Maximum Suppression (NMS) bir obyekt üçün təkrarlanan çərçivələri silir, ən inamlı proqnozu saxlayır. Müasir arxitekturalar two-stage (Faster R-CNN — əvvəlcə region proposals, sonra klassifikasiya) və one-stage (YOLO, SSD — hər şey birdən) bölünür.

Qiymətləndirmə metrikaları: mAP (mean Average Precision) — Object Detection keyfiyyətinin əsas metrikası. mAP@0.5 — IoU həddi 0.5-də dəqiqlik, mAP@0.5:0.95 — 0.5-dən 0.95-ə qədər həddlər üzrə orta. FPS — saniyədə kadr sayı (inferens sürəti). Mobil tətbiqlər üçün mAP/FPS balansı kritikdir: YOLOv8-Nano 50+ FPS-də 42% mAP@0.5:0.95 verir, SSD MobileNet — 60+ FPS-də 22% mAP. Real-time üçün > 20 FPS, interaktiv istifadə üçün 5–15 FPS.

IoU (Intersection over Union) — proqnozlaşdırılmış və ground truth bounding box arasında üst-üstə düşmə metrikası. IoU = kəsişmə sahəsi / birləşmə sahəsi. NMS üçün IoU həddi adətən 0.5–0.7. Kadrlar arasında obyekt izləmə (re-identification) üçün Deep SORT və ya ByteTrack-dən IoU matçinqi ilə istifadə edin. Videoda obyekt saymaq üçün — BoT-SORT 85% MOTA (Multiple Object Tracking Accuracy) təmin edir.

ArxitekturamAP@0.5:0.95LatencyParametrlərÖlçü
YOLOv8-Nano42%10–30 ms2.6M5.9 MB
YOLOv8-Small50%25–60 ms11.2M22 MB
SSD MobileNetV222%15–40 ms5.2M21 MB
EfficientDet-Lite035%20–50 ms3.9M15 MB

Anchor Boxes — modelin düzəliş etdiyi əvvəlcədən təyin olunmuş bounding box formaları. YOLOv8 anchorsız deteksiyadan (anchor-free) istifadə edir ki, bu da öyrənməni sadələşdirir və inferensi sürətləndirir. SSD və köhnə YOLO dataset üçün anchor seçilməsi tələb edir. Mobil inkişaf üçün anchor-free arxitekturalar (YOLOv8, FCOS) üstünlük təşkil edir — onlar obyekt ölçüsündən asılı deyil və fərdiləşdirmədə daha sadədir.

ML Kit Object Detection və Tracking

ML Kit Object Detection and Tracking — cihazda obyekt aşkarlama və izləmə üçün Google kitabxanası. İki modifikasiyanı dəstəkləyir: single-image detector (şəkillər üçün) və streaming detector (video üçün). Streaming rejimi optik axın vasitəsilə kadrlar arasında obyektləri avtomatik izləyir, ilkin deteksiyadan sonra kadrlar arasında latency-ni 5–10 ms-ə endirir. Kateqoriyalar: fashion, food, home, places — hər biri 10–20 sinif.

ML Kit API: ObjectDetector (seçimlər: detectorMode, enableClassification, enableMultipleObjects) → InputImage → DetectedObject (trackingId, boundingBox, classificationCategory, classificationConfidence). TrackingId eyni obyekti kadrlar arasında izləməyə imkan verir. MultipleObjects = true — kadrda 5 obyektə qədər deteksiya. Classification — obyekt kateqoriyasının tanınmasını aktivləşdirir (sürət üçün standart false). Streaming rejimi real-time üçün tövsiyə olunur: Pixel 6-da 20–30 FPS.

kotlin
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: ilk kadrda obyekt deteksiyasından sonra ML Kit onu video axını ilə təkrar deteksiya olmadan izləyir (optical flow + feature tracking əsasında). Bu CPU/GPU yükünü azaldır: ilk deteksiya 30–60 ms, sonrakı izləmə kadrları 2–5 ms. Obyekt kadrdan çıxarsa və ya > 30° dönərsə, tracker sıfırlanır və təkrar deteksiya tələb olunur. TrackingId obyekt kadrda olduğu müddətcə qalır. Unikal obyektləri saymaq üçün trackingId-dən identifikator kimi istifadə edin.

YOLO: You Only Look Once mobil cihazlarda

YOLOv8-Nano — edge cihazlar üçün YOLOv8-in (Ultralytics) ən kiçik versiyası. 2.6M parametr, 5.9 MB (FP16), COCO-da 42% mAP@0.5:0.95. YOLOv8 anchor-free deteksiya + C2f backbone + TaskAlignedAssigner proqnozların uyğunlaşdırılması üçün istifadə edir. Mobil inkişaf üçün TFLite (INT8 — 2.0 MB, latency 8–20 ms) və Core ML (4.5 MB, iPhone 15 Pro-da latency 5–15 ms) ixracı mövcuddur. YOLOv8-Nano — on-device real-time Object Detection üçün ən yaxşı seçimdir.

YOLOv8-in TFLite-ə ixracı: Ultralytics CLI təqdim edir: yolo export model=yolov8n.pt format=tflite int8. Nəticədə NNAPI vasitəsilə GPU Delegate altında optimallaşdırılmış TFLite INT8 modeli alınır. Fərdi dataset (öz siniflər, COCO deyil) üçün — sinif başına 50–500 şəkildə Ultralytics HUB vasitəsilə öyrənmə. RT-DETR (Real-Time Detection Transformer) — Transformer arxitekturasında alternativ, NVIDIA Jetson-da 60 FPS-də 48% mAP, lakin mobil cihazlar üçün hələlik sürət baxımından YOLOv8-Nano-dan geri qalır.

python
# YOLOv8-in TFLite-ə ixracı
from ultralytics import YOLO

model = YOLO("yolov8n.pt")
model.export(format="tflite", int8=True, imgsz=320)

# Android-də TFLite ilə inferens
val interpreter = Interpreter(loadFile("yolov8n_int8.tflite"))
val output = Array(1) { Array(8400) { FloatArray(6) } }
interpreter.run(inputBuffer, output)

Mobil cihazlarda YOLO vs ML Kit: ML Kit Object Detection inteqrasiyada daha sadədir (10 sətir kod), ML təcrübəsi tələb etmir, lakin standart siniflərlə məhdudlaşır (fashion, food, home, places). YOLOv8-Nano fərdi ixrac tələb edir, lakin tam nəzarət verir: istənilən siniflər, giriş ölçüsü, arxitektura. Sürətli prototipləşdirmə üçün — ML Kit. Qeyri-standart obyektlərlə istehsal üçün — YOLOv8-Nano. iOS üçün: Ultralytics + VNCoreMLRequest vasitəsilə YOLOv8-Core ML model ixracı.

SSD və digər on-device arxitekturaları

SSD (Single Shot Multibox Detector) — mobil cihazlar üçün klassik one-stage arxitektura. SSD MobileNetV2 — 2020–2023-cü illərdə de-fakto standart: COCO-da 22% mAP@0.5:0.95, Pixel 6-da 15–40 ms. SSD feature pyramid (müxtəlif ölçülü obyekt deteksiyası üçün MobileNet-in müxtəlif təbəqələri) və hər feature map xanası üçün default boxes (anchor boxes) istifadə edir. Müsbət cəhət: öz dövrü üçün maksimal sürət. Mənfi cəhət: kiçik obyektlərdə (10–30 px) aşağı dəqiqlik.

EfficientDet-Lite — Google-dan (2020+) TFLite üçün optimallaşdırılmış ailə. EfficientDet-Lite0: 3.9M parametr, 35% mAP, 20–50 ms. EfficientDet-Lite2: 8.1M, 42% mAP, 40–80 ms. EfficientDet multi-scale feature fusion üçün BiFPN (Bidirectional Feature Pyramid Network) istifadə edir — bu, latency artırmadan 2–4% mAP artımı verir. Mobil inkişaf üçün Google TFLite Task Vision üçün əsas detektor kimi EfficientDet-Lite tövsiyə edir.

MediaPipe Object Detector — MediaPipe Tasks Vision tərkibində EfficientDet-Lite əsasında hazır tətbiq. Android, iOS, Python, Web üçün vahid API təqdim edir. MediaPipe Object Detector COCO siniflərini (80 sinif), fərdi modelləri, streaming rejimini və CPU/GPU deleqatlarını dəstəkləyir. Çarpaz platformalı layihədə sürətli Object Detection inteqrasiyası üçün MediaPipe — optimal seçimdir: bütün platformalar üçün bir kod.

kotlin
// 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()
}

Mobil tətbiq üçün arxitektura seçimi: orta cihazlarda > 30 FPS üçün — YOLOv8-Nano (INT8) və ya SSD MobileNetV2. > 40% mAP dəqiqliyi üçün — YOLOv8-Small (11.2M) və ya EfficientDet-Lite2 (8.1M). Çarpaz platformalılıq üçün — MediaPipe Object Detector. Sadəlik üçün — ML Kit. iOS-first üçün — Core ML + YOLOv8 .mlpackage. Android-first üçün — TFLite Task Vision (ObjectDetector API). Öyrənmə: Roboflow (dataset) + Ultralytics YOLOv8 (təlim) + TFLite/Core ML-ə ixrac.

TensorFlow Lite Task Vision API

TFLite Task Vision ObjectDetector — Android və iOS-da Object Detection modellərini işə salmaq üçün Google-dan vahid API. Task API şəklin ilkin emalını (miqyaslama, normallaşdırma, rəng məkanı konversiyası) və son emalı (NMS, thresholding) avtomatik idarə edir. Developer .tflite modelini ötürməli və bounding box + category + score ilə Detections siyahısı almalıdır. Task API COCO-uyğun modelləri dəstəkləyir (80 sinif).

Fərdi modelin Task API-ə konvertasiyası: TFLite modeli giriş [1, height, width, 3] (float32/uint8) və çıxış: detection_boxes[1,N,4], detection_classes[1,N], detection_scores[1,N], num_detections[1] olmalıdır. TensorFlow Object Detection API-dən post-processing ops daxil edilmiş (SSD Postprocess) ixrac. YOLOv8 üçün — ops-compat vasitəsilə NMS ilə TFLite ixracı. iOS-da Task API ANE-də sürətləndirmə üçün Core ML Delegate istifadə edir.

kotlin
// 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 performansı: Android-də GPU Delegate CPU (XNNPACK) ilə müqayisədə 3–5x sürətlənmə verir. NNAPI Delegate — NPU olan cihazlarda (Pixel 8, Snapdragon 8 Gen 3, Dimensity 9300) daha 1.5–2x. Hexagon, DSP — DSP akseleratorlarında 10x-ə qədər. iOS üçün Core ML Delegate — CPU-ya qarşı 4–6x. Task API mövcud aparat akseleratorunu avtomatik seçir, lakin DetectorOptions vasitəsilə deleqatı məcburi təyin etmək olar.

Object Detection-ın mobil tətbiqlərdə tətbiqi

İnsan və obyektlərin sayılması — retail analitika: mağazada ziyarətçilərin deteksiyası, növbələrin sayılması, rəflərin mallarla doluluğunun müəyyən edilməsi. Kadrda Object Detection sayğacı keçid qabiliyyətini və konversiyanı qiymətləndirməyə imkan verir. ML Kit Object Detector 30 FPS-ə qədər verir — real-time sayma üçün kifayətdir. Xətlərin kəsişməsi (zone crossing) üçün — Object Detection + ByteTrack izləmə kombinasiyası. Sayma dəqiqliyi: yaxşı işıqlandırmada 92–95%.

İstehsalda qüsur deteksiyası — Object Detection konveyerdə qüsurları müəyyən edir: cızıqlar, çatlar, yanlış yığım. Fərdi YOLOv8-Nano (INT8) modeli USB kameraya qoşulmuş Android planşetində işləyir. Latency: kadr başına 20–40 ms (25–50 FPS). Mürəkkəb qüsurlar (mikroçatlar) üçün — giriş təsvir ölçüsünü 640x640-ə qədər artırın (latency 40–80 ms). Öyrənmə: Roboflow — 200–1000 qüsur şəklindən dataset + Ultralytics YOLOv8.

Real vaxtda AR obyekt işarələmə — ARCore (Android) və ARKit (iOS) düz səthləri, şaquli müstəviləri və 3D obyektləri tanımaq üçün Object Detection istifadə edir. ML Kit Object Detection + ARCore Scene Semantics obyekt seqmentasiyası verir: divar, döşəmə, tavan, mebel. Fərdi AR işarələmə üçün (məsələn, müəyyən divan modelinin tanınması və AR məlumatının yerləşdirilməsi) — YOLOv8-Nano + SceneKit/SceneForm. Real-time tələbi: > 20 FPS.

swift
// 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))
    }
}

Tibbi təsvir — rentgen, MRT, KT şəkillərinin analizi üçün Object Detection. Həkimin mobil cihazında şiş, sınıq, patologiya deteksiyası. Android planşetində YOLOv8-Nano ağciyər düyünlərini 15–30 ms-də 89% həssaslıq və 93% spesifikliklə aşkarlayır (NIH ChestX-ray14 məlumatları). Tələblər: INT8 kvantlaşdırması (məlumat məxfiliyi), yüksək recall (patologiyanı qaçırmaq yalançı alarmdan daha təhlükəlidir), confidence həddi < 0.4 istifadəsi. Cihazda emal tibbi məlumatların məxfiliyini təmin edir.

Tez-tez verilən suallar

Object Detection və Image Segmentation arasında nə fərq var?

Object Detection hər obyekt üçün bounding box qaytarır — obyekti əhatə edən düzbucaqlı çərçivə. Image Segmentation (semantik və ya instance) obyektin dəqiq konturunu qaytarır — piksel maskası. Seqmentasiya daha dəqiqdir, lakin daha yavaşdır (50–300 ms vs deteksiya üçün 10–30 ms). Obyektin formasının vacib olduğu tapşırıqlar üçün (tibb, AR) seqmentasiyadan istifadə edin. Mövqe və varlığın vacib olduğu tapşırıqlar üçün (sayma, moderasiya) deteksiyadan istifadə edin. MobileViT — hər iki tapşırığı həll edən arxitekturadır.

Object Detection mobil cihazda neçə sinif müəyyən edə bilər?

YOLOv8-Nano COCO-da təlim keçmişdir (80 sinif). ML Kit Object Detection — 40+ sinif (fashion, food, home, places). Fərdi model performans itkisi olmadan mobil cihazda 100 sinifə qədər müəyyən edə bilər. 100 sinifdən yuxarı latency artır və mAP azalır. 1000+ sinifli tətbiqlər üçün iyerarxik klassifikasiyadan istifadə edin: əvvəlcə ümumi kateqoriya (10 sinif), sonra dəqiq (100 alt sinif). EfficientNet + YOLO — latency < 50 ms ilə 1000+ sinif üçün iyerarxik yanaşma.

Object Detection kadrlar arasında obyekt izləmək üçün istifadə edilə bilərmi?

Bəli, ML Kit Object Detection daxili izləməni ehtiva edir: ilk kadrda deteksiyadan sonra obyekt təkrar deteksiya olmadan video axını ilə izlənir. Daha mürəkkəb izləmə (obyektlərin kəsişməsi, kadrdan çıxma) üçün ByteTrack və ya BoT-SORT istifadə edin. ByteTrack qonşu kadrların bounding box-ları arasında IoU (intersection over union) əsasında işləyir — MOT17-də 85% MOTA. BoT-SORT itirilmiş obyektləri bərpa etmək üçün əlavə olaraq re-identification (ReID) istifadə edir — 90% MOTA.

YOLOv8 iOS-da necə yerləşdirilir?

YOLOv8-i Core ML-ə ixrac edin: yolo export model=yolov8n.pt format=coreml int8. Alınan .mlpackage VNCoreMLRequest (Vision Framework) vasitəsilə inteqrasiya olunur. Alternativ: YOLOv8 → TFLite → Core ML Delegate (iOS TFLite API). Ultralytics YOLOv8 Core ML ixracı iOS 16+, ANE sürətləndirilməsi, FP16 və INT8 kvantlaşdırmasını dəstəkləyir. Streaming üçün AVFoundation + Vision-dan təkrarlanan VNImageRequestHandler performans sorğuları ilə istifadə edin. Real-time: iPhone 14 Pro-da 20–30 FPS.

Mobil cihazlarda Object Detection dəqiqliyini necə yaxşılaşdırmaq olar?

Datasetin müxtəlifliyini artırın (bucaqlar, işıqlandırma, fon) — sinif başına 500+ şəkil. Data augmentation istifadə edin: mosaic, mixup, random perspective (Ultralytics YOLOv8 augmentasiyası — 2–5% mAP artımı). Giriş ölçüsünü 640x640-ə qədər artırın (320x320 əvəzinə) — +4–8% mAP, lakin latency ×2. Təlimdən sonra FP16 və ya INT8 kvantlaşdırmasından istifadə edin (post-training) — +0–1% mAP itkisi, 4x sıxılma. iOS üçün ANE (Neural Engine) vasitəsilə Core ML Delegate istifadə edin — CPU-ya qarşı 3–5x sürətlənmə.

Nəticə

  • Object Detection — bounding box ilə klassifikasiya + obyekt lokalizasiyası
  • ML Kit — 30 FPS-ə qədər, 40+ sinif, daxili obyekt izləmə
  • YOLOv8-Nano — 2.6M parametr, 42% mAP, 10–30 ms, on-device üçün ən yaxşısı
  • SSD / EfficientDet — TFLite üçün klassik və müasir alternativlər
  • Task Vision API — GPU/ANE sürətləndirilməsi ilə vahid TFLite API
  • On-device — məlumat məxfiliyi, sıfır latency, internet olmadan
  • Tətbiq — retail analitika, AR, tibb, defektoskopiya, obyekt sayma

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun