Image Labeling — είναι μια εργασία υπολογιστικής όρασης κατά την οποία το νευρωνικό δίκτυο αποδίδει ετικέτες στην εικόνα από ένα προκαθορισμένο σύνολο κλάσεων: από απλές (γάτα, σκύλος, αυτοκίνητο) έως ειδικές (είδος φυτού, μοντέλο smartphone, ιατρική εικόνα). Στην ανάπτυξη εφαρμογών για κινητά, το Image Labeling χρησιμοποιείται για αυτόματη επισήμανση φωτογραφιών στη συλλογή, μετριασμό περιεχομένου χρηστών, οπτική αναζήτηση προϊόντων με φωτογραφία και εφαρμογές AR. Σύμφωνα με το Google ML Kit, 2025, ο ενσωματωμένος ταξινομητής αναγνωρίζει 400+ κατηγορίες σε 10–20 ms ανά καρέ με ακρίβεια 91% (top-1).
Κύρια σημεία
Image Labeling — είναι μια υποκατηγορία ταξινόμησης εικόνων, όπου το μοντέλο λαμβάνει μια εικόνα και επιστρέφει πιθανότητες για κάθε κλάση από το σύνολο εκπαίδευσης. Σε αντίθεση με το object detection, το Image Labeling δεν προσδιορίζει τη θέση του αντικειμένου στην εικόνα — μόνο την παρουσία ή απουσία του. Σε αντίθεση με το image segmentation, δεν διαχωρίζει το περίγραμμα του αντικειμένου. Το Image Labeling απαντά στην ερώτηση “τι υπάρχει στη φωτογραφία;”, όχι “πού και τι υπάρχει στη φωτογραφία;”.
Αρχιτεκτονική ταξινομητή: CNN backbone (MobileNet, ResNet, EfficientNet) εξάγει χάρτη χαρακτηριστικών από την εικόνα, Global Average Pooling συμπιέζει τις χωρικές διαστάσεις, το πλήρως συνδεδεμένο επίπεδο (Dense) με ενεργοποίηση Softmax εξάγει τις πιθανότητες κλάσεων. MobileNetV2 — το πιο δημοφιλές backbone για κινητές συσκευές: 3,5M παράμετροι, 0,5–2 ms συμπερασμού σε Pixel 6 μέσω GPU. EfficientNet-Lite — εναλλακτική με καλύτερη αναλογία accuracy/παραμέτρων.
Top-1 vs Top-5 accuracy: top-1 — το μοντέλο μάντεψε σωστά την κύρια κλάση (91% για ML Kit); top-5 — η σωστή κλάση βρίσκεται στις πέντε πιο πιθανές (98% για ML Kit). Για εφαρμογές παραγωγής χρησιμοποιήστε top-5 και εμφανίστε πολλές παραλλαγές ετικετών στον χρήστη. Για μετριασμό περιεχομένου — top-1 με κατώφλι confidence >= 0,8 (μειώνει το ποσοστό false positive κατά 40%).
| Αρχιτεκτονική | Παράμετροι | Καθυστέρηση | Top-1 | Μέγεθος |
|---|---|---|---|---|
| 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: η ταξινόμηση στη συσκευή (ML Kit, Core ML) παρέχει καθυστέρηση 1–20 ms με πλήρη απόρρητο δεδομένων. Cloud API (Google Cloud Vision, AWS Rekognition) — καθυστέρηση 500–2000 ms + κόστος ανά αίτημα, αλλά πιο ακριβής (97–99%) χάρη σε μεγαλύτερα μοντέλα (ViT, CLIP). Για εφαρμογές πραγματικού χρόνου (κάμερα, AR) επιλέξτε on-device. Για σύνθετα σενάρια (ιατρικά, εμπειρογνωμοσύνη) — cloud με fallback σε on-device.
ML Kit Image Labeling — έτοιμη βιβλιοθήκη από την Google για ταξινόμηση εικόνων στη συσκευή. Διαθέσιμη σε δύο λειτουργίες: on-device (δωρεάν, 400+ ετικέτες, 10–20 ms) και cloud (επί πληρωμή, 10000+ ετικέτες, 500+ ms). Η on-device έκδοση χρησιμοποιεί MobileNetV3 + κβάντιση INT8, καταλαμβάνει 4 MB στον δίσκο. Το ML Kit καθορίζει αυτόματα τον προσανατολισμό της εικόνας και βελτιστοποιεί το μέγεθος πριν από την ταξινόμηση.
ML Kit API: InputImage (από Bitmap, media.Image, filePath) → ImageLabeler → OnSuccessListener με λίστα ImageLabel (label, confidence, index). MillisThreshold (προεπιλογή 0,5) — ελάχιστη βεβαιότητα για επιστροφή ετικέτας. Η αύξηση του κατωφλίου στο 0,7 μειώνει τον αριθμό ετικετών ανά καρέ, αλλά αυξάνει την ακρίβεια κάθε μίας. Για μετριασμό περιεχομένου, ορίστε το κατώφλι στο 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 σε iOS: Το API είναι παρόμοιο με το Android, χρησιμοποιεί UIImage ή CMSampleBuffer. Το ML Kit χρησιμοποιεί αυτόματα Core ML + ANE σε συσκευές A12+. Για iOS 16+, το ML Kit Image Labeling παρέχει καθυστέρηση 8–15 ms σε iPhone 15 Pro. Για ελάχιστη καθυστέρηση, στείλτε την εικόνα στη χαμηλότερη δυνατή ανάλυση (224x224 για MobileNet) — το ML Kit κλιμακώνει μόνο του, αλλά η μετατροπή μεγάλων εικόνων προσθέτει 2–5 ms επιβάρυνσης.
Core ML — το πλαίσιο της Apple για εκτέλεση μοντέλων ML στη συσκευή. Μαζί με το Vision Framework (VNCoreMLRequest), το Core ML επιτρέπει την ταξινόμηση εικόνων με ελάχιστο κώδικα. Η Apple παρέχει ενσωματωμένα μοντέλα: SqueezeNet (5 MB, 80,5% top-1), ResNet50 (98 MB, 95,2%), MobileNetV2 (14 MB, 90,2%). Τα μοντέλα σε μορφή .mlmodel ή .mlpackage μετατρέπονται μέσω coremltools από TensorFlow, PyTorch.
VNCoreMLRequest — Vision API που αναλαμβάνει την προεπεξεργασία της εικόνας (κλιμάκωση, crop-to-fill, μετατροπή χρωματικού χώρου) και μεταφέρει το αποτέλεσμα στο μοντέλο. Το Vision επιστρέφει VNClassificationObservation με identifier (όνομα κλάσης) και confidence (0..1). MaxCandidates — μέγιστος αριθμός επιστρεφόμενων ετικετών (προεπιλογή 1). Για ταξινόμηση με αυτόματη επιλογή, χρησιμοποιήστε VNCoreMLRequest με 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("TFLite προσαρμοσμένο μοντέλο συμπερασμού")
}
}
request.imageCropAndScaleOption = .centerCrop
let handler = VNImageRequestHandler(cgImage: cgImage, options: [:])
try handler.perform([request])
Core ML vs ML Kit σε iOS: Core ML — εγγενές, δεν απαιτεί πρόσθετα SDK, βελτιστοποιημένο για ANE (νευρωνική μηχανή Apple). ML Kit — πιο ακριβές σε σύνθετες σκηνές χάρη στα μοντέλα Google. Το Core ML υποστηρίζει οποιοδήποτε μοντέλο (μετατρεπόμενο μέσω coremltools), το ML Kit — μόνο τα δικά του. Για γρήγορη υλοποίηση — ML Kit. Για μέγιστο έλεγχο του μοντέλου — Core ML. Πρακτική επιλογή: και τα δύο πλαίσια σε μία εφαρμογή — ML Kit για τυπικές ετικέτες, Core ML για προσαρμοσμένες.
Προσαρμοσμένα μοντέλα Image Labeling — εκπαίδευση του δικού σας ταξινομητή για συγκεκριμένη εργασία: αναγνώριση ποιότητας φρούτων, ανίχνευση ελαττωμάτων στη γραμμή παραγωγής, ταξινόμηση φυλών σκύλων. Η διαδικασία περιλαμβάνει συλλογή συνόλου δεδομένων (1000+ εικόνες ανά κλάση), σχολιασμό, εκπαίδευση μέσω transfer learning σε προεκπαιδευμένο MobileNetV2 ή EfficientNet και μετατροπή σε TFLite / Core ML.
Transfer Learning — η κύρια μέθοδος εκπαίδευσης κινητών ταξινομητών. Λαμβάνεται ένα μοντέλο προεκπαιδευμένο στο ImageNet, τα κάτω στρώματα (CNN backbone) παγώνουν, τα πάνω στρώματα (Fine-tuning) επανεκπαιδεύονται. Αυτό απαιτεί μόνο 100–500 εικόνες ανά κλάση και διαρκεί 1–2 ώρες στο Google Colab (GPU). Βιβλιοθήκες: TensorFlow Keras (Android), PyTorch + coremltools (iOS). Αποτέλεσμα: 95–98% accuracy στις κλάσεις-στόχους.
// Image Labeling με Core ML για οπτική αναζήτηση
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 — εναλλακτική: δεν χρειάζεται να γράψετε κώδικα για TFLite Interpreter — το ML Kit φορτώνει το μοντέλο και διαχειρίζεται την προεπεξεργασία. Το Custom Image Labeler δέχεται ένα μοντέλο TFLite με μέγεθος εισόδου 224x224x3 και έξοδο score float[NUM_CLASSES]. Αρκεί να μεταφέρετε το αρχείο μοντέλου και να λάβετε τυπικές ετικέτες. Το ML Kit Custom Model API συνιστάται εάν το μοντέλο αντιστοιχεί στη μορφή TFLite. Εάν απαιτείται λεπτότερος έλεγχος στον συμπερασμό (κατώφλια, threshold ανά κλάση) — χρησιμοποιήστε απευθείας το TFLite Interpreter.
TFLite (TensorFlow Lite) — η μορφή μοντέλων της Google για κινητές και edge συσκευές. Υποστηρίζει κβάντιση (FP16, INT8), η οποία μειώνει το μέγεθος του μοντέλου 4 φορές και αυξάνει την ταχύτητα 2–3x με μικρή απώλεια ακρίβειας (1–2%). Το TFLite λειτουργεί σε Android μέσω GPU Delegate (OpenGL/OpenCL), σε iOS — μέσω Core ML Delegate. Το TFLite Task API παρέχει ενοποιημένη διεπαφή για Image Classifier, Object Detector και άλλες εργασίες.
Core ML — η μορφή της Apple (.mlpackage — νέα, .mlmodel — παλιά). Υποστηρίζει κβάντιση (FP16), παλετοποίηση βαρών (weight palettization έως 1/2/4/6/8 bit), παρέχοντας συμπίεση μοντέλου έως 80%. Το Core ML χρησιμοποιεί ANE (Neural Engine), GPU και CPU — το σύστημα επιλέγει αυτόματα τη βέλτιστη μηχανή. Μετατροπή από PyTorch μέσω torch.onnx.export + coremltools, από TensorFlow — μέσω tf-keras + coremltools. iOS 18+ υποστηρίζει εκπαίδευση στη συσκευή μέσω Core ML Training API.
| Χαρακτηριστικό | TFLite | Core ML |
|---|---|---|
| Μέγεθος (MobileNetV2) | 14 MB (FP32) / 3,5 MB (INT8) | 14 MB (FP16) / 2,8 MB (4-bit) |
| Μηχανή συμπερασμού | GPU / NNAPI / XNNPACK | ANE / GPU / CPU (auto) |
| Κβάντιση | FP16, INT8, DynamicRange | FP16, Palettization (1-8 bit) |
| Απόδοση iOS | Core ML Delegate (2–5 ms) | Εγγενές ANE (1–3 ms) |
| Εργαλεία | TFLite Model Maker, Task API | coremltools, Create ML |
ONNX ως ενδιάμεση μορφή: μετατρέψτε τα μοντέλα σε ONNX (PyTorch → ONNX, TensorFlow → ONNX) και στη συνέχεια σε TFLite / Core ML μέσω onnx2tf ή onnx2coreml. Το ONNX είναι μια ενοποιημένη μορφή που υποστηρίζεται από 70+ πλαίσια. Αυτό απλοποιεί το pipeline: ένα εκπαιδευμένο μοντέλο → ONNX → εγγενείς μορφές και για τις δύο πλατφόρμες. Εκπαίδευση σε PyTorch + μετατροπή σε ONNX → TFLite (Android) / Core ML (iOS) — το συνιστώμενο pipeline για έργα πολλαπλών πλατφορμών.
Αυτόματη επισήμανση φωτογραφιών — εφαρμογές συλλογής (Google Photos, Apple Photos) αποδίδουν αυτόματα ετικέτες σε εικόνες: “παραλία”, “ηλιοβασίλεμα”, “σκύλος”, “φαγητό”. Το ML Kit Image Labeling επεξεργάζεται κάθε φωτογραφία από τη συλλογή στο παρασκήνιο — 1–2 δευτερόλεπτα για 100 φωτογραφίες (batch). Ο χρήστης λαμβάνει αναζήτηση ανά ετικέτα χωρίς χειροκίνητη ταξινόμηση. Το Google Photos χρησιμοποιεί ταξινόμηση στη συσκευή με επακόλουθη επαλήθευση διακομιστή για σύνθετες σκηνές.
Μετριασμός περιεχομένου — αυτόματη ανίχνευση ανεπιθύμητων εικόνων σε περιεχόμενο χρηστών (μέσα κοινωνικής δικτύωσης, αγορές, πλατφόρμες UGC). Το ML Kit Custom Model ανιχνεύει περιεχόμενο NSFW, βία, προπαγάνδα με ακρίβεια 92–96%. Κατώφλι ενεργοποίησης — confidence 0,8. Για μείωση false positive (νόμιμες ιατρικές εικόνες) χρησιμοποιήστε επιτροπή ταξινομητών: Image Labeling + Object Detection + Blur Detection. Ο μετριασμός στη συσκευή είναι ταχύτερος και προστατεύει το απόρρητο των χρηστών.
Οπτική αναζήτηση προϊόντων — ο χρήστης φωτογραφίζει ένα προϊόν (παπούτσια, τσάντα, έπιπλο), η εφαρμογή καθορίζει την ετικέτα και βρίσκει παρόμοια προϊόντα στον κατάλογο. Το Image Labeling περιορίζει την αναζήτηση σε μια κατηγορία, στη συνέχεια οι περιγραφείς χαρακτηριστικών (feature vectors) βρίσκουν οπτικά παρόμοιες περιπτώσεις. Τα Pinterest Lens, Google Lens, Amazon StyleSnap χρησιμοποιούν αυτήν την προσέγγιση. Η ταξινόμηση στη συσκευή δίνει αποτέλεσμα σε 10–30 ms, cloud — αναζήτηση στη βάση προϊόντων σε 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 και εκπαιδευτικές εφαρμογές — το Image Labeling ταξινομεί αντικείμενα σε πραγματικό χρόνο μέσω κάμερας. Ο χρήστης κατευθύνει το τηλέφωνο σε ένα φυτό — η εφαρμογή δείχνει το όνομα, τη φροντίδα, το πότισμα. Κατευθύνει σε ένα μέρος μηχανισμού — εξηγεί τον σκοπό. Απαίτηση: καθυστέρηση < 30 ms. Το EfficientNet-Lite σε συσκευές flagship δίνει 15–25 ms. Σε χαμηλό φωτισμό η ακρίβεια μειώνεται — χρησιμοποιήστε αυτόματο κατώφλι confidence (μειώστε το κατώφλι σε χαμηλό φωτισμό για να αντισταθμίσετε την πτώση ποιότητας εισόδου).
Συχνές ερωτήσεις
Image Labeling καθορίζει ποια αντικείμενα υπάρχουν στην εικόνα, αλλά δεν υποδεικνύει τη θέση τους. Object Detection — βρίσκει αντικείμενα και επιστρέφει το bounding box κάθε ενός. Το Image Labeling είναι ταχύτερο (1–20 ms vs 20–100 ms), απαιτεί λιγότερα δεδομένα εκπαίδευσης, αλλά δεν δίνει πληροφορίες θέσης. Για απλή ταξινόμηση (γάτα/σκύλος) — Image Labeling. Για ακριβή αναγνώριση (πόσα αντικείμενα, πού βρίσκονται) — Object Detection.
Όχι, το ML Kit Image Labeling λειτουργεί πλήρως στη συσκευή. Το μοντέλο φορτώνεται κατά την πρώτη εκτέλεση (λειτουργία λήψης — 4 MB) και αποθηκεύεται τοπικά. Τα μοντέλα Core ML φορτώνονται μαζί με την εφαρμογή. Το TFLite Custom Model — μέρος του APK. Όλοι οι υπολογισμοί εκτελούνται στη συσκευή, τα δεδομένα δεν αποστέλλονται στον διακομιστή. Αυτό εγγυάται το απόρρητο του χρήστη και λειτουργία χωρίς διαδίκτυο. Ταξινόμηση cloud (Google Cloud Vision) — εναλλακτική με διαδίκτυο και υψηλότερη ακρίβεια.
Για transfer learning σε MobileNetV2: ελάχιστες 50–100 εικόνες ανά κλάση, βέλτιστα 300–500. Όσο μεγαλύτερη η ποικιλία (γωνίες, φωτισμός, φόντο), τόσο υψηλότερη η ακρίβεια. Για εκπαίδευση από το μηδέν (χωρίς προεκπαιδευμένο μοντέλο) απαιτούνται τουλάχιστον 1000 εικόνες ανά κλάση. Σύσταση: ξεκινήστε με 200 εικόνες ανά κλάση, αξιολογήστε την accuracy, προσθέστε δεδομένα για κλάσεις χαμηλής ακρίβειας. Το Data augmentation (περιστροφές, κλίμακα, μετατόπιση) αυξάνει το αποτελεσματικό σύνολο δεδομένων 3–5x χωρίς συλλογή νέων δεδομένων.
Οι κύριες μέθοδοι: κβάντιση INT8 μετά την εκπαίδευση (post-training quantization) — μειώνει το μέγεθος 4x με απώλεια 1–2% accuracy; pruning (απόρριψη λιγότερο σημαντικών βαρών) — έως 50% συμπίεση; distillation (μικρότερο μοντέλο μαθητή εκπαιδευμένο στις εξόδους μεγάλου μοντέλου δασκάλου) — έως 80% συμπίεση. Το MobileNetV2 INT8 καταλαμβάνει 3,5 MB, SqueezeNet — 5 MB. Στόχος μεγέθους — όχι περισσότερο από 10 MB για άμεση φόρτωση χωρίς ένδειξη προόδου.
Το ML Kit Image Labeling v2 δείχνει top-1 accuracy 91% στο σύνολο δοκιμών Google (400+ κλάσεις). Top-5 accuracy — 98%. Σε μη τυπικές γωνίες και συνθήκες φωτισμού, η ακρίβεια μπορεί να μειωθεί στο 75–85%. Για παραγωγή, συνιστάται η χρήση κατωφλίου confidence 0,7 για σταθερό φιλτράρισμα προβλέψεων χαμηλής ποιότητας. Εάν η ακρίβεια δεν είναι επαρκής — χρησιμοποιήστε προσαρμοσμένο μοντέλο εκπαιδευμένο σε συγκεκριμένο σύνολο δεδομένων: accuracy 95–98% στις κλάσεις-στόχους.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης