تخطي إلى المحتوى

تصدير سوني IMX500 IMX500 لـ Ultralytics YOLOv8

يغطي هذا الدليل تصدير ونشر النماذج Ultralytics YOLOv8 إلى كاميرات Raspberry Pi AI Cameras التي تتميز بمستشعر Sony IMX500.

يمكن أن يكون نشر نماذج الرؤية الحاسوبية على الأجهزة ذات القدرة الحاسوبية المحدودة، مثل كاميرا Raspberry Pi AI Camera، أمرًا صعبًا. استخدام تنسيق نموذج مُحسَّن لأداء أسرع يُحدث فرقاً كبيراً.

صُمم تنسيق طراز IMX500 لاستخدام الحد الأدنى من الطاقة مع توفير أداء سريع للشبكات العصبية. يسمح لك بتحسين Ultralytics YOLOv8 الخاصة بك للاستدلال عالي السرعة ومنخفض الطاقة. في هذا الدليل، سنرشدك في هذا الدليل إلى كيفية تصدير نماذجك ونشرها إلى تنسيق IMX500 مع تسهيل أداء نماذجك بشكل جيد على كاميرا Raspberry Pi AI Camera.

كاميرا Raspberry Pi AI

لماذا يجب عليك التصدير إلى IMX500

يُعدّ مستشعر الرؤية الذكي IMX500 من سوني قطعة من الأجهزة التي تغيّر قواعد اللعبة في معالجة الذكاء الاصطناعي المتطورة. إنه أول مستشعر رؤية ذكي في العالم مزود بقدرات ذكاء اصطناعي على الرقاقة. ويساعد هذا المستشعر في التغلب على العديد من التحديات في مجال الذكاء الاصطناعي المتطور، بما في ذلك اختناقات معالجة البيانات والمخاوف المتعلقة بالخصوصية وقيود الأداء.
بينما تكتفي المستشعرات الأخرى بتمرير الصور والإطارات فقط، فإن مستشعر IMX500 يحكي قصة كاملة. فهو يعالج البيانات مباشرة على المستشعر، مما يسمح للأجهزة بتوليد رؤى في الوقت الفعلي.

تصدير سوني IMX500 من سوني لطرازات YOLOv8

تم تصميم IMX500 لتحويل كيفية تعامل الأجهزة مع البيانات مباشرةً على المستشعر، دون الحاجة إلى إرسالها إلى السحابة لمعالجتها.

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

الميزات الرئيسية IMX500 الميزات الرئيسية:

  • إخراج البيانات الوصفية: بدلاً من نقل الصور فقط، يمكن لـ IMX500 إخراج كل من الصورة والبيانات الوصفية (نتيجة الاستدلال)، ويمكنه إخراج البيانات الوصفية فقط لتقليل حجم البيانات وتقليل النطاق الترددي وخفض التكاليف.
  • يعالج مخاوف الخصوصية: من خلال معالجة البيانات على الجهاز، يعالج IMX500 المخاوف المتعلقة بالخصوصية، وهو مثالي للتطبيقات التي تركز على الإنسان مثل عد الأشخاص وتتبع الإشغال.
  • المعالجة في الوقت الحقيقي: تدعم المعالجة السريعة على المستشعر اتخاذ القرارات في الوقت الفعلي، وهي مثالية لتطبيقات الذكاء الاصطناعي المتطورة مثل الأنظمة المستقلة.

قبل أن تبدأ: للحصول على أفضل النتائج، تأكد من أن نموذجك YOLOv8 مُعد جيدًا للتصدير من خلال اتباع دليل تدريب النموذج ودليل إعداد البيانات ودليل ضبط المعلمات الفائقة.

أمثلة على الاستخدام

تصدير نموذج Ultralytics YOLOv8 إلى تنسيق IMX500 وتشغيل الاستدلال باستخدام النموذج المُصدَّر.

ملاحظة

نقوم هنا بإجراء الاستدلال فقط للتأكد من أن النموذج يعمل كما هو متوقع. ومع ذلك، من أجل النشر والاستدلال على كاميرا Raspberry Pi AI Camera، يُرجى الانتقال إلى استخدام تصدير IMX500 في قسم النشر.

مثال على ذلك

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")

# Export the model
model.export(format="imx")  # exports with PTQ quantization by default

# Load the exported model
imx_model = YOLO("yolov8n_imx_model")

# Run inference
results = imx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLOv8n PyTorch model to imx format with Post-Training Quantization (PTQ)
yolo export model=yolov8n.pt format=imx

# Run inference with the exported model
yolo predict model=yolov8n_imx_model source='https://ultralytics.com/images/bus.jpg'

ستعمل عملية التصدير على إنشاء نموذج ONNX للتحقق من صحة التكمية، إلى جانب دليل باسم <model-name>_imx_model. سيتضمن هذا الدليل packerOut.zip وهو أمر ضروري لتعبئة النموذج لنشره على أجهزة IMX500. بالإضافة إلى ذلك، فإن <model-name>_imx_model سيحتوي المجلد على ملف نصي (labels.txt) مع سرد جميع التسميات المرتبطة بالنموذج.

yolov8n_imx_model
├── dnnParams.xml
├── labels.txt
├── packerOut.zip
├── yolov8n_imx.onnx
├── yolov8n_imx500_model_MemoryReport.json
└── yolov8n_imx500_model.pbtxt

الحجج

عند تصدير نموذج إلى تنسيق IMX500، يمكنك تحديد وسيطات مختلفة:

المفتاح القيمة الوصف
format imx التنسيق المراد التصدير إليه (imx)
int8 True تمكين التكميم INT8 للنموذج (افتراضي: True)
imgsz 640 حجم الصورة لمدخلات النموذج (افتراضي: 640)

استخدام IMX500 تصدير IMX500 في النشر

بعد تصدير نموذج Ultralytics YOLOv8n إلى تنسيق IMX500، يمكن نشره على كاميرا Raspberry Pi AI Camera للاستدلال.

المتطلبات الأساسية للأجهزة

تأكد من أن لديك الأجهزة التالية

  1. رازبيري باي 5 أو رازبيري باي 4 موديل B
  2. كاميرا Raspberry Pi AI

قم بتوصيل كاميرا Raspberry Pi AI بكاميرا Raspberry Pi AI بموصل MIPI CSI ذي 15 سنًا على Raspberry Pi وقم بتشغيل Raspberry Pi

المتطلبات الأساسية للبرامج

ملاحظة

تم اختبار هذا الدليل باستخدام نظام التشغيل Raspberry Pi OS Bookworm الذي يعمل على Raspberry Pi 5

الخطوة 1: افتح نافذة طرفية ونفّذ الأوامر التالية لتحديث برنامج Raspberry Pi إلى أحدث إصدار.

sudo apt update && sudo apt full-upgrade

الخطوة 2: قم بتثبيت البرنامج الثابت IMX500 المطلوب لتشغيل مستشعر IMX500 مع أداة التوضيب.

sudo apt install imx500-all imx500-tools

الخطوة 3: تثبيت المتطلبات الأساسية للتشغيل picamera2 التطبيق. سنستخدم هذا التطبيق لاحقاً في عملية النشر.

sudo apt install python3-opencv python3-munkres

الخطوة 4: أعد تشغيل Raspberry Pi حتى تدخل التغييرات حيز التنفيذ

sudo reboot

نموذج الحزمة والنشر إلى كاميرا الذكاء الاصطناعي

بعد الحصول على packerOut.zip من عملية التحويل IMX500، يمكنك تمرير هذا الملف إلى أداة الحزم للحصول على ملف RPK. يمكن بعد ذلك نشر هذا الملف مباشرةً إلى كاميرا AI باستخدام picamera2.

الخطوة 1: حزم النموذج في ملف RPK

imx500-package -i <path to packerOut.zip> -o <output folder>

سيؤدي ما سبق إلى توليد network.rpk ملف داخل مجلد الإخراج المحدد.

الخطوة 2: الاستنساخ picamera2 وقم بتثبيته وانتقل إلى أمثلة imx500

git clone -b next https://github.com/raspberrypi/picamera2
cd picamera2
pip install -e .  --break-system-packages
cd examples/imx500

الخطوة 3: قم بتشغيل اكتشاف الكائنات YOLOv8 ، باستخدام ملف labelels.txt الذي تم إنشاؤه أثناء تصدير IMX500.

python imx500_object_detection_demo.py --model <path to network.rpk> --fps 25 --bbox-normalization --ignore-dash-labels --bbox-order xy --labels <path to labels.txt>

بعد ذلك ستتمكن من رؤية مخرجات الاستدلال المباشر على النحو التالي

الاستدلال على كاميرا Raspberry Pi AI Camera

المعايير

YOLOv8 تم تشغيل المعايير أدناه من قِبل فريق Ultralytics على كاميرا Raspberry Pi AI Camera مع imx تنسيق نموذج قياس السرعة والدقة.

الطراز التنسيق الحالة الحجم (ميغابايت) mAP50-95(ب) زمن الاستدلال (م/م)
YOLOv8n إيمكس 2.9 0.522 66.66

ملاحظة

تم التحقق من صحة المعيار المذكور أعلاه باستخدام مجموعة بيانات coco8

ماذا يوجد تحت الغطاء؟

نشر IMX500

مجموعة أدوات ضغط النماذج من سوني (MCT)

تُعد مجموعة أدوات ضغط النماذج (MCT) من سوني أداة قوية لتحسين نماذج التعلم العميق من خلال التكميم والتشذيب. وهي تدعم طرق تكميم مختلفة وتوفر خوارزميات متقدمة لتقليل حجم النموذج والتعقيد الحسابي دون التضحية بالدقة بشكل كبير. تُعد MCT مفيدة بشكل خاص لنشر النماذج على الأجهزة ذات الموارد المحدودة، مما يضمن كفاءة الاستدلال وتقليل زمن الاستجابة.

الميزات المدعومة من MCT

تقدم MCT من سوني مجموعة من الميزات المصممة لتحسين نماذج الشبكات العصبية:

  1. تحسينات الرسم البياني: تحويل النماذج إلى إصدارات أكثر كفاءة عن طريق طي طبقات مثل تطبيع الدُفعات إلى طبقات سابقة.
  2. البحث عن معلمة التكميم: يقلل من ضوضاء التكميم باستخدام مقاييس مثل متوسط مربع الخطأ، وعدم التقليل، ومتوسط الخطأ.
  3. خوارزميات التحويل الكمي المتقدمة:
    • تصحيح سالب التحول: يعالج مشكلات الأداء الناتجة عن التكميم التنشيط المتماثل.
    • تصفية القيم المتطرفة: يستخدم درجة z لاكتشاف القيم المتطرفة وإزالتها.
    • التجميع: يستخدم شبكات تكميم غير موحدة لمطابقة التوزيع بشكل أفضل.
    • بحث متعدد الدقة: يعيّن عرض بتات كمّي مختلف لكل طبقة بناءً على الحساسية.
  4. التصور: استخدم TensorBoard لمراقبة رؤى أداء النموذج ومراحل التكميم وتكوينات عرض البت.

التحويل الكمي

يدعم MCT العديد من طرق التكميم لتقليل حجم النموذج وتحسين سرعة الاستدلال:

  1. تحديد الكمية بعد التدريب (PTQ):
    • متاح عبر واجهات برمجة التطبيقات Keras و PyTorch .
    • التعقيد: منخفضة
    • التكلفة الحسابية: منخفضة (CPU دقيقة)
  2. تحديد الكمية بعد التدريب القائم على التدرج (GPTQ):
    • متاح عبر واجهات برمجة التطبيقات Keras و PyTorch .
    • التعقيد: متوسط
    • التكلفة الحسابية: معتدلة (2-3 GPU ساعة )
  3. التدريب الواعي بالكمية (QAT):
    • التعقيد: مرتفع
    • التكلفة الحسابية: مرتفعة (12-36 GPU ساعة)

يدعم MCT أيضًا مخططات تكميم مختلفة للأوزان والتفعيلات:

  1. قوة الاثنين (ملائمة للأجهزة)
  2. متماثل
  3. الزي الرسمي

التقليم المهيكل

تقدم MCT تقليمًا منظمًا ومدركًا للأجهزة مصممًا لبنى أجهزة محددة. تستفيد هذه التقنية من إمكانيات المنصة المستهدفة ذات التعليمات الأحادية والبيانات المتعددة (SIMD) من خلال تقليم مجموعات SIMD. يقلل هذا من حجم النموذج وتعقيده مع تحسين استخدام القناة، بما يتماشى مع بنية SIMD للاستخدام المستهدف للموارد من بصمة الذاكرة ذات الأوزان. متاح عبر واجهات برمجة التطبيقات Keras و PyTorch .

أداة التحويل IMX500 (المترجم)

تُعد أداة محول IMX500 جزءًا لا يتجزأ من مجموعة أدوات IMX500، مما يسمح بتجميع النماذج للنشر على مستشعر IMX500 من سوني (على سبيل المثال، كاميرات Raspberry Pi AI). تسهّل هذه الأداة نقل النماذج Ultralytics YOLOv8 التي تمت معالجتها من خلال برنامج Ultralytics ، مما يضمن توافقها وأداءها بكفاءة على الأجهزة المحددة. يتضمن إجراء التصدير بعد تكميم النموذج توليد ملفات ثنائية تغلف البيانات الأساسية والتكوينات الخاصة بالجهاز، مما يسهل عملية النشر على كاميرا Raspberry Pi AI Camera.

حالات الاستخدام في العالم الحقيقي

