YOLO Çıkarım Sonuçlarını VSCode Terminalinde Görüntüleme#
libsixel web sitesinden alınan görsel.
Amaç#
Uzak bir makineye SSH üzerinden bağlandığında, görüntü sonuçlarını normal şekilde görselleştirmek mümkün değildir veya verilerin GUI’li yerel bir cihaza taşınması gerekir. VSCode tümleşik terminali görüntüleri doğrudan işleyebilir; böylece dosyaları dizüstü bilgisayarına kopyalamadan, çıkarımı çalıştırdığın yerde tahmin sonuçlarını inceleyebilirsin. Bu kılavuz, kurulumu etkinleştirme ve kodu yapılandırma adımlarını anlatıyor ve sık sorulan soruları yanıtlıyor.
Yalnızca Linux ve macOS ile uyumludur. Terminalde sixel ile görüntüleri görmek üzere Windows desteğiyle ilgili güncellemeler için VSCode deposunu, sorun durumunu veya belgeleri kontrol et.
Tümleşik terminalde görüntüleri görüntülemek için VSCode ile uyumlu protokoller sixel ve iTerm şeklindedir. Bu kılavuzda sixel protokolünün kullanımı gösterilecek.
İşlem#
-
Öncelikle 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-sixelkitaplığını yükle. Bu kitaplık, artık bakımı yapılmayanPySixelkitaplığının bir çatallamasıdır.pip install sixel -
Bir model yükleyip çıkarımı çalıştır, ardından sonuçları çizdir ve bir değişkende sakla. Çıkarım bağımsız değişkenleri ve sonuçlarla çalışma hakkında daha fazla bilgi için tahmin modu sayfasına bak.
from ultralytics import YOLO # Bir model yükle model = YOLO("yolo26n.pt") # Bir görüntü üzerinde çıkarım yap results = model.predict(source="https://ultralytics.com/images/bus.jpg") # Çıkarım sonuçlarını çizdir plot = results[0].plot() # (1)!- Kullanabileceğin bağımsız değişkenleri görmek için plot yöntemi parametrelerine bak.
-
Şimdi
np.ndarrayverisinibytesverisine dönüştürmek için OpenCV kullan. Ardından "dosya benzeri" bir nesne oluşturmak içinio.BytesIOkullan.import io import cv2 # Sonuç görseli baytları im_bytes = cv2.imencode( ".png", # (1)! plot, )[1].tobytes() # (2)! # Görsel baytlarını dosya benzeri bir nesne olarak kullan mem_file = io.BytesIO(im_bytes)- Başka görsel uzantıları da kullanabilirsin.
- Yalnızca döndürülen
1dizinindeki nesne gerekiyor.
-
Bir
SixelWriterörneği oluştur, ardından görseli terminalde çizdirmek için.draw()yöntemini kullan.from sixel import SixelWriter # Sixel yazıcı nesnesi oluştur w = SixelWriter() # Sixel görselini terminalde çiz w.draw(mem_file)
Örnek Çıkarım Sonuçları#
Bu örneğin videolarla veya animasyonlu GIF kareleriyle kullanımı test edilmemiştir. Kendi sorumluluğunda dene.
Tam Kod Örneği#
import io
import cv2
from sixel import SixelWriter
from ultralytics import YOLO
# Bir model yükle
model = YOLO("yolo26n.pt")
# Bir görüntü üzerinde çıkarım yap
results = model.predict(source="https://ultralytics.com/images/bus.jpg")
# Çıkarım sonuçlarını çizdir
plot = results[0].plot() # (3)!
# Sonuç görseli baytları
im_bytes = cv2.imencode(
".png", # (1)!
plot,
)[1].tobytes() # (2)!
mem_file = io.BytesIO(im_bytes)
w = SixelWriter()
w.draw(mem_file)- Başka görsel uzantıları da kullanabilirsin.
- Yalnızca döndürülen
1dizinindeki nesne gerekiyor. - Kullanabileceğin bağımsız değişkenleri görmek için plot yöntemi parametrelerine bak.
Terminaldeki görsel görünümünü "silmek" için clear kullanman gerekebilir.
Sık Sorulan Sorular#
YOLO çıkarım sonuçlarını macOS veya Linux'ta VSCode terminalinde 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 kitaplığını yükle:
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="https://ultralytics.com/images/bus.jpg") plot = results[0].plot() -
Çıkarım sonucu görselini 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 ayrıntı için tahmin modu sayfasını ziyaret et.
-
sixel protokolü şu anda yalnızca Linux ve macOS'ta destekleniyor; çünkü bu platformlarda sixel grafikleriyle uyumlu yerel terminal özellikleri bulunuyor. Terminal grafiklerinde sixel kullanan Windows desteği hâlâ geliştiriliyor. Windows uyumluluğuyla ilgili güncellemeler için VSCode sorun durumunu ve belgeleri kontrol et.
Hiçbir şey görüntülenmiyorsa şu kontrolleri sırayla yap:
- İşlem bölümünde gösterildiği gibi hem
terminal.integrated.enableImageshem determinal.integrated.gpuAccelerationayarlarının etkin olduğunu doğrula; ardından ayarların uygulanması için tümleşik terminali yeniden başlat. sixelkitaplığının betiğinin çalıştığı sanal ortama (pip install sixel) yüklendiğini doğrula.- Kodlamadan önce
plotdeğerinin geçerli birnp.ndarrayolduğundan emin ol; çünkü görsel boşsa veya geçerli bir dizi değilsecv2.imencodehata verir.results[0].plot()tarafından kabul edilen değerler için plot yöntemi parametrelerine bak.
Sorun devam ederse terminalde görsel desteğinin durumunu öğrenmek için VSCode deposuna başvur.
- İşlem bölümünde gösterildiği gibi hem
Video çıkarım sonuçlarını veya animasyonlu GIF karelerini sixel kullanarak terminalde görüntüleme şu anda test edilmemiştir ve desteklenmeyebilir. Statik görsellerle başlamanı ve uyumluluğu doğrulamanı öneririz. Performans kısıtlamalarını göz önünde bulundurarak video sonuçlarını kendi sorumluluğunda dene. Çıkarım sonuçlarını çizdirme hakkında daha fazla bilgi için tahmin modu sayfasını ziyaret et.
sixelpaketi, bakımı yapılmayanPySixelkitaplığının bir çatallamasıdır ve Pillow (PIL) üzerinde ince bir Python sarmalayıcısıdır.import sixelbaşarısız olursa veyaSixelWriter().draw()hata verirse paketin etkin sanal ortamına yüklendiğini doğrula, Pillow'ın kullanılabilir olduğundan emin ol ve platforma özel notlar için python-sixel GitHub deposunu kontrol et.draw()öğesine aktaracağın görseli oluşturma hakkında daha fazla bilgi için tahmin modu belgelerine bak.