Image Labeling: ano ito, mga pamamaraan at prinsipyo ng paggana

May-akda: IT Sectr Nai-publish: 2026-07-19 Oras ng pagbabasa: 9 min

Image Labeling — ay isang gawain ng computer vision kung saan ang neural network ay nagtatalaga ng mga label sa isang larawan mula sa isang paunang natukoy na set ng mga klase: mula sa simple (pusa, aso, kotse) hanggang sa tiyak (uri ng halaman, modelo ng smartphone, medikal na imahe). Sa mobile development, ang Image Labeling ay ginagamit para sa awtomatikong pag-tag ng mga larawan sa gallery, moderasyon ng nilalaman ng user, visual na paghahanap ng mga produkto sa pamamagitan ng larawan at mga AR application. Ayon sa Google ML Kit, 2025, ang built-in classifier ay kumikilala ng 400+ kategorya sa loob ng 10–20 ms bawat frame na may katumpakan na 91% (top-1).

Mga Pangunahing Punto

  • Image Labeling — pagtatalaga ng mga label sa larawan mula sa paunang natukoy na set ng mga klase
  • ML Kit — 400+ built-in na label, 10–20 ms, 91% top-1 accuracy
  • Core ML — native na klasipikasyon sa iOS sa pamamagitan ng Vision + custom models
  • Mga custom na modelo — pagsasanay sa pamamagitan ng TensorFlow, PyTorch, conversion sa TFLite
  • On-device — lahat ng pagkalkula lokal, nang hindi nagpapadala ng data sa server

Ano ang Image Labeling: mga batayan ng klasipikasyon

Image Labeling — isang subkategorya ng klasipikasyon ng larawan, kung saan ang model ay tumatanggap ng larawan at nagbabalik ng mga probabilidad para sa bawat klase mula sa training set. Hindi tulad ng object detection, ang Image Labeling ay hindi tinutukoy ang posisyon ng bagay sa larawan — tanging ang presensya o kawalan nito. Hindi tulad ng image segmentation, hindi nito pinaghihiwalay ang contour ng bagay. Sinasagot ng Image Labeling ang tanong na “anong larawan ang nasa photo?”, hindi “saan at ano ang nasa photo?”.

Arkitektura ng classifier: CNN backbone (MobileNet, ResNet, EfficientNet) ay kumukuha ng feature map mula sa larawan, Global Average Pooling ay pinagsasama ang spatial na dimensyon, ang fully connected layer (Dense) na may Softmax activation ay naglalabas ng mga probabilidad ng klase. MobileNetV2 — ang pinakasikat na backbone para sa mga mobile device: 3.5M parameter, 0.5–2 ms inference sa Pixel 6 sa pamamagitan ng GPU. EfficientNet-Lite — alternatibo na may mas mahusay na ratio ng accuracy/parameter.

Top-1 vs Top-5 accuracy: top-1 — ang model ay tama na nahulaan ang pangunahing klase (91% para sa ML Kit); top-5 — ang tamang klase ay nasa limang pinaka-malamang (98% para sa ML Kit). Para sa mga production application, gamitin ang top-5 at ipakita sa user ang ilang variant ng label. Para sa moderasyon ng nilalaman — top-1 na may threshold na confidence >= 0.8 (binabawasan ang false positive rate ng 40%).

ArkitekturaParameterLatencyTop-1Sukat
MobileNetV23.5M0.5–2 ms90.2%14 MB
MobileNetV32.5M0.3–1.5 ms91.5%10 MB
EfficientNet-Lite04.7M1–3 ms92.3%18 MB
ResNet-5025.6M10–30 ms95.2%98 MB

On-device vs Cloud: ang klasipikasyon sa device (ML Kit, Core ML) ay nagbibigay ng latency na 1–20 ms na may kumpletong privacy ng data. Cloud API (Google Cloud Vision, AWS Rekognition) — latency 500–2000 ms + gastos bawat request, ngunit mas tumpak (97–99%) dahil sa mas malalaking modelo (ViT, CLIP). Para sa real-time na application (camera, AR) pumili ng on-device. Para sa mga kumplikadong sitwasyon (medikal, ekspertisa) — cloud na may fallback sa on-device.

ML Kit Image Labeling sa Android at iOS

