Image Labeling: ما هو، أساليب ومبدأ العمل

المؤلف: IT Sectr نُشر: 2026-07-19 وقت القراءة: 9 دق

Image Labeling هي مهمة رؤية حاسوبية حيث تقوم شبكة عصبية بتعيين تسميات للصورة من مجموعة محددة مسبقاً من الفئات: من البسيطة (قطة، كلب، سيارة) إلى المحددة (نوع نبات، نموذج هاتف ذكي، فحص طبي). في تطوير التطبيقات المحمولة، يُستخدم Image Labeling للوسم التلقائي للصور في المعارض، والإشراف على المحتوى الذي ينشئه المستخدمون، والبحث البصري عن المنتجات بالصورة، وتطبيقات الواقع المعزز. وفقاً Google ML Kit, 2025، يتعرف المصنف المدمج على أكثر من 400 فئة في 10–20 مللي ثانية لكل إطار بدقة 91% (top-1).

النقاط الرئيسية

  • Image Labeling — تعيين تسميات للصورة من مجموعة محددة مسبقاً من الفئات
  • ML Kit — أكثر من 400 تسمية مدمجة، 10–20 مللي ثانية، 91% دقة top-1
  • Core ML — تصنيف أصلي على iOS عبر Vision + نماذج مخصصة
  • نماذج مخصصة — تدريب عبر TensorFlow، PyTorch، تحويل إلى TFLite
  • على الجهاز — جميع الحسابات محلياً، دون إرسال بيانات إلى الخادم

ما هو Image Labeling: أساسيات التصنيف

Image Labeling هو نوع فرعي من تصنيف الصور حيث يأخذ النموذج صورة كمدخل ويعيد الاحتمالات لكل فئة من مجموعة التدريب. على عكس اكتشاف الأشياء، لا يحدد Image Labeling موضع الأشياء في الصورة — فقط وجودها أو غيابها. على عكس تجزئة الصورة، لا يحدد محيط الجسم. Image Labeling يجيب على السؤال «ما في الصورة؟»، وليس «أين وما في الصورة؟».

هندسة المصنف: يستخرج العمود الفقري CNN (MobileNet، ResNet، EfficientNet) خريطة معالم من الصورة، ويقوم Global Average Pooling بطي الأبعاد المكانية، وتنتج طبقة متصلة بالكامل (Dense) مع تنشيط Softmax احتمالات الفئات. MobileNetV2 هو العمود الفقري الأكثر شيوعاً للأجهزة المحمولة: 3.5M معلمة، استدلال 0.5–2 مللي ثانية على Pixel 6 عبر GPU. EfficientNet-Lite هو بديل بنسبة دقة/معلمات أفضل.

دقة Top-1 مقابل Top-5: top-1 — يتنبأ النموذج بشكل صحيح بالفئة الرئيسية (91% في ML Kit)؛ top-5 — الفئة الصحيحة ضمن الخمس فئات الأكثر احتمالاً (98% في ML Kit). للتطبيقات الإنتاجية، استخدم top-5 وأظهر للمستخدم عدة خيارات من التسميات. للإشراف على المحتوى، استخدم top-1 مع عتبة ثقة >= 0.8 (يقلل معدل الإيجابيات الكاذبة بنسبة 40%).

الهندسةالمعلماتزمن الاستجابةTop-1الحجم
MobileNetV23.5M0.5–2 مللي ثانية90.2%14 MB
MobileNetV32.5M0.3–1.5 مللي ثانية91.5%10 MB
EfficientNet-Lite04.7M1–3 مللي ثانية92.3%18 MB
ResNet-5025.6M10–30 مللي ثانية95.2%98 MB

على الجهاز مقابل السحابة: التصنيف على الجهاز (ML Kit، Core ML) يعطي زمن استجابة 1–20 مللي ثانية مع خصوصية كاملة للبيانات. API السحابي (Google Cloud Vision، AWS Rekognition) — زمن استجابة 500–2000 مللي ثانية بالإضافة إلى تكلفة لكل طلب، لكنه أكثر دقة (97–99%) بفضل النماذج الأكبر (ViT، CLIP). للتطبيقات في الوقت الفعلي (الكاميرا، الواقع المعزز)، اختر التصنيف على الجهاز. للسيناريوهات المعقدة (الطب، تحليل الخبراء)، استخدم السحابة مع احتياطي على الجهاز.

