Object Detection — ay isang computer vision task na sabay na tinutukoy ang klase ng bagay (pusa, kotse, tao) at ang posisyon nito sa larawan sa anyo ng isang parihabang frame (bounding box). Hindi tulad ng Image Labeling, ang Object Detection ay nakakahanap ng maraming bagay ng iba't ibang klase sa isang frame at nagpapahiwatig ng kanilang mga coordinate. Sa mobile development, ang Object Detection ay ginagamit sa mga video surveillance system, AR application, autonomous drone, medical imaging, at retail analytics. Ayon sa datos ng Google ML Kit, 2025, ang on-device Object Detection ay umaabot ng 30 FPS sa mga flagship device na may katumpakan na 87% mAP.
Mga pangunahing punto
Object Detection ay lumulutas ng dalawang gawain nang sabay: ano ang nasa larawan (klasipikasyon) at saan (regresyon ng coordinate). Hinahati ng modelo ang larawan sa grid, para sa bawat cell ay hinuhulaan ang bounding box (x, y, width, height) at mga probabilidad ng klase. Inaalis ng Non-Maximum Suppression (NMS) ang mga duplicate na frame para sa isang bagay, iniiwan ang pinakatiyak na hula. Ang mga modernong arkitektura ay nahahati sa two-stage (Faster R-CNN — una region proposals, pagkatapos klasipikasyon) at one-stage (YOLO, SSD — lahat nang sabay-sabay).
Mga metrik ng pagsusuri: mAP (mean Average Precision) — pangunahing metrik ng kalidad ng Object Detection. mAP@0.5 — katumpakan sa IoU threshold 0.5, mAP@0.5:0.95 — average sa mga threshold mula 0.5 hanggang 0.95. FPS — bilang ng mga frame bawat segundo (bilis ng inference). Para sa mga mobile application, ang balanse ng mAP/FPS ay kritikal: ang YOLOv8-Nano ay nagbibigay ng 42% mAP@0.5:0.95 sa 50+ FPS, SSD MobileNet — 22% mAP sa 60+ FPS. Para sa real-time > 20 FPS, para sa interactive na paggamit 5–15 FPS.
IoU (Intersection over Union) — metrik ng overlap sa pagitan ng hinulaang at ground truth bounding box. IoU = lugar ng intersection / lugar ng union. Ang IoU threshold para sa NMS ay karaniwang 0.5–0.7. Para sa pag-track ng mga bagay sa pagitan ng mga frame (re-identification) gamitin ang Deep SORT o ByteTrack na may IoU-matching. Para sa pagbilang ng mga bagay sa video — ang BoT-SORT ay nagbibigay ng 85% MOTA (Multiple Object Tracking Accuracy).
| Arkitektura | mAP@0.5:0.95 | Latency | Parameter | Sukat |
|---|---|---|---|---|
| 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 — paunang natukoy na mga hugis ng bounding box na itinatama ng modelo. Gumagamit ang YOLOv8 ng walang-angkong detection (anchor-free), na pinapasimple ang pag-aaral at pinapabilis ang inference. Ang SSD at lumang YOLO ay nangangailangan ng pagpili ng anchor para sa dataset. Para sa mobile development, ang mga anchor-free na arkitektura (YOLOv8, FCOS) ay mas gusto — hindi sila umaasa sa laki ng bagay at mas simple sa pag-customize.
ML Kit Object Detection and Tracking — library ng Google para sa pag-detect at pag-track ng mga bagay sa device. Sinusuportahan ang dalawang modipikasyon: single-image detector (para sa mga larawan) at streaming detector (para sa video). Ang streaming mode ay awtomatikong sumusubaybay sa mga bagay sa pagitan ng mga frame gamit ang optical flow, binabawasan ang latency sa pagitan ng mga frame sa 5–10 ms pagkatapos ng unang detection. Mga kategorya: fashion, food, home, places — tig-10–20 klase bawat isa.
API ng ML Kit: ObjectDetector (mga opsyon: detectorMode, enableClassification, enableMultipleObjects) → InputImage → DetectedObject (trackingId, boundingBox, classificationCategory, classificationConfidence). Pinapayagan ng TrackingId ang pagsubaybay sa parehong bagay sa pagitan ng mga frame. MultipleObjects = true — nakakakita ng hanggang 5 bagay bawat frame. Classification — pinapagana ang pagkilala ng kategorya ng bagay (default false para sa bilis). Ang streaming mode ay inirerekomenda para sa real-time: 20–30 FPS sa Pixel 6.
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: pagkatapos ng detection ng bagay sa unang frame, sinusubaybayan ito ng ML Kit sa pamamagitan ng video stream nang walang paulit-ulit na detection (batay sa optical flow + feature tracking). Binabawasan nito ang load ng CPU/GPU: unang detection 30–60 ms, kasunod na tracking frame 2–5 ms. Kung ang bagay ay lumabas sa frame o umikot ng > 30°, ang tracker ay nire-reset at kinakailangan ang paulit-ulit na detection. Ang TrackingId ay nananatili habang ang bagay ay nasa frame. Para sa pagbilang ng mga natatanging bagay, gamitin ang trackingId bilang identifier.
YOLOv8-Nano — pinakamaliit na bersyon ng YOLOv8 (Ultralytics) para sa mga edge device. 2.6M parameter, 5.9 MB (FP16), 42% mAP@0.5:0.95 sa COCO. Gumagamit ang YOLOv8 ng anchor-free detection + C2f backbone + TaskAlignedAssigner para sa pagtutugma ng mga hula. Para sa mobile development, available ang export sa TFLite (INT8 — 2.0 MB, latency 8–20 ms) at Core ML (4.5 MB, latency 5–15 ms sa iPhone 15 Pro). Ang YOLOv8-Nano — pinakamahusay na pagpipilian para sa on-device real-time Object Detection.
Pag-export ng YOLOv8 sa TFLite: Nagbibigay ang Ultralytics ng CLI: yolo export model=yolov8n.pt format=tflite int8. Ang resulta — TFLite INT8 model na na-optimize para sa GPU Delegate sa pamamagitan ng NNAPI. Para sa custom na dataset (sariling klase, hindi COCO) — pagsasanay sa pamamagitan ng Ultralytics HUB sa 50–500 larawan bawat klase. RT-DETR (Real-Time Detection Transformer) — alternatibo sa arkitekturang Transformer, 48% mAP sa 60 FPS sa NVIDIA Jetson, ngunit para sa mga mobile device ay mas mabagal pa rin kaysa YOLOv8-Nano.
# Pag-export ng YOLOv8 sa TFLite
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
model.export(format="tflite", int8=True, imgsz=320)
# Inference gamit ang TFLite sa Android
val interpreter = Interpreter(loadFile("yolov8n_int8.tflite"))
val output = Array(1) { Array(8400) { FloatArray(6) } }
interpreter.run(inputBuffer, output)
YOLO vs ML Kit sa mga mobile device: Ang ML Kit Object Detection ay mas simple sa integration (10 linya ng code), hindi nangangailangan ng ML expertise, ngunit limitado sa mga standard na klase (fashion, food, home, places). Ang YOLOv8-Nano ay nangangailangan ng custom na export, ngunit nagbibigay ng buong kontrol: anumang klase, laki ng input, arkitektura. Para sa mabilis na prototyping — ML Kit. Para sa produksyon na may hindi standard na bagay — YOLOv8-Nano. Para sa iOS: YOLOv8-Core ML sa pamamagitan ng model export mula sa Ultralytics + VNCoreMLRequest.
SSD (Single Shot Multibox Detector) — klasikong one-stage na arkitektura para sa mga mobile device. SSD MobileNetV2 — de facto na standard noong 2020–2023: 22% mAP@0.5:0.95 sa COCO, 15–40 ms sa Pixel 6. Gumagamit ang SSD ng feature pyramid (iba't ibang layer ng MobileNet para sa detection ng mga bagay na may iba't ibang laki) at default boxes (anchor boxes) para sa bawat cell ng feature map. Positibo: maximum na bilis para sa panahon nito. Negatibo: mababang katumpakan sa maliliit na bagay (10–30 px).
EfficientDet-Lite — pamilya mula sa Google (2020+), na-optimize para sa TFLite. EfficientDet-Lite0: 3.9M parameter, 35% mAP, 20–50 ms. EfficientDet-Lite2: 8.1M, 42% mAP, 40–80 ms. Gumagamit ang EfficientDet ng BiFPN (Bidirectional Feature Pyramid Network) para sa multi-scale feature fusion — nagbibigay ito ng 2–4% na pagtaas ng mAP nang walang pagtaas ng latency. Para sa mobile development, inirerekomenda ng Google ang EfficientDet-Lite bilang pangunahing detector para sa TFLite Task Vision.
MediaPipe Object Detector — handa nang implementasyon batay sa EfficientDet-Lite sa loob ng MediaPipe Tasks Vision. Nagbibigay ng pinag-isang API para sa Android, iOS, Python, Web. Sinusuportahan ng MediaPipe Object Detector ang mga COCO class (80 klase), custom na modelo, streaming mode, at CPU/GPU delegate. Para sa mabilis na integration ng Object Detection sa cross-platform na proyekto, ang MediaPipe — pinakamainam na pagpipilian: isang code para sa lahat ng platform.
// 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()
}
Pagpili ng arkitektura para sa mobile application: para sa > 30 FPS sa mid-range na device — YOLOv8-Nano (INT8) o SSD MobileNetV2. Para sa katumpakan > 40% mAP — YOLOv8-Small (11.2M) o EfficientDet-Lite2 (8.1M). Para sa cross-platform — MediaPipe Object Detector. Para sa pagiging simple — ML Kit. Para sa iOS-first — Core ML + YOLOv8 .mlpackage. Para sa Android-first — TFLite Task Vision (ObjectDetector API). Pagsasanay: Roboflow (dataset) + Ultralytics YOLOv8 (training) + export sa TFLite/Core ML.
TFLite Task Vision ObjectDetector — pinag-isang API mula sa Google para sa pagpapatakbo ng Object Detection models sa Android at iOS. Awtomatikong hinahawakan ng Task API ang pre-processing ng larawan (pag-scale, normalisasyon, conversion ng color space) at post-processing (NMS, thresholding). Kailangan ng developer na ipasa ang .tflite model at makatanggap ng listahan ng Detections na may bounding box + category + score. Sinusuportahan ng Task API ang mga modelong compatible sa COCO (80 klase).
Conversion ng custom na modelo sa Task API: Ang TFLite model ay dapat may input [1, height, width, 3] (float32/uint8) at output: detection_boxes[1,N,4], detection_classes[1,N], detection_scores[1,N], num_detections[1]. Export mula sa TensorFlow Object Detection API na may kasamang post-processing ops (SSD Postprocess). Para sa YOLOv8 — TFLite export na may NMS sa pamamagitan ng ops-compat. Ang Task API sa iOS ay gumagamit ng Core ML Delegate para sa acceleration sa ANE.
// 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
)
}
Performance ng Task API: Ang GPU Delegate sa Android ay nagbibigay ng acceleration na 3–5x kumpara sa CPU (XNNPACK). NNAPI Delegate — karagdagang 1.5–2x sa mga device na may NPU (Pixel 8, Snapdragon 8 Gen 3, Dimensity 9300). Hexagon, DSP — hanggang 10x sa mga DSP accelerator. Para sa iOS Core ML Delegate — 4–6x kumpara sa CPU. Awtomatikong pinipili ng Task API ang available na hardware accelerator, ngunit maaaring pilitin ang delegate sa pamamagitan ng DetectorOptions.
Pagbilang ng mga tao at bagay — retail analytics: detection ng mga bisita sa tindahan, pagbilang ng mga pila, pagtukoy ng pagkapuno ng mga istante ng produkto. Ang Object Detection counter sa frame ay nagbibigay-daan sa pagsusuri ng trapiko at conversion. Ang ML Kit Object Detector ay nagbibigay ng hanggang 30 FPS — sapat para sa real-time na pagbilang. Para sa pagtawid ng linya (zone crossing) — kombinasyon ng Object Detection + ByteTrack tracking. Katumpakan ng pagbilang: 92–95% sa magandang ilaw.
Detection ng mga depekto sa produksyon — Tinutukoy ng Object Detection ang mga depekto sa linya ng produksyon: mga gasgas, chips, bitak, maling pagkakabit. Ang custom na YOLOv8-Nano (INT8) model ay tumatakbo sa Android tablet na konektado sa USB camera. Latency: 20–40 ms bawat frame (25–50 FPS). Para sa mga kumplikadong depekto (micro-crack) — dagdagan ang resolution ng input sa 640x640 (latency 40–80 ms). Pagsasanay: Roboflow — dataset ng 200–1000 larawan ng depekto + Ultralytics YOLOv8.
AR labeling ng mga bagay sa real-time — Ang ARCore (Android) at ARKit (iOS) ay gumagamit ng Object Detection para sa pagkilala ng mga patag na ibabaw, patayong eroplano at 3D na bagay. Ang ML Kit Object Detection + ARCore Scene Semantics ay nagbibigay ng segmentation ng mga bagay: dingding, sahig, kisame, kasangkapan. Para sa custom na AR labeling (halimbawa, pagkilala ng partikular na modelo ng sofa at paglalagay ng AR na impormasyon) — YOLOv8-Nano + SceneKit/SceneForm. Kinakailangan ng real-time: > 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))
}
}
Medical imaging — Object Detection para sa pagsusuri ng X-ray, MRI, CT. Detection ng mga tumor, bali, pathology sa mobile device ng doktor. Ang YOLOv8-Nano sa Android tablet ay nakakakita ng mga pulmonary nodule sa loob ng 15–30 ms na may sensitivity na 89% at specificity na 93% (datos ng NIH ChestX-ray14). Mga kinakailangan: INT8 quantization (privacy ng datos), high recall (ang pagpalampas ng pathology ay mas mapanganib kaysa false alarm), paggamit ng confidence threshold < 0.4. Ang pagproseso sa device ay ginagarantiyahan ang privacy ng medikal na datos.
Mga madalas itanong
Object Detection ay nagbabalik ng bounding box para sa bawat bagay — isang parihabang frame na pumapalibot sa bagay. Image Segmentation (semantic o instance) ay nagbabalik ng eksaktong contour ng bagay — isang pixel mask. Ang segmentation ay mas tumpak, ngunit mas mabagal (50–300 ms vs 10–30 ms para sa detection). Para sa mga gawain kung saan mahalaga ang hugis ng bagay (medikal, AR), gamitin ang segmentation. Para sa mga gawain kung saan mahalaga ang posisyon at presensya (pagbilang, moderasyon), gamitin ang detection. MobileViT — arkitektura na lumulutas sa parehong gawain.
Ang YOLOv8-Nano ay sinanay sa COCO (80 klase). ML Kit Object Detection — 40+ klase (fashion, food, home, places). Ang custom na modelo ay kayang mag-detect ng hanggang 100 klase sa isang mobile device nang walang pagkawala ng performance. Higit sa 100 klase — tumataas ang latency at bumababa ang mAP. Para sa mga application na may 1000+ klase gumamit ng hierarchical classification: una magaspang na kategorya (10 klase), pagkatapos eksaktong (100 subklase). EfficientNet + YOLO — hierarchical approach para sa 1000+ klase na may latency < 50 ms.
Oo, ang ML Kit Object Detection ay may kasamang built-in na tracking: pagkatapos ng detection sa unang frame, ang bagay ay sinusubaybayan sa pamamagitan ng video stream nang walang paulit-ulit na detection. Para sa mas kumplikadong tracking (pagsasalubong ng mga bagay, paglabas sa frame) gamitin ang ByteTrack o BoT-SORT. Ang ByteTrack ay gumagana batay sa IoU (intersection over union) sa pagitan ng bounding box ng mga katabing frame — 85% MOTA sa MOT17. Ang BoT-SORT ay gumagamit din ng re-identification (ReID) para sa pagbawi ng mga nawawalang bagay — 90% MOTA.
I-export ang YOLOv8 sa Core ML: yolo export model=yolov8n.pt format=coreml int8. Ang resultang .mlpackage ay isinasama sa pamamagitan ng VNCoreMLRequest (Vision Framework). Alternatibo: YOLOv8 → TFLite → Core ML Delegate (iOS TFLite API). Ang Ultralytics YOLOv8 Core ML export ay sumusuporta sa iOS 16+, ANE acceleration, FP16 at INT8 quantization. Para sa streaming gamitin ang AVFoundation + Vision na may paulit-ulit na VNImageRequestHandler requests. Real-time: 20–30 FPS sa iPhone 14 Pro.
Dagdagan ang diversity ng dataset (mga anggulo, ilaw, background) — 500+ larawan bawat klase. Gumamit ng data augmentation: mosaic, mixup, random perspective (Ultralytics YOLOv8 augmentation — 2–5% na pagtaas ng mAP). Dagdagan ang laki ng input sa 640x640 (sa halip na 320x320) — +4–8% mAP, ngunit latency ×2. Gumamit ng FP16 o INT8 quantization pagkatapos ng pagsasanay (post-training) — +0–1% pagkawala ng mAP, 4x compression. Para sa iOS gamitin ang ANE (Neural Engine) sa pamamagitan ng Core ML Delegate — acceleration 3–5x kumpara sa CPU.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din