0Pricing
Learn AI with Python · درس

‏MobileNet وEfficientNet للنشر على الأجهزة الطرفية

بنى خفيفة، وتحويل TFLite، والمفاضلة بين حجم النموذج ودقته

‏MobileNet وEfficientNet للنشر على الأجهزة الطرفية درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

لماذا تختلف نماذج الأجهزة الطرفية

على الهواتف والأجهزة المضمنة، تستبدل بعضًا من الدقة بحجم صغير جدًا وزمن استجابة منخفض واستهلاك منخفض للطاقة. صُمم كل من MobileNet وEfficientNet لهذا الغرض تحديدًا، إذ يستخدمان وحدات بناء فعالة بدلًا من الالتفافات الكثيفة الثقيلة.

الالتفافات العمقية في MobileNet

يستبدل MobileNet الالتفافات القياسية بـالالتفافات القابلة للفصل عمقيًا: مرشح مكاني لكل قناة، يتبعه مزج نقطي بحجم 1x1. ويؤدي ذلك إلى خفض العمليات الحسابية وعدد المعلمات بنحو 8-9 مرات تقريبًا، مع خسارة طفيفة في الدقة.

MobileNetV3Small

تم ضبط MobileNetV3Small للأجهزة المحمولة؛ إذ يبلغ حجم أوزانه نحو 2.5MB، ما يجعله مثاليًا عندما تكون مساحة التخزين وذاكرة RAM محدودة.

from tensorflow.keras.applications import MobileNetV3Small

base = MobileNetV3Small(
    weights="imagenet",
    include_top=False,
    input_shape=(224, 224, 3)
)

EfficientNetB0

يستخدم EfficientNetB0 التحجيم المركب لتحقيق توازن بين العمق والعرض والدقة. ويحقق دقة قوية مقارنة بحجمه، لذا فهو حل وسط ممتاز بين الشبكات المحمولة الصغيرة جدًا ونماذج الخوادم الثقيلة.

from tensorflow.keras.applications import EfficientNetB0

base = EfficientNetB0(
    weights="imagenet",
    include_top=False,
    input_shape=(224, 224, 3)
)

الاختيار بينهما

  • MobileNetV3Small (~2.5MB): الأصغر والأسرع والأقل دقة. الأفضل للتطبيقات المحمولة الآنية.
  • EfficientNetB0: يحقق توازنًا بين الدقة والحجم. الأفضل عندما يمكنكم تخصيص قدرة حسابية أكبر قليلًا.

اختاروا النموذج بناءً على ميزانية زمن الاستجابة في جهازكم ومستوى الدقة المستهدف.

بناء رأس النقل

يبقى نمط التعلم بالنقل كما هو: تجميد القاعدة، ثم التجميع، ثم إضافة رأس Dense.

from tensorflow.keras import layers, Model

base.trainable = False
x = layers.GlobalAveragePooling2D()(base.output)
x = layers.Dropout(0.2)(x)
out = layers.Dense(num_classes, activation="softmax")(x)
model = Model(base.input, out)

ما هو TFLite؟

TensorFlow Lite هي بيئة تشغيل للاستدلال على الجهاز. تحوّلون نموذج Keras مدربًا إلى ملف flatbuffer مضغوط بامتداد .tflite، يعمل بكفاءة على وحدات المعالجة المركزية ووحدات معالجة الرسومات ووحدات NPU في الأجهزة المحمولة.

تحويل TFLite

استخدموا TFLiteConverter لتحويل النموذج المحفوظ.

import tensorflow as tf

converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()

with open("model.tflite", "wb") as f:
    f.write(tflite_model)

التكميم يقلّص الحجم أكثر

يخزّن التكميم بعد التدريب الأوزان بصيغة int8 بدلًا من float32، فيقلل الحجم بنحو 4 مرات ويُسرّع الاستدلال على العتاد المحمول، مع خسارة طفيفة في الدقة.

converter = tf.lite.TFLiteConverter.from_keras_model(model)
converter.optimizations = [tf.lite.Optimize.DEFAULT]
tflite_quant = converter.convert()

معايير قياس زمن الاستجابة

على العتاد المحمول المعتاد، يعمل MobileNetV3Small غالبًا خلال بضعة مللي ثوانٍ إلى عشرات قليلة من المللي ثانية لكل صورة، ما يجعله مناسبًا تمامًا للاستخدام الآني. أما EfficientNetB0 فهو أثقل وأبطأ، لكنه أكثر دقة.

احرصوا دائمًا على القياس على الجهاز الهدف الفعلي؛ فأزمنة المحاكيات غير موثوقة. استخدموا TFLite Benchmark Tool أو قيسوا زمن invoke() في المفسر.

تشغيل الاستدلال باستخدام TFLite

حمّلوا النموذج باستخدام Interpreter، واضبطوا موتر الإدخال، واستدعوه، ثم اقرأوا الناتج.

interpreter = tf.lite.Interpreter(model_path="model.tflite")
interpreter.allocate_tensors()
inp = interpreter.get_input_details()[0]
out = interpreter.get_output_details()[0]
interpreter.set_tensor(inp["index"], image)
interpreter.invoke()
print(interpreter.get_tensor(out["index"]))

اختبار سريع

اختبروا معرفتكم بالنشر على الأجهزة الطرفية.

مراجعة

قارنتم بين MobileNetV3Small (نحو 2.5MB، والأسرع) وEfficientNetB0 (المتوازن) لاستخدامهما على الأجهزة الطرفية، وبنيتم رؤوس نقل عليهما، وحولتموهما إلى TFLite، وطبقتم التكميم بصيغة int8، وقستم زمن الاستجابة على عتاد فعلي. وبذلك تكتمل دورة التعلم بالنقل. الدورة التالية: تحليل السلاسل الزمنية.

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

هل درس «‏MobileNet وEfficientNet للنشر على الأجهزة الطرفية» مجاني؟

نعم — نص درس «‏MobileNet وEfficientNet للنشر على الأجهزة الطرفية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

ماذا ستتعلم في «‏MobileNet وEfficientNet للنشر على الأجهزة الطرفية»؟

بنى خفيفة، وتحويل TFLite، والمفاضلة بين حجم النموذج ودقته تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟

لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «‏MobileNet وEfficientNet للنشر على الأجهزة الطرفية»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟

نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. مفاهيم واستراتيجيات التعلم بالنقل
  2. استخدام VGG16 وResNet50 كنموذجين أساسيين
  3. الضبط الدقيق: إلغاء تجميد الطبقات وإعادة تدريبها
  4. ‏MobileNet وEfficientNet للنشر على الأجهزة الطرفية
← العودة إلى Learn AI with Python