ML Kit Image Labeling على Android و iOS

ML Kit Image Labeling هي مكتبة جاهزة من Google لتصنيف الصور على الجهاز. متوفرة في وضعين: على الجهاز (مجاني، أكثر من 400 تسمية، 10–20 مللي ثانية) وسحابي (مدفوع، أكثر من 10000 تسمية، أكثر من 500 مللي ثانية). يستخدم الإصدار المحلي MobileNetV3 مع تكميم INT8، ويشغل 4 MB على القرص. يكتشف ML Kit تلقائياً اتجاه الصورة ويحسن الحجم قبل التصنيف.

API ML Kit: InputImage (من Bitmap، media.Image، filePath) → ImageLabeler → OnSuccessListener مع قائمة ImageLabel (تسمية، ثقة، فهرس). عتبة الثقة (الافتراضي 0.5) هي الحد الأدنى من الثقة لإرجاع تسمية. رفع العتبة إلى 0.7 يقلل عدد التسميات لكل إطار ولكنه يزيد دقة كل تسمية. للإشراف على المحتوى، اضبط العتبة على 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 على iOS: API مشابه لنظام Android، يستخدم UIImage أو CMSampleBuffer. يستخدم ML Kit تلقائياً Core ML + ANE على أجهزة A12+. لنظام iOS 16+، يعطي ML Kit Image Labeling زمن استجابة 8–15 مللي ثانية على iPhone 15 Pro. لتقليل زمن الاستجابة، مرر أصغر دقة صورة ممكنة (224x224 لـ MobileNet) — ML Kit يغير حجمها تلقائياً، لكن تحويل الصور الكبيرة يضيف 2–5 مللي ثانية حمل إضافي.

Core ML و Vision Framework على iOS

Core ML هو إطار Apple لتشغيل نماذج التعلم الآلي على الجهاز. بالاقتران مع 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 هو API Vision الذي يتولى المعالجة المسبقة للصورة (القياس، القص للتعبئة، تحويل مساحة اللون) ويمرر النتيجة إلى النموذج. يعيد Vision VNClassificationObservation مع identifier (اسم الفئة) و confidence (0..1). MaxCandidates هو الحد الأقصى لعدد التسميات المعادة (الافتراضي 1). للتصنيف مع التحديد التلقائي، استخدم VNCoreMLRequest مع 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("التسمية: \(obs.identifier)، الثقة: \(obs.confidence)")
    }
}
request.imageCropAndScaleOption = .centerCrop

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

Core ML مقابل 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% دقة على الفئات المستهدفة.

kotlin
// استدلال نموذج TFLite المخصص
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 يقوم بتحميل النموذج ومعالجة المعالجة المسبقة تلقائياً. يقبل Image Labeler المخصص نموذج TFLite بحجم إدخال 224x224x3 ومخرج score float[NUM_CLASSES]. يكفي تمرير ملف النموذج والحصول على تسميات قياسية. يُوصى بـ ML Kit Custom Model API إذا كان النموذج يتوافق مع تنسيق TFLite. إذا كان هناك حاجة للتحكم الدقيق في الاستدلال (عتبات لكل فئة)، استخدم TFLite Interpreter مباشرة.

TFLite و Core ML: مقارنة التنسيقات

TFLite (TensorFlow Lite) — تنسيق نماذج Google للأجهزة المحمولة والحافة. يدعم التكميم (FP16، INT8)، الذي يقلص حجم النموذج 4 مرات ويزيد السرعة 2–3 مرات مع فقدان طفيف في الدقة (1–2%). يعمل TFLite على Android عبر GPU Delegate (OpenGL/OpenCL)، وعلى iOS عبر Core ML Delegate. يوفر TFLite Task API واجهة موحدة لمصنف الصور، وكاشف الأشياء، ومهام أخرى.

