VSCode Terminal'inde YOLO Çıkarım Sonuçları Nasıl Görüntülenir#
libsixel web sitesinden görsel.
Motivasyon#
SSH üzerinden uzak bir makineye bağlanırken, görsel sonuçları normalde görselleştirmek mümkün değildir veya verilerin GUI'ye sahip yerel bir cihaza taşınmasını gerektirir. VSCode entegre terminali, dosyaları dizüstü bilgisayarınıza geri kopyalamadan, çıkarımı çalıştrığınız yerde tam olarak tahmin sonuçlarını inceleyebilmeniz için görselleri doğrudan oluşturabilir. Bu kılavuz, kurulumun etkinleştirilmesini, kodun bağlanmasını adım adım açıklar ve sık sorulan soruları yanıtlar.
Yalnızca Linux ve macOS ile uyumludur. Terminalde sixel ile görselleri görüntlemek için Windows desteğine ilişkin güncellemeler için VSCode repository adresini, Issue status sayfasını veya documentation sayfasını kontrol et.
Entegre terminali kullanarak görselleri görüntülemek için VSCode ile uyumlu protokoller sixel ve iTerm şeklindedir. Bu kılavuz, sixel protokolünün kullanımını gösterecektir.
Süreç#
-
İlk olarak, VSCode'da
terminal.integrated.enableImagesveterminal.integrated.gpuAccelerationayarlarını etkinleştirmelisin."terminal.integrated.gpuAcceleration": "auto" # "auto" is default, can also use "on" "terminal.integrated.enableImages": true
-
Sanal ortamına
python-sixelkütüphanesini kur. Bu, artık bakım görmeyenPySixelkütüphanesinin bir fork projesidir.pip install sixel -
Bir model yükleyin ve çıkarım gerçekleştirin, ardından sonuçları çizin ve bir değişkende saklayın. Çıkarım argümanları ve sonuçlarla çalışmak hakkında daha fazla bilgi için predict mode sayfasına bakın.
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)!- Kullanılabilecek olası argümanları görmek için plot method parameters kısmına bakın.
-
Şimdi,
np.ndarrayverisinibytesverisine dönüştuşturmek için OpenCV kullan. Ardından "dosya benzeri" (file-like) bir nesne oluşturmak içinio.BytesIOkullan.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)- Diğer görüntü uzantılarını kullanmak da mümkündür.
- Yalnızca döndürülen
1indeksindeki nesne gereklidir.
-
Bir
SixelWriterörneği oluşturun ve ardından terminalde görseli çizmek için.draw()yöntemini kullanın.from sixel import SixelWriter # Create sixel writer object w = SixelWriter() # Draw the sixel image in the terminal w.draw(mem_file)
Örnek Çıkarım Sonuçları#
Bu örneğin videolar veya hareketli GIF kareleri ile kullanımı test edilmemiştir. Denemek kendi sorumluluğundadır.
Tam Kod Örneği#
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)- Diğer görüntü uzantılarını kullanmak da mümkündür.
- Yalnızca döndürülen
1indeksindeki nesne gereklidir. - Kullanılabilecek olası argümanları görmek için plot method parameters kısmına bakın.
Terminaldeki görsel görünümünü "silmek" için clear kullanmanız gerekebilir.
SSS#
macOS veya Linux'ta VSCode terminalinde YOLO çıkarım sonuçlarını nasıl görüntüleyebilirim?#
macOS veya Linux'ta VSCode terminalinde YOLO çıkarım sonuçlarını görüntülemek için şu adımları izle:
-
Gerekli VSCode ayarlarını etkinleştir:
"terminal.integrated.enableImages": true "terminal.integrated.gpuAcceleration": "auto" -
Sixel kütüphanesini kur:
pip install sixel -
YOLO modelini yükle ve çıkarımı çalıştır:
from ultralytics import YOLO model = YOLO("yolo26n.pt") results = model.predict(source="ultralytics/assets/bus.jpg") plot = results[0].plot() -
Çıkarım sonucu görüntüsünü baytlara dönüştür ve terminalde görüntüle:
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)
Daha fazla detay için predict mode sayfasını ziyaret edin.
Sixel protokolü neden sadece Linux ve macOS'te çalışıyor?#
Sixel protokolü şu anda yalnızca Linux ve macOS üzerinde desteklenmektedir çünkü bu platformlar sixel grafikleriyle uyumlu yerel terminal yeteneklerine sahiptir. Sixel kullanan terminal grafikleri için Windows desteği hâlâ geliştirme aşamasındadır. Windows uyumluluğu hakkındaki güncellemeler için VSCode Sorun durumunu ve belgeleri kontrol edin.
VSCode terminalinde görüntüleri görüntülerken sorun yaşarsam ne yapmalıyım?#
Eğer hiçbir şey görüntülenmiyorsa, şu kontrolleri sırasıyla gerçekleştir:
- Process bölümünde gösterildiği gibi hem
terminal.integrated.enableImageshem determinal.integrated.gpuAccelerationseçeneklerinin etkinleştirildiğini onayla, ardından ayarların geçerli olması için entegre terminali yeniden başlat. sixelpaketinin, betiğinizin çalıştığı etkin sanal ortamda (pip install sixel) yüklü olduğunu doğrulayın.- Kodlamadan önce
plotöğesinin geçerli birnp.ndarrayolduğundan emin ol; çünkücv2.imencode, görsel boş veya geçerli bir dizi değilse bir hata fırlatır.results[0].plot()değeri tarafından kabul edilen değerler için plot method parameters sayfasına bak.
Sorunlar devam ederse, terminal-görsel destek durumu için VSCode deposuna başvurun.
YOLO, sixel kullanarak terminalde video çıkarım sonuçlarını görüntüleyebilir mi?#
Terminalde sixel kullanarak video çıkarım sonuçlarını veya animasyonlu GIF karelerini görüntülemek şu anda test edilmemiştir ve desteklenmiyor olabilir. Statik görsellerle baş Almanızı ve uyumluluğu doğrulamanızı öneririz. Performans kısıtlamalarını göz önünde bulundurarak video sonuçlarını kendi sorumluluğunuzda deneyin. Çıkarım sonuçlarını çizme hakkında daha fazla bilgi için predict mode sayfasını ziyaret edin.
python-sixel kütüphanesiyle ilgili sorunları nasıl giderebilirim?#
sixel paketi, bakımı yapılmayan PySixel kütüphanesinin bir fork projesidir ve Pillow (PIL) üzerinde ince bir Python sarmalayıcısıdır. Eğer import sixel başarısız olursa veya SixelWriter().draw() bir hata fırlatırsa, paketin aktif sanal ortamına kurulduğunu onayla, Pillow kütüphanesinin mevcut olduğundan emin ol ve platforma özel notlar için python-sixel GitHub repository adresini incele. draw() öğesine aktaracağın görseli oluşturma hakkında daha fazla bilgi için predict mode belgelerine göz at.