عرض نتائج الاستدلال في الوحدة الطرفية
صورة من موقع libsixel.
الدافع
عند الاتصال بجهاز بعيد، عادةً ما يكون تصور نتائج الصور غير ممكن أو يتطلب نقل البيانات إلى جهاز محلي بواجهة مستخدم رسومية. يتيح الطرفية المدمجة في VSCode عرض الصور مباشرةً. هذا عرض توضيحي موجز حول كيفية استخدام هذا بالتزامن مع ultralytics
مع نتائج التوقع.
تحذير
متوافق فقط مع أنظمة Linux و MacOS. تحقق من مستودع VSCode، تحقق. حالة الإشكالية، أو الوثائق للحصول على تحديثات حول دعم Windows لعرض الصور في الوحدة الطرفية باستخدام sixel
.
بروتوكولات متوافقة مع VSCode لعرض الصور باستخدام الوحدة الطرفية المدمجة هي sixel
و iTerm
. سيوضح هذا الدليل استخدام sixel
بروتوكول.
معالجة
-
أولاً، يجب عليك تفعيل الإعدادات.
terminal.integrated.enableImages
وterminal.integrated.gpuAcceleration
في VSCode."terminal.integrated.gpuAcceleration": "auto" # "auto" is default, can also use "on" "terminal.integrated.enableImages": true
-
قم بتثبيت
python-sixel
في بيئتك الافتراضية. هذا هو تَشعب منPySixel
، والتي لم تعد قيد الصيانة.pip install sixel
-
قم بتحميل نموذج ونفذ الاستدلال، ثم ارسم النتائج وخزنها في متغير. تعرف على المزيد حول حجج الاستدلال والعمل مع النتائج في صفحة وضع التوقع.
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)!
- انظر معلمات طريقة الرسم البياني للاطلاع على الوسائط المحتملة للاستخدام.
-
الآن، استخدم 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
هذا مطلوب.
-
إنشاء
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
هذا مطلوب. - انظر معلمات طريقة الرسم البياني للاطلاع على الوسائط المحتملة للاستخدام.
نصيحة
قد تحتاج إلى استخدام clear
لـ "مسح" عرض الصورة في الجهاز الطرفي.
الأسئلة الشائعة
كيف يمكنني عرض نتائج استدلال YOLO في محطة VSCode على نظام التشغيل macOS أو Linux؟
لعرض نتائج استدلال YOLO في محطة VSCode على macOS أو Linux، اتبع الخطوات التالية:
-
تمكين إعدادات VSCode الضرورية:
"terminal.integrated.enableImages": true "terminal.integrated.gpuAcceleration": "auto"
-
قم بتثبيت مكتبة sixel:
pip install sixel
-
قم بتحميل نموذج YOLO الخاص بك وشغل الاستدلال:
from ultralytics import YOLO model = YOLO("yolo11n.pt") results = model.predict(source="path_to_image") plot = results[0].plot()
-
تحويل صورة نتيجة الاستدلال إلى بايتات وعرضها في الجهاز الطرفي:
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:
-
تأكد من تمكين الإعدادات الضرورية في VSCode:
"terminal.integrated.enableImages": true "terminal.integrated.gpuAcceleration": "auto"
-
تحقق من تثبيت مكتبة sixel:
pip install sixel
-
تحقق من تحويل بيانات الصور الخاصة بك ورمز التخطيط بحثًا عن أخطاء. على سبيل المثال:
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
:
-
تأكد من تثبيت المكتبة بشكل صحيح في بيئتك الافتراضية:
pip install sixel
-
تحقق من أن لديك تبعيات python والنظام الضرورية.
-
راجع مستودع python-sixel GitHub للحصول على وثائق إضافية ودعم المجتمع.
-
تحقق جيدًا من التعليمات البرمجية الخاصة بك بحثًا عن الأخطاء المحتملة، وتحديدًا استخدام
SixelWriter
وخطوات تحويل بيانات الصورة.
للحصول على مزيد من المساعدة بشأن العمل مع نماذج YOLO وتكامل Sixel، راجع صفحات وثائق التصدير و وضع التنبؤ.