Core ML — تنسيق Apple (.mlpackage — جديد، .mlmodel — قديم). يدعم التكميم (FP16) وتلوين الأوزان (weight palettization حتى 1/2/4/6/8 بت)، مما يحقق ضغط النموذج حتى 80%. يستخدم Core ML ANE (المحرك العصبي)، GPU و CPU — يختار النظام تلقائياً المحرك الأمثل. التحويل من PyTorch عبر torch.onnx.export + coremltools، من TensorFlow عبر tf-keras + coremltools. iOS 18+ يدعم التدريب على الجهاز عبر Core ML Training API.

الخاصيةTFLiteCore ML
الحجم (MobileNetV2)14 MB (FP32) / 3.5 MB (INT8)14 MB (FP16) / 2.8 MB (4-bit)
محرك الاستدلالGPU / NNAPI / XNNPACKANE / GPU / CPU (تلقائي)
التكميمFP16, INT8, DynamicRangeFP16, تلوين (1-8 bit)
أداء iOSCore ML Delegate (2–5 مللي ثانية)ANE أصلي (1–3 مللي ثانية)
الأدواتTFLite Model Maker, Task APIcoremltools, Create ML

ONNX كتنسيق وسيط: حوّل النماذج إلى ONNX (PyTorch → ONNX، TensorFlow → ONNX) ثم إلى TFLite / Core ML عبر onnx2tf أو onnx2coreml. ONNX هو تنسيق موحد مدعوم من أكثر من 70 إطار عمل. هذا يبسط المسار: نموذج مدرب واحد → ONNX → تنسيقات أصلية لكلا المنصتين. التدريب في PyTorch + التحويل إلى ONNX → TFLite (Android) / Core ML (iOS) هو المسار الموصى به للمشاريع عبر المنصات.

تطبيقات Image Labeling في التطبيقات المحمولة

الوسم التلقائي للصور — تطبيقات المعرض (Google Photos، Apple Photos) تعين تلقائياً تسميات للصور: «شاطئ»، «غروب»، «كلب»، «طعام». يعالج ML Kit Image Labeling كل صورة من المعرض في الخلفية — 1–2 ثانية لكل 100 صورة (دفعة). يحصل المستخدم على بحث بالتسميات دون فرز يدوي. يستخدم Google Photos التصنيف على الجهاز مع التحقق الخادمي لاحقاً للمشاهد المعقدة.

الإشراف على المحتوى — الكشف التلقائي عن الصغير غير المرغوب فيها في محتوى المستخدمين (وسائل التواصل الاجتماعي، الأسواق، منصات UGC). يكتشف ML Kit Custom Model المحتوى غير اللائق والعنف والدعاية بدقة 92–96%. عتبة التنشيط — ثقة 0.8. لتقليل الإيجابيات الكاذبة (الصور الطبية المشروعة)، استخدم لجنة من المصنفات: Image Labeling + Object Detection + Blur Detection. الإشراف على الجهاز أسرع ويحمي خصوصية المستخدم.

البحث البصري عن المنتجات — يصور المستخدم منتجاً (حذاء رياضي، حقيبة، أثاث)، يحدد التطبيق التسمية ويجد منتجات مماثلة في الكتالوج. يضيق Image Labeling البحث إلى فئة، ثم تجد واصفات المعالم (متجهات المعالم) عناصر متشابهة بصرياً. تستخدم Pinterest Lens و Google Lens و Amazon StyleSnap هذا النهج. يعطي التصنيف على الجهاز نتيجة خلال 10–30 مللي ثانية، والبحث السحابي — 200–500 مللي ثانية.

swift
// Image Labeling مع Core ML للبحث البصري
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)
        }
    }
}

تطبيقات الواقع المعزز والتعليمية — يصنف Image Labeling الأشياء في الوقت الفعلي عبر الكاميرا. يوجه المستخدم هاتفه نحو نبات — يعرض التطبيق الاسم والعناية والري. يوجه نحو قطعة آلية — يشرح وظيفتها. المتطلب: زمن استجابة أقل من 30 مللي ثانية. يعطي EfficientNet-Lite على الأجهزة الرائدة 15–25 مللي ثانية. في الإضاءة المنخفضة، تنخفض الدقة — استخدم عتبة ثقة تكيفية (اخفض العتبة في الإضاءة المنخفضة للتعويض عن تدهور جودة الإدخال).

