Image Labeling — adalah tugas computer vision di mana jaringan saraf menetapkan label pada gambar dari kumpulan kelas yang telah ditentukan: dari sederhana (kucing, anjing, mobil) hingga spesifik (jenis tanaman, model ponsel, gambar medis). Dalam pengembangan mobile, Image Labeling digunakan untuk penandaan otomatis foto di galeri, moderasi konten pengguna, pencarian visual produk berdasarkan foto, dan aplikasi AR. Menurut Google ML Kit, 2025, pengklasifikasi bawaan mengenali 400+ kategori dalam 10–20 ms per frame dengan akurasi 91% (top-1).
Poin Utama
Image Labeling — subkategori klasifikasi gambar, di mana model menerima gambar dan mengembalikan probabilitas untuk setiap kelas dari set pelatihan. Tidak seperti object detection, Image Labeling tidak menentukan posisi objek dalam gambar — hanya keberadaan atau ketiadaannya. Tidak seperti image segmentation, tidak memisahkan kontur objek. Image Labeling menjawab pertanyaan “apa yang ada di foto?”, bukan “di mana dan apa yang ada di foto?”.
Arsitektur pengklasifikasi: CNN backbone (MobileNet, ResNet, EfficientNet) mengekstrak peta fitur dari gambar, Global Average Pooling menggabungkan dimensi spasial, lapisan terhubung penuh (Dense) dengan aktivasi Softmax menghasilkan probabilitas kelas. MobileNetV2 — backbone paling populer untuk perangkat mobile: 3.5M parameter, inferensi 0.5–2 ms di Pixel 6 melalui GPU. EfficientNet-Lite — alternatif dengan rasio accuracy/parameter yang lebih baik.
Top-1 vs Top-5 accuracy: top-1 — model menebak kelas utama dengan benar (91% untuk ML Kit); top-5 — kelas yang benar berada di lima besar paling mungkin (98% untuk ML Kit). Untuk aplikasi produksi gunakan top-5 dan tampilkan beberapa varian label kepada pengguna. Untuk moderasi konten — top-1 dengan ambang confidence >= 0.8 (mengurangi tingkat false positive sebesar 40%).
| Arsitektur | Parameter | Latency | Top-1 | Ukuran |
|---|---|---|---|---|
| MobileNetV2 | 3.5M | 0.5–2 ms | 90.2% | 14 MB |
| MobileNetV3 | 2.5M | 0.3–1.5 ms | 91.5% | 10 MB |
| EfficientNet-Lite0 | 4.7M | 1–3 ms | 92.3% | 18 MB |
| ResNet-50 | 25.6M | 10–30 ms | 95.2% | 98 MB |
On-device vs Cloud: klasifikasi di perangkat (ML Kit, Core ML) memberikan latensi 1–20 ms dengan privasi data penuh. Cloud API (Google Cloud Vision, AWS Rekognition) — latensi 500–2000 ms + biaya per permintaan, tetapi lebih akurat (97–99%) berkat model yang lebih besar (ViT, CLIP). Untuk aplikasi real-time (kamera, AR) pilih on-device. Untuk skenario kompleks (medis, keahlian) — cloud dengan fallback ke on-device.
ML Kit Image Labeling — pustaka siap pakai dari Google untuk klasifikasi gambar di perangkat. Tersedia dalam dua mode: on-device (gratis, 400+ label, 10–20 ms) dan cloud (berbayar, 10000+ label, 500+ ms). Versi on-device menggunakan MobileNetV3 + kuantisasi INT8, memakan 4 MB di disk. ML Kit secara otomatis menentukan orientasi gambar dan mengoptimalkan ukuran sebelum klasifikasi.
ML Kit API: InputImage (dari Bitmap, media.Image, filePath) → ImageLabeler → OnSuccessListener dengan daftar ImageLabel (label, confidence, index). MillisThreshold (default 0.5) — keyakinan minimum untuk mengembalikan label. Menaikkan ambang ke 0.7 mengurangi jumlah label per frame, tetapi meningkatkan akurasi setiap label. Untuk moderasi konten, atur ambang ke 0.8.
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 di iOS: API mirip dengan Android, menggunakan UIImage atau CMSampleBuffer. ML Kit secara otomatis menggunakan Core ML + ANE pada perangkat A12+. Untuk iOS 16+, ML Kit Image Labeling memberikan latensi 8–15 ms di iPhone 15 Pro. Untuk meminimalkan latensi, kirim gambar dengan resolusi serendah mungkin (224x224 untuk MobileNet) — ML Kit akan menskalakan sendiri, tetapi konversi gambar besar menambah overhead 2–5 ms.
Core ML — framework Apple untuk menjalankan model ML di perangkat. Bersama dengan Vision Framework (VNCoreMLRequest), Core ML memungkinkan klasifikasi gambar dengan kode minimal. Apple menyediakan model bawaan: SqueezeNet (5 MB, 80.5% top-1), ResNet50 (98 MB, 95.2%), MobileNetV2 (14 MB, 90.2%). Model dalam format .mlmodel atau .mlpackage dikonversi melalui coremltools dari TensorFlow, PyTorch.
VNCoreMLRequest — Vision API yang menangani pra-pemrosesan gambar (penskalaan, crop-to-fill, konversi ruang warna) dan meneruskan hasilnya ke model. Vision mengembalikan VNClassificationObservation dengan identifier (nama kelas) dan confidence (0..1). MaxCandidates — jumlah maksimum label yang dikembalikan (default 1). Untuk klasifikasi dengan pemilihan otomatis, gunakan VNCoreMLRequest dengan imageCropAndScaleOption = .centerCrop.
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("Inferensi model kustom TFLite")
}
}
request.imageCropAndScaleOption = .centerCrop
let handler = VNImageRequestHandler(cgImage: cgImage, options: [:])
try handler.perform([request])
Core ML vs ML Kit di iOS: Core ML — native, tidak memerlukan SDK tambahan, lebih dioptimalkan untuk ANE (mesin neural Apple). ML Kit — lebih akurat pada pemandangan kompleks berkat model Google. Core ML mendukung model apa pun (dikonversi melalui coremltools), ML Kit — hanya modelnya sendiri. Untuk implementasi cepat — ML Kit. Untuk kontrol maksimal atas model — Core ML. Pilihan praktis: kedua framework dalam satu aplikasi — ML Kit untuk label standar, Core ML untuk label kustom.
Model kustom Image Labeling — melatih pengklasifikasi sendiri untuk tugas spesifik: mengenali kualitas buah, mendeteksi cacat di jalur produksi, mengklasifikasikan ras anjing. Prosesnya meliputi pengumpulan dataset (1000+ gambar per kelas), anotasi, pelatihan melalui transfer learning pada MobileNetV2 atau EfficientNet yang sudah dilatih sebelumnya, dan konversi ke TFLite / Core ML.
Transfer Learning — metode utama pelatihan pengklasifikasi mobile. Model yang sudah dilatih sebelumnya di ImageNet diambil, lapisan bawah (CNN backbone) dibekukan, lapisan atas (Fine-tuning) dilatih ulang. Ini hanya membutuhkan 100–500 gambar per kelas dan memakan waktu 1–2 jam di Google Colab (GPU). Pustaka: TensorFlow Keras (Android), PyTorch + coremltools (iOS). Hasil: 95–98% accuracy pada kelas target.
// Image Labeling dengan Core ML untuk pencarian visual
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 — alternatif: tidak perlu menulis kode untuk TFLite Interpreter — ML Kit sendiri memuat model dan menangani pra-pemrosesan. Custom Image Labeler menerima model TFLite dengan ukuran input 224x224x3 dan output score float[NUM_CLASSES]. Cukup dengan memberikan file model dan menerima label standar. ML Kit Custom Model API direkomendasikan jika model sesuai dengan format TFLite. Jika diperlukan kontrol yang lebih halus atas inferensi (ambang batas, threshold per class) — gunakan TFLite Interpreter secara langsung.
TFLite (TensorFlow Lite) — format model Google untuk perangkat mobile dan edge. Mendukung kuantisasi (FP16, INT8), yang mengurangi ukuran model 4 kali lipat dan meningkatkan kecepatan 2–3x dengan mengorbankan sedikit akurasi (1–2%). TFLite berfungsi di Android melalui GPU Delegate (OpenGL/OpenCL), di iOS — melalui Core ML Delegate. TFLite Task API menyediakan antarmuka terpadu untuk Image Classifier, Object Detector, dan tugas lainnya.
Core ML — format Apple (.mlpackage — baru, .mlmodel — lama). Mendukung kuantisasi (FP16), paletisasi bobot (weight palettization hingga 1/2/4/6/8 bit), yang memberikan kompresi model hingga 80%. Core ML menggunakan ANE (Neural Engine), GPU, dan CPU — sistem secara otomatis memilih mesin yang optimal. Konversi dari PyTorch melalui torch.onnx.export + coremltools, dari TensorFlow — melalui tf-keras + coremltools. iOS 18+ mendukung pelatihan di perangkat melalui Core ML Training API.
| Karakteristik | TFLite | Core ML |
|---|---|---|
| Ukuran (MobileNetV2) | 14 MB (FP32) / 3.5 MB (INT8) | 14 MB (FP16) / 2.8 MB (4-bit) |
| Mesin inferensi | GPU / NNAPI / XNNPACK | ANE / GPU / CPU (auto) |
| Kuantisasi | FP16, INT8, DynamicRange | FP16, Palettization (1-8 bit) |
| Performa iOS | Core ML Delegate (2–5 ms) | ANE native (1–3 ms) |
| Alat | TFLite Model Maker, Task API | coremltools, Create ML |
ONNX sebagai format perantara: konversikan model ke ONNX (PyTorch → ONNX, TensorFlow → ONNX) dan kemudian ke TFLite / Core ML melalui onnx2tf atau onnx2coreml. ONNX — format terpadu yang didukung oleh 70+ framework. Ini menyederhanakan pipeline: satu model terlatih → ONNX → format native untuk kedua platform. Pelatihan di PyTorch + konversi ke ONNX → TFLite (Android) / Core ML (iOS) — pipeline yang direkomendasikan untuk proyek lintas platform.
Penandaan otomatis foto — aplikasi galeri (Google Photos, Apple Photos) secara otomatis menetapkan label ke gambar: “pantai”, “senja”, “anjing”, “makanan”. ML Kit Image Labeling memproses setiap foto dari galeri di latar belakang — 1–2 detik untuk 100 foto (batch). Pengguna mendapatkan pencarian berdasarkan label tanpa penyortiran manual. Google Photos menggunakan klasifikasi di perangkat dengan verifikasi server selanjutnya untuk pemandangan kompleks.
Moderasi konten — deteksi otomatis gambar yang tidak diinginkan dalam konten pengguna (media sosial, marketplace, platform UGC). ML Kit Custom Model mendeteksi konten NSFW, kekerasan, propaganda dengan akurasi 92–96%. Ambang aktivasi — confidence 0.8. Untuk mengurangi false positive (gambar medis yang sah) gunakan komite pengklasifikasi: Image Labeling + Object Detection + Blur Detection. Moderasi di perangkat lebih cepat dan melindungi privasi pengguna.
Pencarian visual produk — pengguna memotret produk (sepatu, tas, furnitur), aplikasi menentukan label dan menemukan produk serupa di katalog. Image Labeling mempersempit pencarian ke kategori, kemudian deskriptor fitur (feature vectors) menemukan instance yang serupa secara visual. Pinterest Lens, Google Lens, Amazon StyleSnap menggunakan pendekatan ini. Klasifikasi di perangkat memberikan hasil dalam 10–30 ms, cloud — pencarian di database produk dalam 200–500 ms.
// 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 dan aplikasi pendidikan — Image Labeling mengklasifikasikan objek secara real-time melalui kamera. Pengguna mengarahkan ponsel ke tanaman — aplikasi menampilkan nama, perawatan, penyiraman. Mengarahkan ke bagian mekanisme — menjelaskan tujuannya. Persyaratan: latensi < 30 ms. EfficientNet-Lite pada perangkat flagship memberikan 15–25 ms. Dalam cahaya redup, akurasi menurun — gunakan ambang confidence otomatis (turunkan ambang saat cahaya redup untuk mengkompensasi penurunan kualitas input).
Pertanyaan yang Sering Diajukan
Image Labeling menentukan objek apa yang ada dalam gambar, tetapi tidak menunjukkan lokasinya. Object Detection — menemukan objek dan mengembalikan bounding box masing-masing. Image Labeling lebih cepat (1–20 ms vs 20–100 ms), membutuhkan lebih sedikit data untuk pelatihan, tetapi tidak memberikan informasi posisi. Untuk klasifikasi sederhana (kucing/anjing) — Image Labeling. Untuk pengenalan yang tepat (berapa banyak objek, di mana lokasinya) — Object Detection.
Tidak, ML Kit Image Labeling berfungsi sepenuhnya di perangkat. Model dimuat saat pertama kali dijalankan (mode diunduh — 4 MB) dan disimpan secara lokal. Model Core ML dimuat bersama dengan aplikasi. TFLite Custom Model — bagian dari APK. Semua komputasi dilakukan di perangkat, data tidak dikirim ke server. Ini menjamin privasi pengguna dan pengoperasian tanpa internet. Klasifikasi cloud (Google Cloud Vision) — alternatif dengan internet dan akurasi yang lebih tinggi.
Untuk transfer learning di MobileNetV2: minimal 50–100 gambar per kelas, optimal 300–500. Semakin besar variasi (sudut, pencahayaan, latar belakang), semakin tinggi akurasinya. Untuk pelatihan dari awal (tanpa model yang sudah dilatih sebelumnya) diperlukan minimal 1000 gambar per kelas. Rekomendasi: mulailah dengan 200 gambar per kelas, evaluasi accuracy, tambahkan data untuk kelas dengan akurasi rendah. Data augmentation (rotasi, skala, pergeseran) meningkatkan dataset efektif 3–5x tanpa mengumpulkan data baru.
Metode utama: kuantisasi INT8 setelah pelatihan (post-training quantization) — mengurangi ukuran 4x dengan kehilangan 1–2% accuracy; pruning (membuang bobot yang kurang signifikan) — hingga 50% kompresi; distillation (model siswa yang lebih kecil dilatih pada keluaran model guru yang besar) — hingga 80% kompresi. MobileNetV2 INT8 memakan 3.5 MB, SqueezeNet — 5 MB. Ukuran target — tidak lebih dari 10 MB untuk pemuatan instan tanpa indikator kemajuan.
ML Kit Image Labeling v2 menunjukkan top-1 accuracy 91% pada set pengujian Google (400+ kelas). Top-5 accuracy — 98%. Pada sudut dan kondisi pencahayaan non-standar, akurasi dapat turun hingga 75–85%. Untuk produksi, disarankan menggunakan ambang confidence 0.7 untuk penyaringan prediksi berkualitas rendah yang stabil. Jika akurasi tidak mencukupi — gunakan model kustom yang dilatih pada dataset spesifik: accuracy 95–98% pada kelas target.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga