تصدير Sony IMX500 لـ Ultralytics YOLO11
يغطي هذا الدليل تصدير ونشر نماذج Ultralytics YOLO11 إلى كاميرات Raspberry Pi AI التي تتميز بمستشعر Sony IMX500.
قد يكون نشر نماذج الرؤية الحاسوبية على الأجهزة ذات القدرة الحاسوبية المحدودة، مثل Raspberry Pi AI Camera، أمرًا صعبًا. استخدام تنسيق نموذج مُحسَّن لتحقيق أداء أسرع يحدث فرقًا كبيرًا.
تم تصميم تنسيق نموذج IMX500 لاستخدام الحد الأدنى من الطاقة مع تقديم أداء سريع للشبكات العصبية. يتيح لك تحسين نماذج Ultralytics YOLO11 الخاصة بك للاستدلال عالي السرعة ومنخفض الطاقة. في هذا الدليل، سنوجهك خلال تصدير ونشر نماذجك بتنسيق IMX500 مع تسهيل أداء نماذجك بشكل جيد على كاميرا Raspberry Pi AI.
لماذا يجب عليك التصدير إلى IMX500؟
يعتبر مستشعر الرؤية الذكي IMX500 من سوني قطعة أجهزة تغير قواعد اللعبة في معالجة الذكاء الاصطناعي المتطورة. إنه أول مستشعر رؤية ذكي في العالم مزود بإمكانات الذكاء الاصطناعي على الرقاقة. يساعد هذا المستشعر في التغلب على العديد من التحديات في الذكاء الاصطناعي المتطور، بما في ذلك اختناقات معالجة البيانات ومخاوف الخصوصية وقيود الأداء.
بينما تقوم المستشعرات الأخرى ببساطة بتمرير الصور والإطارات، فإن IMX500 يروي قصة كاملة. يقوم بمعالجة البيانات مباشرة على المستشعر، مما يسمح للأجهزة بإنشاء رؤى في الوقت الفعلي.
تصدير IMX500 من سوني لنماذج YOLO11
تم تصميم IMX500 لتحويل طريقة تعامل الأجهزة مع البيانات مباشرة على المستشعر، دون الحاجة إلى إرسالها إلى السحابة للمعالجة.
يعمل IMX500 مع النماذج الكمية. يؤدي التكميم إلى تصغير النماذج وتسريعها دون فقدان الكثير من الدقة. إنه مثالي للموارد المحدودة للحوسبة الطرفية، مما يسمح للتطبيقات بالاستجابة بسرعة عن طريق تقليل زمن الوصول والسماح بمعالجة البيانات بسرعة محليًا، دون الاعتماد على السحابة. تحافظ المعالجة المحلية أيضًا على خصوصية بيانات المستخدم وأمانها نظرًا لعدم إرسالها إلى خادم بعيد.
الميزات الرئيسية لـ IMX500:
- إخراج البيانات الوصفية: بدلاً من إرسال الصور فقط، يمكن لـ IMX500 إخراج كل من الصورة والبيانات الوصفية (نتيجة الاستدلال)، ويمكنه إخراج البيانات الوصفية فقط لتقليل حجم البيانات وتقليل النطاق الترددي وخفض التكاليف.
- يعالج مخاوف الخصوصية: من خلال معالجة البيانات على الجهاز، يعالج IMX500 مخاوف الخصوصية، وهو مثالي للتطبيقات التي تركز على الإنسان مثل تعداد الأشخاص وتتبع الإشغال.
- معالجة في الوقت الفعلي: تدعم المعالجة السريعة على المستشعر اتخاذ القرارات في الوقت الفعلي، وهي مثالية لتطبيقات الذكاء الاصطناعي المتطورة مثل الأنظمة المستقلة.
Before You Begin: للحصول على أفضل النتائج، تأكد من أن نموذج YOLO11 الخاص بك مُجهز جيدًا للتصدير باتباع دليل تدريب النموذج، و دليل إعداد البيانات، و دليل ضبط المعلمات الفائقة.
المهام المدعومة
حاليًا، يمكنك فقط تصدير النماذج التي تتضمن المهام التالية إلى تنسيق IMX500.
أمثلة الاستخدام
قم بتصدير نموذج Ultralytics YOLO11 إلى تنسيق IMX500 وتشغيل الاستدلال باستخدام النموذج الذي تم تصديره.
ملاحظة
هنا نقوم بتنفيذ الاستدلال فقط للتأكد من أن النموذج يعمل كما هو متوقع. ومع ذلك، لنشر وتنفيذ الاستدلال على كاميرا Raspberry Pi AI، يرجى الانتقال إلى قسم استخدام تصدير IMX500 في النشر.
الكشف عن الكائنات
from ultralytics import YOLO
# Load a YOLO11n PyTorch model
model = YOLO("yolo11n.pt")
# Export the model
model.export(format="imx", data="coco8.yaml") # exports with PTQ quantization by default
# Load the exported model
imx_model = YOLO("yolo11n_imx_model")
# Run inference
results = imx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n PyTorch model to imx format with Post-Training Quantization (PTQ)
yolo export model=yolo11n.pt format=imx data=coco8.yaml
# Run inference with the exported model
yolo predict model=yolo11n_imx_model source='https://ultralytics.com/images/bus.jpg'
تقدير الوضع
from ultralytics import YOLO
# Load a YOLO11n-pose PyTorch model
model = YOLO("yolo11n-pose.pt")
# Export the model
model.export(format="imx", data="coco8-pose.yaml") # exports with PTQ quantization by default
# Load the exported model
imx_model = YOLO("yolo11n-pose_imx_model")
# Run inference
results = imx_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLO11n-pose PyTorch model to imx format with Post-Training Quantization (PTQ)
yolo export model=yolo11n-pose.pt format=imx data=coco8-pose.yaml
# Run inference with the exported model
yolo predict model=yolo11n-pose_imx_model source='https://ultralytics.com/images/bus.jpg'
تحذير
تقوم حزمة Ultralytics بتثبيت تبعيات تصدير إضافية في وقت التشغيل. في المرة الأولى التي تقوم فيها بتشغيل أمر التصدير، قد تحتاج إلى إعادة تشغيل وحدة التحكم الخاصة بك للتأكد من أنها تعمل بشكل صحيح.
وسائط التصدير
الوسيطة | النوع | افتراضي | الوصف |
---|---|---|---|
format |
str |
'imx' |
تنسيق الهدف للنموذج الذي تم تصديره، والذي يحدد التوافق مع بيئات النشر المختلفة. |
imgsz |
int أو tuple |
640 |
حجم الصورة المطلوب لإدخال النموذج. يمكن أن يكون عددًا صحيحًا للصور المربعة أو صفًا. (height, width) لأبعاد محددة. |
int8 |
bool |
True |
يقوم بتنشيط تكميم INT8، مما يزيد من ضغط النموذج وتسريع الاستدلال مع الحد الأدنى من فقدان الدقة، خاصةً للأجهزة الطرفية. |
data |
str |
'coco8.yaml' |
مسار إلى مجموعة البيانات ملف التكوين (افتراضي: coco8.yaml )، وهو ضروري لتحديد الكميات. |
fraction |
float |
1.0 |
يحدد جزء مجموعة البيانات المراد استخدامها لمعايرة القياس الكمي INT8. يسمح بالمعايرة على مجموعة فرعية من مجموعة البيانات الكاملة، وهو أمر مفيد للتجارب أو عندما تكون الموارد محدودة. إذا لم يتم تحديده مع تمكين INT8، فسيتم استخدام مجموعة البيانات الكاملة. |
device |
str |
None |
يحدد الجهاز للتصدير: GPU (device=0 )، وحدة معالجة مركزية (CPU) (device=cpu ). |
نصيحة
إذا كنت تقوم بالتصدير على وحدة معالجة رسومات (GPU) تدعم CUDA، فيرجى تمرير الوسيطة device=0
لتصدير أسرع.
لمزيد من التفاصيل حول عملية التصدير، قم بزيارة صفحة وثائق Ultralytics حول التصدير.
ستقوم عملية التصدير بإنشاء نموذج ONNX للتحقق من صحة التكميم، بالإضافة إلى دليل باسم <model-name>_imx_model
. سيشمل هذا الدليل packerOut.zip
ملف، وهو ضروري لتعبئة النموذج لنشره على أجهزة IMX500. بالإضافة إلى ذلك، <model-name>_imx_model
سيحتوي المجلد على ملف نصي (labels.txt
) يسرد جميع التصنيفات المرتبطة بالنموذج.
هيكل المجلد
yolo11n_imx_model
├── dnnParams.xml
├── labels.txt
├── packerOut.zip
├── yolo11n_imx.onnx
├── yolo11n_imx500_model_MemoryReport.json
└── yolo11n_imx500_model.pbtxt
yolo11n-pose_imx_model
├── dnnParams.xml
├── labels.txt
├── packerOut.zip
├── yolo11n-pose_imx.onnx
├── yolo11n-pose_imx500_model_MemoryReport.json
└── yolo11n-pose_imx500_model.pbtxt
استخدام تصدير IMX500 في النشر
بعد تصدير نموذج Ultralytics YOLO11n إلى تنسيق IMX500، يمكن نشره على كاميرا Raspberry Pi AI للاستدلال.
المتطلبات الأساسية للأجهزة
تأكد من أن لديك الأجهزة التالية:
- Raspberry Pi 5 أو Raspberry Pi 4 Model B
- كاميرا الذكاء الاصطناعي Raspberry Pi
صل كاميرا 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
الخطوة 3: أعد تشغيل Raspberry Pi لكي تدخل التغييرات حيز التنفيذ.
sudo reboot
الخطوة 4: قم بتثبيت مكتبة وحدة تطبيق Aitrios Raspberry Pi
pip install git+https://github.com/SonySemiconductorSolutions/aitrios-rpi-application-module-library.git
الخطوة 5: قم بتشغيل الكشف عن الكائنات وتقدير الوضعية YOLO11 باستخدام البرامج النصية أدناه المتوفرة في أمثلة مكتبة وحدة تطبيق aitrios-rpi.
ملاحظة
تأكد من استبدال model_file
و labels.txt
الأدلة وفقًا لبيئتك قبل تشغيل هذه البرامج النصية.
برامج Python النصية
import numpy as np
from modlib.apps import Annotator
from modlib.devices import AiCamera
from modlib.models import COLOR_FORMAT, MODEL_TYPE, Model
from modlib.models.post_processors import pp_od_yolo_ultralytics
class YOLO(Model):
"""YOLO model for IMX500 deployment."""
def __init__(self):
"""Initialize the YOLO model for IMX500 deployment."""
super().__init__(
model_file="yolo11n_imx_model/packerOut.zip", # replace with proper directory
model_type=MODEL_TYPE.CONVERTED,
color_format=COLOR_FORMAT.RGB,
preserve_aspect_ratio=False,
)
self.labels = np.genfromtxt(
"yolo11n_imx_model/labels.txt", # replace with proper directory
dtype=str,
delimiter="\n",
)
def post_process(self, output_tensors):
"""Post-process the output tensors for object detection."""
return pp_od_yolo_ultralytics(output_tensors)
device = AiCamera(frame_rate=16) # Optimal frame rate for maximum DPS of the YOLO model running on the AI Camera
model = YOLO()
device.deploy(model)
annotator = Annotator()
with device as stream:
for frame in stream:
detections = frame.detections[frame.detections.confidence > 0.55]
labels = [f"{model.labels[class_id]}: {score:0.2f}" for _, score, class_id, _ in detections]
annotator.annotate_boxes(frame, detections, labels=labels, alpha=0.3, corner_radius=10)
frame.display()
from modlib.apps import Annotator
from modlib.devices import AiCamera
from modlib.models import COLOR_FORMAT, MODEL_TYPE, Model
from modlib.models.post_processors import pp_yolo_pose_ultralytics
class YOLOPose(Model):
"""YOLO pose estimation model for IMX500 deployment."""
def __init__(self):
"""Initialize the YOLO pose estimation model for IMX500 deployment."""
super().__init__(
model_file="yolo11n-pose_imx_model/packerOut.zip", # replace with proper directory
model_type=MODEL_TYPE.CONVERTED,
color_format=COLOR_FORMAT.RGB,
preserve_aspect_ratio=False,
)
def post_process(self, output_tensors):
"""Post-process the output tensors for pose estimation."""
return pp_yolo_pose_ultralytics(output_tensors)
device = AiCamera(frame_rate=17) # Optimal frame rate for maximum DPS of the YOLO-pose model running on the AI Camera
model = YOLOPose()
device.deploy(model)
annotator = Annotator()
with device as stream:
for frame in stream:
detections = frame.detections[frame.detections.confidence > 0.4]
annotator.annotate_keypoints(frame, detections)
annotator.annotate_boxes(frame, detections, corner_length=20)
frame.display()
المعايير
تم تشغيل مقاييس YOLOv8n و YOLOv11n و YOLOv8n أدناه من قبل فريق Ultralytics على كاميرا Raspberry Pi AI Camera مع imx
تنسيق النموذج لقياس السرعة والدقة.
النموذج | التنسيق | الحالة | حجم packerOut.zip (ميجابايت) |
mAP50-95(B) | وقت الاستدلال (مللي ثانية / صورة) |
---|---|---|---|---|---|
YOLOv8n | imx | ✅ | 2.1 | 0.470 | 58.79 |
YOLO11n | imx | ✅ | 2.2 | 0.517 | 58.82 |
YOLOv8n-pose | imx | ✅ | 2.0 | 0.687 | 58.79 |
YOLO11n-pose | imx | ✅ | 2.1 | 0.788 | 62.50 |
ملاحظة
تم التحقق من صحة المعايير المذكورة أعلاه باستخدام مجموعة بيانات COCO128 لنماذج الكشف ومجموعة بيانات COCO8-Pose لنماذج تقدير الوضعية.
ماذا يوجد تحت الغطاء؟
مجموعة أدوات ضغط نموذج Sony (MCT)
أداة ضغط النماذج (MCT) من سوني هي أداة قوية لتحسين نماذج التعلم العميق من خلال التكميم والتقليم. وهي تدعم طرق التكميم المختلفة وتوفر خوارزميات متقدمة لتقليل حجم النموذج والتعقيد الحسابي دون التضحية بالدقة بشكل كبير. تعتبر MCT مفيدة بشكل خاص لنشر النماذج على الأجهزة ذات الموارد المحدودة، مما يضمن الاستدلال الفعال وتقليل زمن الوصول.
الميزات المدعومة لـ MCT
تقدم MCT من سوني مجموعة من الميزات المصممة لتحسين نماذج الشبكات العصبية:
- تحسينات الرسم البياني: تحويل النماذج إلى إصدارات أكثر كفاءة عن طريق دمج طبقات مثل تطبيع الدُفعة في الطبقات السابقة.
- البحث عن معلمات التكميم: يقلل من ضوضاء التكميم باستخدام مقاييس مثل متوسط الخطأ التربيعي وعدم القطع ومتوسط الخطأ المطلق.
- خوارزميات التكميم المتقدمة:
- تصحيح الإزاحة السلبية: يعالج مشكلات الأداء الناتجة عن تحديد كمية التنشيط المتماثل.
- تصفية القيم المتطرفة: يستخدم درجة z لاكتشاف وإزالة القيم المتطرفة.
- التجميع: يستخدم شبكات تكميم غير موحدة لتحسين مطابقة التوزيع.
- البحث عن الدقة المختلطة (Mixed-Precision Search): يخصص عروض نطاق بتات تكميم مختلفة لكل طبقة بناءً على الحساسية.
- التصوير المرئي: استخدم TensorBoard لمراقبة رؤى أداء النموذج، ومراحل التكميم، وتكوينات عرض البت.
التكميم
يدعم MCT عدة طرق للتكميم لتقليل حجم النموذج وتحسين سرعة الاستدلال:
- تحديد الكمية بعد التدريب (PTQ):
- متاحة عبر واجهات برمجة تطبيقات Keras و PyTorch.
- التعقيد: منخفض
- التكلفة الحسابية: منخفضة (دقائق CPU)
- تكميم ما بعد التدريب القائم على التدرج (GPTQ):
- متاحة عبر واجهات برمجة تطبيقات Keras و PyTorch.
- التعقيد: متوسط
- التكلفة الحسابية: معتدلة (2-3 ساعات GPU)
- التدريب المدرك للتكميم (QAT):
- التعقيد: مرتفع
- التكلفة الحسابية: مرتفعة (12-36 ساعة GPU)
يدعم MCT أيضًا مخططات تكميم متنوعة للأوزان والتنشيطات:
- قوة العدد اثنين (مناسبة للأجهزة)
- متماثل
- موحد
التشذيب المنظم
يقدم MCT تقليمًا منظمًا للنماذج يراعي الأجهزة ومصممًا لبنى أجهزة معينة. تستفيد هذه التقنية من إمكانات SIMD (تعليمات فردية، بيانات متعددة) للنظام الأساسي المستهدف عن طريق تقليم مجموعات SIMD. يقلل هذا من حجم النموذج وتعقيده مع تحسين استخدام القنوات، بما يتماشى مع بنية SIMD للاستخدام المستهدف لموارد البصمة الذاكرة للأوزان. متاح عبر واجهات برمجة تطبيقات Keras و PyTorch.
أداة محول IMX500 (المترجم)
تعتبر أداة IMX500 Converter جزءًا لا يتجزأ من مجموعة أدوات IMX500، مما يسمح بتجميع النماذج لنشرها على مستشعر IMX500 الخاص بشركة Sony (على سبيل المثال، كاميرات Raspberry Pi AI). تسهل هذه الأداة عملية نقل نماذج Ultralytics YOLO11 التي تتم معالجتها من خلال برنامج Ultralytics، مما يضمن توافقها وأدائها بكفاءة على الأجهزة المحددة. يتضمن إجراء التصدير بعد تحديد كمية النموذج إنشاء ملفات ثنائية تغلف البيانات الأساسية والتكوينات الخاصة بالجهاز، مما يبسط عملية النشر على كاميرا Raspberry Pi AI.
حالات الاستخدام في العالم الحقيقي
تصدير إلى تنسيق IMX500 له تطبيقات واسعة في مختلف الصناعات. إليك بعض الأمثلة:
- Edge AI و IoT: تمكين الكشف عن الكائنات على الطائرات بدون طيار أو كاميرات المراقبة، حيث تكون المعالجة في الوقت الفعلي على الأجهزة منخفضة الطاقة ضرورية.
- الأجهزة القابلة للارتداء: انشر النماذج المحسّنة لمعالجة الذكاء الاصطناعي على نطاق صغير على الأجهزة القابلة للارتداء لمراقبة الصحة.
- المدن الذكية: استخدم نماذج YOLO11 المصدرة من IMX500 لمراقبة حركة المرور وتحليل السلامة بمعالجة أسرع وأقل زمن انتقال.
- تحليلات البيع بالتجزئة: عزز المراقبة داخل المتجر عن طريق نشر نماذج محسّنة في أنظمة نقاط البيع أو الرفوف الذكية.
الخلاصة
يتيح لك تصدير نماذج Ultralytics YOLO11 إلى تنسيق IMX500 الخاص بشركة Sony نشر نماذجك للاستدلال الفعال على الكاميرات التي تعتمد على IMX500. من خلال الاستفادة من تقنيات التكميم المتقدمة، يمكنك تقليل حجم النموذج وتحسين سرعة الاستدلال دون المساس بالدقة بشكل كبير.
لمزيد من المعلومات والإرشادات التفصيلية، راجع موقع IMX500 الإلكتروني الخاص بشركة Sony.
الأسئلة الشائعة
كيف يمكنني تصدير نموذج YOLO11 إلى تنسيق IMX500 لكاميرا Raspberry Pi AI؟
لتصدير نموذج YOLO11 إلى تنسيق IMX500، استخدم إما واجهة برمجة تطبيقات python أو أمر CLI:
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
model.export(format="imx") # Exports with PTQ quantization by default
ستقوم عملية التصدير بإنشاء دليل يحتوي على الملفات الضرورية للنشر، بما في ذلك packerOut.zip
.
ما هي الفوائد الرئيسية لاستخدام تنسيق IMX500 لنشر الذكاء الاصطناعي المتطور؟
يوفر تنسيق IMX500 العديد من المزايا المهمة للنشر على الحافة:
- تعمل معالجة الذكاء الاصطناعي على الشريحة على تقليل زمن الوصول واستهلاك الطاقة
- إخراج كل من الصورة والبيانات الوصفية (نتيجة الاستدلال) بدلاً من الصور فقط
- تعزيز الخصوصية عن طريق معالجة البيانات محليًا دون الاعتماد على السحابة
- قدرات المعالجة في الوقت الفعلي مثالية للتطبيقات الحساسة للوقت
- تحسين التكميم لنشر النماذج بكفاءة على الأجهزة ذات الموارد المحدودة
ما هي المتطلبات الأساسية للأجهزة والبرامج اللازمة لنشر IMX500؟
لنشر نماذج IMX500، ستحتاج إلى:
الأجهزة:
- Raspberry Pi 5 أو Raspberry Pi 4 Model B
- كاميرا الذكاء الاصطناعي Raspberry Pi مع مستشعر IMX500
البرمجيات:
- Raspberry Pi OS Bookworm
- البرامج الثابتة والأدوات لـ IMX500 (
sudo apt install imx500-all
)
ما هو الأداء الذي يمكن أن أتوقعه من نماذج YOLO11 على IMX500؟
بناءً على معايير Ultralytics على كاميرا Raspberry Pi AI:
- يحقق YOLO11n وقت استدلال يبلغ 62.50 مللي ثانية لكل صورة
- mAP50-95 بقيمة 0.492 على مجموعة بيانات COCO128
- حجم النموذج 3.2 ميجابايت فقط بعد التكميم
يوضح هذا أن تنسيق IMX500 يوفر استدلالًا فعالاً في الوقت الفعلي مع الحفاظ على دقة جيدة لتطبيقات الذكاء الاصطناعي المتطورة.