ML Kit Image Labeling — handa nang library mula sa Google para sa klasipikasyon ng mga larawan sa device. Available sa dalawang mode: on-device (libre, 400+ label, 10–20 ms) at cloud (may bayad, 10000+ label, 500+ ms). Ang on-device na bersyon ay gumagamit ng MobileNetV3 + INT8 quantization, tumatagal ng 4 MB sa disk. Awtomatikong tinutukoy ng ML Kit ang oryentasyon ng larawan at ini-optimize ang laki bago ang klasipikasyon.

ML Kit API: InputImage (mula sa Bitmap, media.Image, filePath) → ImageLabeler → OnSuccessListener na may listahan ng ImageLabel (label, confidence, index). MillisThreshold (default 0.5) — pinakamababang kumpiyansa para ibalik ang label. Ang pagtaas ng threshold sa 0.7 ay binabawasan ang bilang ng mga label bawat frame, ngunit pinapataas ang katumpakan ng bawat isa. Para sa moderasyon ng nilalaman, itakda ang threshold sa 0.8.

kotlin
val labeler = ImageLabeling.getClient(
    ImageLabelerOptions.DEFAULT_OPTIONS
)

labeler.process(inputImage)
    .addOnSuccessListener { labels ->
        labels
            .filter { it.confidence >= 0.7f }
            .forEach { label ->
                log("Label: ${label.label}")
                log("Confidence: ${label.confidence}")
            }
    }
    .addOnFailureListener { error -> handleError(error) }

ML Kit sa iOS: Ang API ay katulad ng Android, gumagamit ng UIImage o CMSampleBuffer. Awtomatikong ginagamit ng ML Kit ang Core ML + ANE sa mga A12+ device. Para sa iOS 16+, ang ML Kit Image Labeling ay nagbibigay ng latency na 8–15 ms sa iPhone 15 Pro. Upang mabawasan ang latency, ipadala ang larawan sa pinakamababang posibleng resolution (224x224 para sa MobileNet) — ang ML Kit ay mag-scale mismo, ngunit ang conversion ng malalaking larawan ay nagdaragdag ng 2–5 ms overhead.

Core ML at Vision Framework sa iOS

Core ML — framework ng Apple para sa pagpapatakbo ng mga ML model sa device. Kasama ng Vision Framework (VNCoreMLRequest), pinapayagan ng Core ML ang klasipikasyon ng mga larawan na may minimal na code. Nagbibigay ang Apple ng mga built-in na modelo: SqueezeNet (5 MB, 80.5% top-1), ResNet50 (98 MB, 95.2%), MobileNetV2 (14 MB, 90.2%). Ang mga modelo sa .mlmodel o .mlpackage format ay nako-convert sa pamamagitan ng coremltools mula sa TensorFlow, PyTorch.

VNCoreMLRequest — Vision API na humahawak sa pre-processing ng larawan (scaling, crop-to-fill, conversion ng color space) at ipinapasa ang resulta sa modelo. Nagbabalik ang Vision ng VNClassificationObservation na may identifier (pangalan ng klase) at confidence (0..1). MaxCandidates — maximum na bilang ng ibinalik na mga label (default 1). Para sa klasipikasyon na may awtomatikong pagpili, gamitin ang VNCoreMLRequest na may imageCropAndScaleOption = .centerCrop.

swift
guard let model = try? VNCoreMLModel(for: MobileNetV2().model) else { return }
let request = VNCoreMLRequest(model: model) { request, _ in
    guard let results = request.results as? [VNClassificationObservation] else { return }
    results.prefix(5).forEach { obs in
        print("TFLite custom model inference")
    }
}
request.imageCropAndScaleOption = .centerCrop

let handler = VNImageRequestHandler(cgImage: cgImage, options: [:])
try handler.perform([request])

Core ML vs ML Kit sa iOS: Core ML — native, hindi nangangailangan ng karagdagang SDK, mas na-optimize para sa ANE (neural engine ng Apple). ML Kit — mas tumpak sa mga kumplikadong eksena dahil sa mga modelo ng Google. Sinusuportahan ng Core ML ang anumang modelo (nako-convert sa pamamagitan ng coremltools), ML Kit — sarili lamang nitong mga modelo. Para sa mabilis na implementasyon — ML Kit. Para sa maximum na kontrol sa modelo — Core ML. Praktikal na pagpili: parehong framework sa isang application — ML Kit para sa mga karaniwang label, Core ML para sa mga custom na label.

