Object Detection: mi ez, algoritmusok és működési elv

Szerző: IT Sectr Megjelenés: 2026-07-19 Olvasási idő: 9 perc

Object Detection — egy számítógépes látás feladat, amely egyszerre határozza meg az objektum osztályát (macska, autó, ember) és annak helyzetét a képen egy téglalap alakú keret (bounding box) formájában. Az Image Labeling-től eltérően az Object Detection több különböző osztályú objektumot talál egyetlen képkockán, és jelzi azok koordinátáit. A mobilos fejlesztésben az Object Detection alkalmazásra kerül videó megfigyelő rendszerekben, AR alkalmazásokban, autonóm drónokban, orvosi képalkotásban és kiskereskedelmi analitikában. A Google ML Kit, 2025 adatai szerint az on-device Object Detection eléri a 30 FPS-t a zászlóshajó eszközökön 87% mAP pontossággal.

Főbb pontok

  • Object Detection — osztályozás + objektumok lokalizációja (bounding box)
  • ML Kit Object Detection — akár 30 FPS, 87% mAP, kategóriák: fashion, food, home, places
  • YOLOv8-Nano — 2.6M paraméter, 42% mAP COCO, 10–30 ms késleltetés
  • SSD MobileNetV2 — 22% mAP COCO, 15–40 ms, maximális sebesség
  • On-device real-time — minden számítás lokális, videó küldése nélkül a szerverre

Mi az Object Detection: működési elv

Object Detection két feladatot old meg egyszerre: mi van a képen (osztályozás) és hol (koordináta regresszió). A modell rácsra osztja a képet, minden cellához bounding box-ot (x, y, width, height) és osztályvalószínűségeket jelez előre. A Non-Maximum Suppression (NMS) eltávolítja a duplikált kereteket egy objektumhoz, megtartva a legbiztosabb előrejelzést. A modern architektúrák two-stage (Faster R-CNN — először region proposals, aztán osztályozás) és one-stage (YOLO, SSD — mindent egyszerre) kategóriákra oszlanak.

Értékelési metrikák: mAP (mean Average Precision) — az Object Detection minőségének fő metrikája. mAP@0.5 — pontosság IoU küszöbérték 0.5-nél, mAP@0.5:0.95 — átlag a 0.5-től 0.95-ig terjedő küszöbértékeken. FPS — képkockák száma másodpercenként (inferencia sebesség). Mobil alkalmazásoknál az mAP/FPS egyensúly kritikus: a YOLOv8-Nano 42% mAP@0.5:0.95-öt ad 50+ FPS-nél, az SSD MobileNet — 22% mAP-t 60+ FPS-nél. Valós idejű használathoz > 20 FPS, interaktív használathoz 5–15 FPS.

IoU (Intersection over Union) — az előrejelzett és a ground truth bounding box közötti átfedés metrikája. IoU = metszet területe / unió területe. Az IoU küszöbérték NMS-hez általában 0.5–0.7. Objektumok követéséhez képkockák között (re-identification) használja a Deep SORT vagy ByteTrack algoritmust IoU-illesztéssel. Objektumok számlálásához videón — a BoT-SORT 85% MOTA-t (Multiple Object Tracking Accuracy) biztosít.

ArchitektúramAP@0.5:0.95KésleltetésParaméterekMéret
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 — előre meghatározott bounding box formák, amelyeket a modell korrigál. A YOLOv8 horgony nélküli detekciót (anchor-free) használ, ami egyszerűsíti a tanulást és felgyorsítja az inferenciát. Az SSD és a régi YOLO horgonyok kiválasztását igényli az adathalmazhoz. Mobilos fejlesztéshez az anchor-free architektúrák (YOLOv8, FCOS) előnyösebbek — nem függnek az objektum méretétől és egyszerűbbek testreszabni.

ML Kit Object Detection és Tracking

ML Kit Object Detection and Tracking — a Google könyvtára objektumok észlelésére és követésére a készüléken. Két módosítást támogat: single-image detector (fényképekhez) és streaming detector (videóhoz). A streaming mód automatikusan követi az objektumokat a képkockák között optikai áramlás segítségével, csökkentve a képkockák közötti késleltetést 5–10 ms-ra a kezdeti észlelés után. Kategóriák: fashion, food, home, places — egyenként 10–20 osztály.

