عرض نتائج الاستدلال في الطرفية
صورة من موقع 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("yolo26n.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()لرسم الصورة في الطرفية.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("yolo26n.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("yolo26n.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. لا يزال دعم رسومات الطرفية باستخدام sixel على Windows قيد التطوير. للحصول على تحديثات حول توافق 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 والنظام الضرورية.
-
راجع مستودع GitHub الخاص بـ python-sixel للحصول على توثيق إضافي ودعم المجتمع.
-
تحقق جيداً من الكود الخاص بك بحثاً عن أخطاء محتملة، وتحديداً استخدام
SixelWriterوخطوات تحويل بيانات الصورة.
للحصول على مزيد من المساعدة حول العمل مع نماذج YOLO وتكامل sixel، راجع صفحات توثيق التصدير ووضع التنبؤ.