الأسئلة الشائعة

كيف يختلف Image Labeling عن Object Detection؟

Image Labeling يحدد الأشياء الموجودة في الصورة ولكنه لا يشير إلى موقعها. Object Detection يجد الأشياء ويعيد مربعات إحاطة لكل منها. Image Labeling أسرع (1–20 مللي ثانية مقابل 20–100 مللي ثانية)، ويتطلب بيانات تدريب أقل، لكنه لا يوفر معلومات موضعية. للتصنيف البسيط (قطة/كلب)، استخدم Image Labeling. للتعرف الموجه (كم عدد الأشياء، أين توجد)، استخدم Object Detection.

هل هناك حاجة لاتصال بالإنترنت لـ Image Labeling على الجهاز؟

لا، يعمل ML Kit Image Labeling بالكامل على الجهاز. يتم تنزيل النموذج عند التشغيل الأول (وضع التنزيل — 4 MB) ويخزن محلياً. يتم تحميل نماذج Core ML مع التطبيق. نموذج TFLite المخصص هو جزء من APK. جميع الحسابات تُنفذ على الجهاز، ولا تُرسل البيانات إلى الخادم. هذا يضمن خصوصية المستخدم والعمل بدون إنترنت. التصنيف السحابي (Google Cloud Vision) هو بديل يتطلب إنترنت وبدقة أعلى.

كم عدد الصور المطلوبة لتدريب نموذج مخصص؟

للتعلم بالنقل على MobileNetV2: minimum 50–100 صورة لكل فئة، الأمثل 300–500. كلما زاد التنوع (زوايا، إضاءة، خلفية)، زادت الدقة. للتدريب من الصفر (بدون نموذج مدرب مسبقاً)، يلزم minimum 1000 صورة لكل فئة. التوصية: ابدأ بـ 200 صورة لكل فئة، قيم الدقة، أضف بيانات للفئات منخفضة الدقة. يزيد زيادة البيانات (تدوير، قياس، إزاحة) مجموعة البيانات الفعلية 3–5 مرات دون جمع بيانات جديدة.

كيف تقليل حجم نموذج TFLite لـ Image Labeling؟

الطرق الرئيسية: تكميم INT8 بعد التدريب — يقلل الحجم 4 مرات مع فقدان 1–2% دقة؛ التشذيب (إزالة الأوزان غير المهمة) — يصل إلى 50% ضغط؛ التقطير (نموذج طالب أصغر مدرب على مخرجات نموذج معلم أكبر) — يصل إلى 80% ضغط. MobileNetV2 INT8 يشغل 3.5 MB، SqueezeNet — 5 MB. الحجم المستهدف — لا يزيد عن 10 MB للتحميل الفوري دون مؤشر تقدم.

ما دقة ML Kit Image Labeling v2؟

يظهر ML Kit Image Labeling v2 دقة top-1 بنسبة 91% على مجموعة اختبار Google (أكثر من 400 فئة). دقة top-5 — 98%. في الزوايا غير القياسية وظروف الإضاءة، قد تنخفض الدقة إلى 75–85%. للإنتاج، يُوصى باستخدام عتبة ثقة 0.7 لتصفية مستقرة للتنبؤات منخفضة الجودة. إذا كانت الدقة غير كافية، استخدم نموذجاً مخصصاً مدرباً على مجموعة بيانات محددة: دقة 95–98% على الفئات المستهدفة.

الملخص

  • Image Labeling — تصنيف الصور مع تعيين تسميات من مجموعة ثابتة
  • ML Kit Image Labeling — أكثر من 400 تسمية، 10–20 مللي ثانية زمن استجابة، 91% دقة على الجهاز
  • Core ML + Vision — نهج iOS أصلي مع تسريع ANE ونماذج مخصصة
  • التعلم بالنقل — 100–500 صورة لكل فئة، 1–2 ساعة تدريب في Google Colab
  • TFLite / Core ML — تنسيقان رئيسيان مع تكميم لتقليل الحجم
  • على الجهاز — خصوصية، زمن استجابة صفري، بدون إنترنت
  • التطبيقات — وسم الصور، الإشراف على المحتوى، الواقع المعزز، البحث البصري عن المنتجات

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا