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

عرض نتائج الاستدلال في الوحدة الطرفية

مثال Sixel لصورة في Terminal

صورة من موقع libsixel.

الدافع

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

تحذير

متوافق فقط مع أنظمة Linux و MacOS. تحقق من مستودع VSCode، تحقق. حالة الإشكالية، أو الوثائق للحصول على تحديثات حول دعم Windows لعرض الصور في الوحدة الطرفية باستخدام sixel.

بروتوكولات متوافقة مع VSCode لعرض الصور باستخدام الوحدة الطرفية المدمجة هي sixel و iTerm. سيوضح هذا الدليل استخدام sixel بروتوكول.

معالجة

  1. أولاً، يجب عليك تفعيل الإعدادات. terminal.integrated.enableImages و terminal.integrated.gpuAcceleration في VSCode.

    "terminal.integrated.gpuAcceleration": "auto" # "auto" is default, can also use "on"
    "terminal.integrated.enableImages": true
    

    إعداد صور المحطة الطرفية في VSCode

  2. قم بتثبيت python-sixel في بيئتك الافتراضية. هذا هو تَشعب من PySixel ، والتي لم تعد قيد الصيانة.

    pip install sixel
    
  3. قم بتحميل نموذج ونفذ الاستدلال، ثم ارسم النتائج وخزنها في متغير. تعرف على المزيد حول حجج الاستدلال والعمل مع النتائج في صفحة وضع التوقع.

    from ultralytics import YOLO
    
    # Load a model
    model = YOLO("yolo11n.pt")
    
    # Run inference on an image
    results = model.predict(source="ultralytics/assets/bus.jpg")
    
    # Plot inference results
    plot = results[0].plot()  # (1)!
    
    1. انظر معلمات طريقة الرسم البياني للاطلاع على الوسائط المحتملة للاستخدام.
  4. الآن، استخدم OpenCV لتحويل np.ndarray إلى bytes البيانات. ثم استخدم io.BytesIO لإنشاء كائن "يشبه الملف".

    import io
    
    import cv2
    
    # Results image as bytes
    im_bytes = cv2.imencode(
        ".png",  # (1)!
        plot,
    )[1].tobytes()  # (2)!
    
    # Image bytes as a file-like object
    mem_file = io.BytesIO(im_bytes)
    
    1. من الممكن استخدام امتدادات صور أخرى أيضًا.
    2. فقط العنصر الموجود في الفهرس 1 هذا مطلوب.
  5. إنشاء SixelWriter مثيل، ثم استخدم .draw() دالة (method) لرسم الصورة في الطرفية.

    from sixel import SixelWriter
    
    # Create sixel writer object
    w = SixelWriter()
    
    # Draw the sixel image in the terminal
    w.draw(mem_file)
    

مثال لنتائج الاستدلال

عرض الصورة في الوحدة الطرفية

خطر

لم يتم اختبار استخدام هذا المثال مع مقاطع الفيديو أو إطارات GIF المتحركة . حاول على مسؤوليتك الخاصة.

مثال كامل للتعليمات البرمجية

import io

import cv2
from sixel import SixelWriter

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11n.pt")

# Run inference on an image
results = model.predict(source="ultralytics/assets/bus.jpg")

# Plot inference results
plot = results[0].plot()  # (3)!

# Results image as bytes
im_bytes = cv2.imencode(
    ".png",  # (1)!
    plot,
)[1].tobytes()  # (2)!

mem_file = io.BytesIO(im_bytes)
w = SixelWriter()
w.draw(mem_file)
  1. من الممكن استخدام امتدادات صور أخرى أيضًا.
  2. فقط العنصر الموجود في الفهرس 1 هذا مطلوب.
  3. انظر معلمات طريقة الرسم البياني للاطلاع على الوسائط المحتملة للاستخدام.

نصيحة

قد تحتاج إلى استخدام clear لـ "مسح" عرض الصورة في الجهاز الطرفي.

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

كيف يمكنني عرض نتائج استدلال YOLO في محطة VSCode على نظام التشغيل macOS أو Linux؟

لعرض نتائج استدلال YOLO في محطة VSCode على macOS أو Linux، اتبع الخطوات التالية:

  1. تمكين إعدادات VSCode الضرورية:

    "terminal.integrated.enableImages": true
    "terminal.integrated.gpuAcceleration": "auto"
    
  2. قم بتثبيت مكتبة sixel:

    pip install sixel
    
  3. قم بتحميل نموذج YOLO الخاص بك وشغل الاستدلال:

    from ultralytics import YOLO
    
    model = YOLO("yolo11n.pt")
    results = model.predict(source="path_to_image")
    plot = results[0].plot()
    
  4. تحويل صورة نتيجة الاستدلال إلى بايتات وعرضها في الجهاز الطرفي:

    import io
    
    import cv2
    from sixel import SixelWriter
    
    im_bytes = cv2.imencode(".png", plot)[1].tobytes()
    mem_file = io.BytesIO(im_bytes)
    SixelWriter().draw(mem_file)
    

لمزيد من التفاصيل، قم بزيارة صفحة وضع التنبؤ.

لماذا يعمل بروتوكول sixel فقط على أنظمة Linux و macOS؟

بروتوكول sixel مدعوم حاليًا فقط على نظامي التشغيل Linux و macOS لأن هذه الأنظمة الأساسية لديها إمكانات طرفية أصلية متوافقة مع رسومات sixel. لا يزال تطوير دعم Windows لرسومات المحطة الطرفية باستخدام sixel قيد التطوير. للحصول على تحديثات حول توافق Windows، تحقق من حالة مشكلة VSCode والوثائق.

ماذا لو واجهت مشاكل في عرض الصور في محطة VSCode؟

إذا واجهت مشاكل في عرض الصور في محطة VSCode باستخدام sixel:

  1. تأكد من تمكين الإعدادات الضرورية في VSCode:

    "terminal.integrated.enableImages": true
    "terminal.integrated.gpuAcceleration": "auto"
    
  2. تحقق من تثبيت مكتبة sixel:

    pip install sixel
    
  3. تحقق من تحويل بيانات الصور الخاصة بك ورمز التخطيط بحثًا عن أخطاء. على سبيل المثال:

    import io
    
    import cv2
    from sixel import SixelWriter
    
    im_bytes = cv2.imencode(".png", plot)[1].tobytes()
    mem_file = io.BytesIO(im_bytes)
    SixelWriter().draw(mem_file)
    

إذا استمرت المشاكل، فراجع مستودع VSCode، وقم بزيارة قسم معلمات طريقة الرسم للحصول على إرشادات إضافية.

هل يمكن لـ YOLO عرض نتائج استنتاج الفيديو في الجهاز باستخدام sixel؟

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

كيف يمكنني استكشاف المشكلات وإصلاحها في python-sixel ؟

لاستكشاف المشكلات وإصلاحها في python-sixel :

  1. تأكد من تثبيت المكتبة بشكل صحيح في بيئتك الافتراضية:

    pip install sixel
    
  2. تحقق من أن لديك تبعيات python والنظام الضرورية.

  3. راجع مستودع python-sixel GitHub للحصول على وثائق إضافية ودعم المجتمع.

  4. تحقق جيدًا من التعليمات البرمجية الخاصة بك بحثًا عن الأخطاء المحتملة، وتحديدًا استخدام SixelWriter وخطوات تحويل بيانات الصورة.

للحصول على مزيد من المساعدة بشأن العمل مع نماذج YOLO وتكامل Sixel، راجع صفحات وثائق التصدير و وضع التنبؤ.



📅 أُنشئ منذ سنة واحدة ✏️ تم التحديث منذ 9 أيام

تعليقات