Pagsasanay at integrasyon ng mga custom na modelo

Mga custom na Image Labeling model — pagsasanay ng sariling classifier para sa tiyak na gawain: pagkilala sa kalidad ng prutas, pag-detect ng mga depekto sa linya ng produksyon, klasipikasyon ng mga lahi ng aso. Kasama sa proseso ang pagkolekta ng dataset (1000+ larawan bawat klase), anotasyon, pagsasanay sa pamamagitan ng transfer learning sa pre-trained na MobileNetV2 o EfficientNet, at conversion sa TFLite / Core ML.

Transfer Learning — pangunahing paraan ng pagsasanay ng mga mobile classifier. Ang isang modelo na pre-trained sa ImageNet ay kinuha, ang mga mas mababang layer (CNN backbone) ay na-freeze, ang mga mas mataas na layer (Fine-tuning) ay muling sinanay. Ito ay nangangailangan lamang ng 100–500 larawan bawat klase at tumatagal ng 1–2 oras sa Google Colab (GPU). Mga library: TensorFlow Keras (Android), PyTorch + coremltools (iOS). Resulta: 95–98% accuracy sa mga target na klase.

kotlin
// Image Labeling gamit ang Core ML para sa visual na paghahanap
val interpreter = Interpreter(loadModelFile(context))
val inputImage = TensorImage.fromBitmap(bitmap)
    .apply { load(Bitmap.createScaledBitmap(bitmap, 224, 224, true)) }

val output = Array(1) { FloatArray(NUM_CLASSES) }
interpreter.run(inputImage.tensorBuffer, output)

val probabilities = TensorLabel.mapIndexToLabels(output[0])
val topClass = probabilities.maxByOrNull { it.value }

ML Kit Custom Model API — alternatibo: hindi kailangang sumulat ng code para sa TFLite Interpreter — ang ML Kit mismo ang nag-load ng modelo at humahawak ng pre-processing. Ang Custom Image Labeler ay tumatanggap ng TFLite model na may input size na 224x224x3 at output score float[NUM_CLASSES]. Sapat na upang ipasa ang file ng modelo at makatanggap ng mga karaniwang label. Ang ML Kit Custom Model API ay inirerekomenda kung ang modelo ay tumutugma sa TFLite format. Kung kinakailangan ang mas pinong kontrol sa inference (mga threshold, threshold per class) — gamitin ang TFLite Interpreter nang direkta.

TFLite at Core ML: paghahambing ng mga format

TFLite (TensorFlow Lite) — format ng modelo ng Google para sa mobile at edge device. Sinusuportahan ang quantization (FP16, INT8), na nagpapababa ng laki ng modelo ng 4 beses at nagpapataas ng bilis ng 2–3x sa kapalit ng maliit na pagkawala ng katumpakan (1–2%). Ang TFLite ay gumagana sa Android sa pamamagitan ng GPU Delegate (OpenGL/OpenCL), sa iOS — sa pamamagitan ng Core ML Delegate. Ang TFLite Task API ay nagbibigay ng pinag-isang interface para sa Image Classifier, Object Detector at iba pang mga gawain.

Core ML — format ng Apple (.mlpackage — bago, .mlmodel — luma). Sinusuportahan ang quantization (FP16), paletisasyon ng timbang (weight palettization hanggang 1/2/4/6/8 bit), na nagbibigay ng compression ng modelo hanggang 80%. Gumagamit ang Core ML ng ANE (Neural Engine), GPU at CPU — awtomatikong pinipili ng system ang pinakamainam na engine. Conversion mula sa PyTorch sa pamamagitan ng torch.onnx.export + coremltools, mula sa TensorFlow — sa pamamagitan ng tf-keras + coremltools. Ang iOS 18+ ay sumusuporta sa pagsasanay sa device sa pamamagitan ng Core ML Training API.