التصدير إلى تنسيق IMX500 قابل للتطبيق على نطاق واسع في مختلف الصناعات. فيما يلي بعض الأمثلة:

  • حافة الذكاء الاصطناعي وإنترنت الأشياء: تمكين اكتشاف الأجسام على الطائرات بدون طيار أو الكاميرات الأمنية، حيث تكون المعالجة في الوقت الفعلي على الأجهزة منخفضة الطاقة ضرورية.
  • الأجهزة القابلة للارتداء: نشر النماذج المحسّنة لمعالجة الذكاء الاصطناعي على نطاق صغير على الأجهزة القابلة للارتداء التي تراقب الصحة.
  • المدن الذكية: استخدم نماذج YOLOv8 المصدرة من IMX500 لمراقبة حركة المرور وتحليل السلامة مع معالجة أسرع وأقل زمن انتقال.
  • تحليلات البيع بالتجزئة: تعزيز المراقبة داخل المتجر من خلال نشر نماذج محسّنة في أنظمة نقاط البيع أو الرفوف الذكية.

الخاتمة

يتيح لك تصدير النماذج Ultralytics YOLOv8 إلى تنسيق IMX500 من سوني نشر نماذجك للاستدلال الفعال على الكاميرات القائمة على IMX500. من خلال الاستفادة من تقنيات التكميم المتقدمة، يمكنك تقليل حجم النموذج وتحسين سرعة الاستدلال دون المساس بالدقة بشكل كبير.

لمزيد من المعلومات والإرشادات التفصيلية، راجع موقع IMX500 من سوني على الويب.

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

كيف يمكنني تصدير نموذج YOLOv8 إلى تنسيق IMX500 لكاميرا Raspberry Pi AI Camera؟

لتصدير نموذج YOLOv8 إلى تنسيق IMX500، استخدم الأمر Python API أو الأمر CLI :

from ultralytics import YOLO

model = YOLO("yolov8n.pt")
model.export(format="imx")  # Exports with PTQ quantization by default

ستقوم عملية التصدير بإنشاء دليل يحتوي على الملفات اللازمة للنشر، بما في ذلك packerOut.zip والتي يمكن استخدامها مع أداة التعبئة IMX500 على Raspberry Pi.

ما هي المزايا الرئيسية لاستخدام تنسيق IMX500 لنشر الذكاء الاصطناعي المتطور؟

يوفر تنسيق IMX500 العديد من المزايا المهمة للنشر على الحافة:

  • تقلل معالجة الذكاء الاصطناعي على الرقاقة من زمن الاستجابة واستهلاك الطاقة
  • إخراج كل من الصورة والبيانات الوصفية (نتيجة الاستدلال) بدلاً من الصور فقط
  • تعزيز الخصوصية من خلال معالجة البيانات محليًا دون الاعتماد على السحابة
  • إمكانات معالجة في الوقت الحقيقي مثالية للتطبيقات الحساسة للوقت
  • التحديد الكمي الأمثل لنشر النموذج بكفاءة على الأجهزة محدودة الموارد

ما هي المتطلبات الأساسية للأجهزة والبرامج اللازمة لنشر IMX500؟

لنشر طرازات IMX500، ستحتاج إلى:

الأجهزة:

  • رازبيري باي 5 أو رازبيري باي 4 موديل B
  • كاميرا Raspberry Pi AI مع مستشعر IMX500

البرمجيات:

  • دودة الكتب Raspberry Pi OS
  • البرامج الثابتة وأدوات IMX500 (sudo apt install imx500-all imx500-tools)
  • Python حزم ل picamera2 (sudo apt install python3-opencv python3-munkres)

ما هو الأداء الذي يمكنني توقعه من YOLOv8 على طرازات IMX500؟

استناداً إلى معايير Ultralytics على كاميرا Raspberry Pi AI Camera:

  • YOLOv8n يحقق زمن استدلال 66.66 مللي ثانية لكل صورة
  • mAP50-95 من 0.522 على مجموعة بيانات COCO8
  • حجم النموذج 2.9 ميغابايت فقط بعد التحويل الكمي

وهذا يوضح أن تنسيق IMX500 يوفر استدلالاً فعالاً في الوقت الحقيقي مع الحفاظ على دقة جيدة لتطبيقات الذكاء الاصطناعي المتطورة.

كيف يمكنني حزم النموذج الذي قمت بتصديره ونشره على كاميرا Raspberry Pi AI Camera؟

بعد التصدير إلى تنسيق IMX500:

  1. استخدم أداة الحزم لإنشاء ملف RPK:

    imx500-package -i <path to packerOut.zip> -o <output folder>
    
  2. استنساخ وتثبيت picamera2:

    git clone -b next https://github.com/raspberrypi/picamera2
    cd picamera2 && pip install -e . --break-system-packages
    
  3. قم بتشغيل الاستدلال باستخدام ملف RPK الذي تم إنشاؤه:

    python imx500_object_detection_demo.py --model <path to network.rpk> --fps 25 --bbox-normalization --labels <path to labels.txt>
    
📅 تم إنشاؤه منذ 1 شهر ✏️ تم التحديث منذ 10 أيام

التعليقات