ML Kit API: ObjectDetector (opciók: detectorMode, enableClassification, enableMultipleObjects) → InputImage → DetectedObject (trackingId, boundingBox, classificationCategory, classificationConfidence). A TrackingId lehetővé teszi ugyanazon objektum követését a képkockák között. MultipleObjects = true — akár 5 objektum észlelése képkockánként. Classification — bekapcsolja az objektum kategória felismerését (alapértelmezett false a sebesség érdekében). A streaming mód ajánlott valós idejű használatra: 20–30 FPS Pixel 6-on.

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: az objektum első képkockán történő észlelése után az ML Kit követi azt a videófolyamon keresztül ismételt észlelés nélkül (optical flow + feature tracking alapján). Ez csökkenti a CPU/GPU terhelést: első észlelés 30–60 ms, következő követési képkockák 2–5 ms. Ha az objektum elhagyja a képkockát vagy > 30°-kal elfordul, a tracker alaphelyzetbe áll, és ismételt észlelés szükséges. A TrackingId megmarad, amíg az objektum a képkockán belül van. Egyedi objektumok számlálásához használja a trackingId-t azonosítóként.

YOLO: You Only Look Once mobileszközökön

YOLOv8-Nano — a YOLOv8 (Ultralytics) legkisebb verziója edge eszközökhöz. 2.6M paraméter, 5.9 MB (FP16), 42% mAP@0.5:0.95 a COCO-n. A YOLOv8 anchor-free detekciót + C2f backend + TaskAlignedAssigner-t használ az előrejelzések illesztéséhez. Mobilos fejlesztéshez elérhető az export TFLite (INT8 — 2.0 MB, késleltetés 8–20 ms) és Core ML (4.5 MB, késleltetés 5–15 ms iPhone 15 Pro-n) formátumba. A YOLOv8-Nano a legjobb választás on-device valós idejű Object Detection-hez.

YOLOv8 exportálása TFLite-ba: Az Ultralytics CLI-t biztosít: yolo export model=yolov8n.pt format=tflite int8. Az eredmény — TFLite INT8 modell, optimalizálva GPU Delegate számára NNAPI-n keresztül. Egyedi adathalmazhoz (saját osztályok, nem COCO) — képzés Ultralytics HUB-on keresztül 50–500 képen osztályonként. RT-DETR (Real-Time Detection Transformer) — alternatíva Transformer architektúrán, 48% mAP 60 FPS-nél NVIDIA Jetson-on, de mobileszközökön sebességben még mindig elmarad a YOLOv8-Nano-tól.

python
# YOLOv8 exportálása TFLite-ba
from ultralytics import YOLO

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

# Inferencia TFLite-tal Androidon
val interpreter = Interpreter(loadFile("yolov8n_int8.tflite"))
val output = Array(1) { Array(8400) { FloatArray(6) } }
interpreter.run(inputBuffer, output)

YOLO vs ML Kit mobileszközökön: Az ML Kit Object Detection egyszerűbb integrálni (10 sor kód), nem igényel ML szakértelmet, de a standard osztályokra korlátozódik (fashion, food, home, places). A YOLOv8-Nano egyedi exportot igényel, de teljes kontrollt ad: bármilyen osztály, bemeneti méret, architektúra. Gyors prototípuskészítéshez — ML Kit. Produkcióhoz nem szabványos objektumokkal — YOLOv8-Nano. iOS-hez: YOLOv8-Core ML modell exporton keresztül az Ultralytics-ből + VNCoreMLRequest.

SSD és más on-device architektúrák

SSD (Single Shot Multibox Detector) — klasszikus one-stage architektúra mobileszközökhöz. SSD MobileNetV2 — de facto szabvány 2020–2023-ban: 22% mAP@0.5:0.95 a COCO-n, 15–40 ms Pixel 6-on. Az SSD feature pyramid-ot (a MobileNet különböző rétegei különböző méretű objektumok észleléséhez) és default boxes-t (anchor boxes) használ a feature map minden cellájához. Előny: maximális sebesség a maga korában. Hátrány: alacsony pontosság kis objektumokon (10–30 px).

EfficientDet-Lite — család a Google-től (2020+), TFLite-ra optimalizálva. EfficientDet-Lite0: 3.9M paraméter, 35% mAP, 20–50 ms. EfficientDet-Lite2: 8.1M, 42% mAP, 40–80 ms. Az EfficientDet BiFPN-t (Bidirectional Feature Pyramid Network) használ a multi-scale feature fusion-hoz — ez 2–4% mAP növekedést ad a késleltetés növelése nélkül. Mobilos fejlesztéshez a Google az EfficientDet-Lite-ot ajánlja fő detektorként a TFLite Task Vision-hoz.