KatangianTFLiteCore ML
Sukat (MobileNetV2)14 MB (FP32) / 3.5 MB (INT8)14 MB (FP16) / 2.8 MB (4-bit)
Engine ng inferenceGPU / NNAPI / XNNPACKANE / GPU / CPU (auto)
QuantizationFP16, INT8, DynamicRangeFP16, Palettization (1-8 bit)
Pagganap sa iOSCore ML Delegate (2–5 ms)Native ANE (1–3 ms)
Mga toolTFLite Model Maker, Task APIcoremltools, Create ML

ONNX bilang intermediate format: i-convert ang mga modelo sa ONNX (PyTorch → ONNX, TensorFlow → ONNX) at pagkatapos ay sa TFLite / Core ML sa pamamagitan ng onnx2tf o onnx2coreml. ONNX — pinag-isang format na sinusuportahan ng 70+ frameworks. Ito ay nagpapasimple ng pipeline: isang trained model → ONNX → native na mga format para sa parehong platform. Pagsasanay sa PyTorch + conversion sa ONNX → TFLite (Android) / Core ML (iOS) — inirerekomendang pipeline para sa cross-platform project.

Paglalapat ng Image Labeling sa mga application

Awtomatikong pag-tag ng mga larawan — mga gallery app (Google Photos, Apple Photos) ay awtomatikong nagtatalaga ng mga label sa mga larawan: “beach”, “paglubog ng araw”, “aso”, “pagkain”. Pinoproseso ng ML Kit Image Labeling ang bawat larawan mula sa gallery sa background — 1–2 segundo para sa 100 larawan (batch). Ang user ay nakakakuha ng paghahanap ayon sa mga label nang walang manu-manong pag-uuri. Ang Google Photos ay gumagamit ng klasipikasyon sa device na may kasunod na server verification para sa mga kumplikadong eksena.

Moderasyon ng nilalaman — awtomatikong pag-detect ng mga hindi kanais-nais na larawan sa nilalaman ng user (social media, marketplace, UGC platforms). Ang ML Kit Custom Model ay nakakakita ng NSFW content, karahasan, propaganda na may katumpakan na 92–96%. Activation threshold — confidence 0.8. Upang mabawasan ang false positive (lehitimong medikal na larawan) gumamit ng komite ng mga classifier: Image Labeling + Object Detection + Blur Detection. Ang moderasyon sa device ay mas mabilis at pinoprotektahan ang privacy ng user.

Visual na paghahanap ng mga produkto — kumukuha ng larawan ang user ng isang produkto (sapatos, bag, muwebles), tinutukoy ng app ang label at nakakahanap ng mga katulad na produkto sa catalog. Pinapaliit ng Image Labeling ang paghahanap sa isang kategorya, pagkatapos ang mga feature descriptor (feature vectors) ay nakakahanap ng mga visual na katulad na instance. Pinterest Lens, Google Lens, Amazon StyleSnap ay gumagamit ng pamamaraang ito. Ang klasipikasyon sa device ay nagbibigay ng resulta sa loob ng 10–30 ms, cloud — paghahanap sa database ng produkto sa loob ng 200–500 ms.

swift
// Image Labeling with Core ML for visual search
let request = VNCoreMLRequest(model: productClassifier) { req, _ in
    guard let result = req.results?.first as? VNClassificationObservation,
          result.confidence > 0.6 else { return }
    SearchService.findSimilarProducts(
        category: result.identifier,
        image: capturedPhoto,
        limit: 10
    ) { products in
        DispatchQueue.main.async {
            self.showResults(products)
        }
    }
}

AR at mga application pang-edukasyon — kina-classify ng Image Labeling ang mga bagay sa real-time sa pamamagitan ng camera. Itinuturo ng user ang phone sa isang halaman — ipinapakita ng app ang pangalan, pangangalaga, pagdidilig. Itinuturo sa bahagi ng mekanismo — ipinapaliwanag ang layunin. Kinakailangan: latency < 30 ms. Ang EfficientNet-Lite sa flagship device ay nagbibigay ng 15–25 ms. Sa mahinang ilaw, bumababa ang katumpakan — gumamit ng awtomatikong confidence threshold (ibaba ang threshold sa low-light upang mabayaran ang pagbaba ng kalidad ng input).

Mga Madalas Itanong

Paano naiiba ang Image Labeling sa Object Detection?