MediaPipe Object Detector — kész implementáció az EfficientDet-Lite alapján a MediaPipe Tasks Vision keretrendszerben. Egységes API-t biztosít Android, iOS, Python, Web számára. A MediaPipe Object Detector támogatja a COCO osztályokat (80 osztály), egyedi modelleket, streaming módot és CPU/GPU delegátumokat. Gyors Object Detection integrációhoz egy cross-platform projektben a MediaPipe az optimális választás: egy kód minden platformra.

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

Architektúra választása mobil alkalmazáshoz: > 30 FPS-hez középkategóriás eszközökön — YOLOv8-Nano (INT8) vagy SSD MobileNetV2. > 40% mAP pontossághoz — YOLOv8-Small (11.2M) vagy EfficientDet-Lite2 (8.1M). Cross-platformhoz — MediaPipe Object Detector. Egyszerűséghez — ML Kit. iOS-first-hez — Core ML + YOLOv8 .mlpackage. Android-first-hez — TFLite Task Vision (ObjectDetector API). Képzés: Roboflow (adathalmaz) + Ultralytics YOLOv8 (tréning) + export TFLite/Core ML formátumba.

TensorFlow Lite Task Vision API

TFLite Task Vision ObjectDetector — egységes API a Google-tól Object Detection modellek futtatásához Androidon és iOS-en. A Task API automatikusan kezeli a kép előfeldolgozását (skálázás, normalizálás, színtér konverzió) és utófeldolgozását (NMS, thresholding). A fejlesztőnek át kell adnia a .tflite modellt, és meg kell kapnia a Detections listát bounding box + category + score adatokkal. A Task API COCO-kompatibilis modelleket támogat (80 osztály).

Egyedi modell konvertálása Task API-ba: A TFLite modellnek bemenete [1, height, width, 3] (float32/uint8) és kimenete: detection_boxes[1,N,4], detection_classes[1,N], detection_scores[1,N], num_detections[1] kell legyen. Export a TensorFlow Object Detection API-ból beépített post-processing ops-szal (SSD Postprocess). YOLOv8-hoz — TFLite export NMS-sel ops-compat-on keresztül. A Task API iOS-en Core ML Delegate-et használ az ANE gyorsításához.

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 teljesítménye: A GPU Delegate Androidon 3–5x gyorsulást ad a CPU-hoz (XNNPACK) képest. NNAPI Delegate — további 1.5–2x NPU-val rendelkező eszközökön (Pixel 8, Snapdragon 8 Gen 3, Dimensity 9300). Hexagon, DSP — akár 10x DSP gyorsítókon. iOS-re Core ML Delegate — 4–6x a CPU-hoz képest. A Task API automatikusan kiválasztja a rendelkezésre álló hardvergyorsítót, de a delegátum kényszeríthető a DetectorOptions segítségével.

Object Detection alkalmazása mobil alkalmazásokban

Emberek és objektumok számlálása — kiskereskedelmi analitika: látogatók észlelése az üzletben, sorok számlálása, polcok áruval való telítettségének meghatározása. Az Object Detection számláló a képkockán lehetővé teszi a forgalom és konverzió értékelését. Az ML Kit Object Detector akár 30 FPS-t ad — elegendő a valós idejű számláláshoz. Vonalak átlépéséhez (zone crossing) — Object Detection + ByteTrack követés kombinációja. Számlálási pontosság: 92–95% jó megvilágítás mellett.

Gyártási hibák észlelése — Az Object Detection meghatározza a hibákat a gyártósoron: karcolások, forgácsok, repedések, helytelen összeszerelés. Az egyedi YOLOv8-Nano (INT8) modell USB kamerához csatlakoztatott Android táblagépen fut. Késleltetés: 20–40 ms képkockánként (25–50 FPS). Összetett hibákhoz (mikrorepedések) — növelje a bemeneti felbontást 640x640-re (késleltetés 40–80 ms). Képzés: Roboflow — 200–1000 hibaképből álló adathalmaz + Ultralytics YOLOv8.

AR objektumjelölés valós időben — Az ARCore (Android) és ARKit (iOS) Object Detection-t használ sík felületek, függőleges síkok és 3D objektumok felismerésére. Az ML Kit Object Detection + ARCore Scene Semantics objektumszegmentációt ad: fal, padló, mennyezet, bútor. Egyedi AR jelöléshez (pl. egy adott kanapémodel felismerése és AR információ elhelyezése) — YOLOv8-Nano + SceneKit/SceneForm. Valós idejű követelmény: > 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))
    }
}

Orvosi képalkotás — Object Detection röntgenfelvételek, MRI, CT elemzéséhez. Daganatok, törések, patológiák észlelése az orvos mobileszközén. A YOLOv8-Nano Android táblagépen tüdőcsomókat észlel 15–30 ms alatt 89% érzékenységgel és 93% specificitással (NIH ChestX-ray14 adatok). Követelmények: INT8 kvantálás (adatok magánélete), high recall (a patológia kihagyása veszélyesebb, mint a téves riasztás), confidence küszöb < 0.4 használata. A készüléken történő feldolgozás garantálja az orvosi adatok magánéletét.

Gyakran ismételt kérdések

Mi a különbség az Object Detection és az Image Segmentation között?

Object Detection minden objektumhoz bounding box-ot ad vissza — egy téglalap alakú keretet, amely körülveszi az objektumot. Image Segmentation (szemantikus vagy instance) az objektum pontos kontúrját adja vissza — egy pixelmaszkot. A szegmentáció pontosabb, de lassabb (50–300 ms vs 10–30 ms az észleléshez). Azokhoz a feladatokhoz, ahol az objektum alakja fontos (orvosi, AR), használjon szegmentációt. Azokhoz a feladatokhoz, ahol a pozíció és jelenlét fontos (számlálás, moderálás), használjon észlelést. MobileViT — architektúra, amely mindkét feladatot megoldja.

Hány osztályt képes észlelni az Object Detection egy mobileszközön?

A YOLOv8-Nano a COCO-n van képezve (80 osztály). ML Kit Object Detection — 40+ osztály (fashion, food, home, places). Egy egyedi modell akár 100 osztályt is képes észlelni egy mobileszközön teljesítményvesztés nélkül. 100 osztály felett — a késleltetés nő és az mAP csökken. 1000+ osztályú alkalmazásokhoz használjon hierarchikus osztályozást: először durva kategória (10 osztály), majd pontos (100 alkategória). EfficientNet + YOLO — hierarchikus megközelítés 1000+ osztályhoz < 50 ms késleltetéssel.

Használható-e az Object Detection objektumok követésére képkockák között?

Igen, az ML Kit Object Detection beépített követést tartalmaz: az első képkockán történő észlelés után az objektum követésre kerül a videófolyamon keresztül ismételt észlelés nélkül. Bonyolultabb követéshez (objektumok kereszteződése, képkocka elhagyása) használja a ByteTrack vagy BoT-SORT algoritmust. A ByteTrack a szomszédos képkockák bounding box-ai közötti IoU (intersection over union) alapján működik — 85% MOTA a MOT17-en. A BoT-SORT emellett re-identification (ReID) segítségével állítja vissza az elveszett objektumokat — 90% MOTA.

Hogyan telepítsük a YOLOv8-at iOS-re?

Exportálja a YOLOv8-at Core ML-be: yolo export model=yolov8n.pt format=coreml int8. A kapott .mlpackage integrálódik a VNCoreMLRequest (Vision Framework) segítségével. Alternatíva: YOLOv8 → TFLite → Core ML Delegate (iOS TFLite API). Az Ultralytics YOLOv8 Core ML export támogatja az iOS 16+, ANE gyorsítást, FP16 és INT8 kvantálást. Streaminghez használja az AVFoundation + Vision alkalmazást ismétlődő VNImageRequestHandler kérésekkel. Valós idejű: 20–30 FPS iPhone 14 Pro-n.

Hogyan javítható az Object Detection pontossága mobileszközökön?

Növelje az adathalmaz változatosságát (szögek, megvilágítás, háttér) — 500+ kép osztályonként. Használjon adatbővítést: mosaic, mixup, random perspective (Ultralytics YOLOv8 bővítés — 2–5% mAP növekedés). Növelje a bemeneti méretet 640x640-re (320x320 helyett) — +4–8% mAP, de késleltetés ×2. Használjon FP16 vagy INT8 kvantálást képzés után (post-training) — +0–1% mAP veszteség, 4x tömörítés. iOS-hez használja az ANE (Neural Engine) segítségével a Core ML Delegate-et — 3–5x gyorsulás a CPU-hoz képest.

Összefoglalás

  • Object Detection — osztályozás + objektumok lokalizációja bounding box-szal
  • ML Kit — akár 30 FPS, 40+ osztály, beépített objektumkövetés
  • YOLOv8-Nano — 2.6M paraméter, 42% mAP, 10–30 ms, legjobb on-device használatra
  • SSD / EfficientDet — klasszikus és modern alternatívák TFLite-hoz
  • Task Vision API — egységes TFLite API GPU/ANE gyorsítással
  • On-device — adatvédelem, nulla késleltetés, internet nélkül
  • Alkalmazás — kiskereskedelmi analitika, AR, orvosi, hibadetektálás, objektumszámlálás

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is