Image Labeling ay tinutukoy kung anong mga bagay ang nasa larawan, ngunit hindi ipinapahiwatig ang kanilang lokasyon. Object Detection — hinahanap ang mga bagay at ibinabalik ang bounding box ng bawat isa. Ang Image Labeling ay mas mabilis (1–20 ms vs 20–100 ms), nangangailangan ng mas kaunting data para sa pagsasanay, ngunit hindi nagbibigay ng impormasyon sa posisyon. Para sa simpleng klasipikasyon (pusa/aso) — Image Labeling. Para sa tumpak na pagkilala (ilang bagay, nasaan sila) — Object Detection.

Kailangan ba ng internet para sa Image Labeling sa device?

Hindi, ang ML Kit Image Labeling ay gumagana nang buo sa device. Na-load ang modelo sa unang pagtakbo (downloaded mode — 4 MB) at naka-imbak nang lokal. Ang mga Core ML model ay na-load kasama ng application. Ang TFLite Custom Model — bahagi ng APK. Lahat ng pagkalkula ay isinasagawa sa device, ang data ay hindi ipinapadala sa server. Ginagarantiyahan nito ang privacy ng user at operasyon nang walang internet. Ang cloud classification (Google Cloud Vision) — alternatibo na may internet at mas mataas na katumpakan.

Ilang larawan ang kailangan para sanayin ang isang custom na modelo?

Para sa transfer learning sa MobileNetV2: minimum na 50–100 larawan bawat klase, optimal na 300–500. Kung mas malaki ang pagkakaiba-iba (mga anggulo, ilaw, background), mas mataas ang katumpakan. Para sa pagsasanay mula sa simula (walang pre-trained na modelo) kinakailangan ang minimum na 1000 larawan bawat klase. Rekomendasyon: magsimula sa 200 larawan bawat klase, suriin ang accuracy, magdagdag ng data para sa mga klase na may mababang katumpakan. Ang Data augmentation (pag-ikot, scale, paglipat) ay nagpapataas ng epektibong dataset ng 3–5x nang hindi nangongolekta ng bagong data.

Paano bawasan ang laki ng TFLite model para sa Image Labeling?

Mga pangunahing pamamaraan: INT8 quantization pagkatapos ng pagsasanay (post-training quantization) — binabawasan ang laki ng 4x na may pagkawala ng 1–2% accuracy; pruning (pagtatapon ng hindi gaanong mahalagang timbang) — hanggang 50% compression; distillation (mas maliit na student model na sinanay sa mga output ng malaking teacher model) — hanggang 80% compression. Ang MobileNetV2 INT8 ay tumatagal ng 3.5 MB, SqueezeNet — 5 MB. Target na laki — hindi hihigit sa 10 MB para sa agarang pag-load nang walang progress indicator.

Ano ang katumpakan ng ML Kit Image Labeling v2?

Ang ML Kit Image Labeling v2 ay nagpapakita ng top-1 accuracy na 91% sa Google test set (400+ klase). Top-5 accuracy — 98%. Sa hindi karaniwang mga anggulo at kondisyon ng ilaw, ang katumpakan ay maaaring bumaba sa 75–85%. Para sa produksyon, inirerekomenda ang paggamit ng confidence threshold na 0.7 para sa matatag na pagsala ng mababang kalidad na mga hula. Kung ang katumpakan ay hindi sapat — gumamit ng custom na modelo na sinanay sa isang tiyak na dataset: accuracy 95–98% sa mga target na klase.

Buod

  • Image Labeling — klasipikasyon ng mga larawan na may pagtatalaga ng mga label mula sa isang nakapirming set
  • ML Kit Image Labeling — 400+ label, latency 10–20 ms, 91% accuracy sa device
  • Core ML + Vision — native na iOS approach na may ANE acceleration at custom na mga modelo
  • Transfer Learning — 100–500 larawan bawat klase, 1–2 oras na pagsasanay sa Google Colab
  • TFLite / Core ML — dalawang pangunahing format na may quantization para sa pagbawas ng laki
  • On-device — privacy, zero latency, walang internet
  • Application — pag-tag ng larawan, moderasyon ng nilalaman, AR, visual na paghahanap ng produkto

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.

Pag-usapan ang proyekto

Basahin din