Ultralytics YOLO27:
Get Started

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

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#

  1. Öncelikle VSCode’da terminal.integrated.enableImages ve terminal.integrated.gpuAcceleration ayarlarını etkinleştirmelisin.

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

    VSCode enable terminal images setting

  2. Sanal ortamına python-sixel kitaplığını yükle. Bu kitaplık, artık bakımı yapılmayan PySixel kitaplığının bir çatallamasıdır.

    pip install sixel
  3. 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)!
    1. Kullanabileceğin bağımsız değişkenleri görmek için plot yöntemi parametrelerine bak.
  4. Şimdi np.ndarray verisini bytes verisine dönüştürmek için OpenCV kullan. Ardından "dosya benzeri" bir nesne oluşturmak için io.BytesIO kullan.

    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)
    1. Başka görsel uzantıları da kullanabilirsin.
    2. Yalnızca döndürülen 1 dizinindeki nesne gerekiyor.
  5. 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ı#

YOLO inference results displayed in terminal

Videolar ve GIF'ler test edilmedi

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)
  1. Başka görsel uzantıları da kullanabilirsin.
  2. Yalnızca döndürülen 1 dizinindeki nesne gerekiyor.
  3. Kullanabileceğin bağımsız değişkenleri görmek için plot yöntemi parametrelerine bak.
Görseli temizleme

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:

    1. Gerekli VSCode ayarlarını etkinleştir:

      "terminal.integrated.enableImages": true
      "terminal.integrated.gpuAcceleration": "auto"
    2. sixel kitaplığını yükle:

      pip install sixel
    3. 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()
    4. Çı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:

    1. İşlem bölümünde gösterildiği gibi hem terminal.integrated.enableImages hem de terminal.integrated.gpuAcceleration ayarlarının etkin olduğunu doğrula; ardından ayarların uygulanması için tümleşik terminali yeniden başlat.
    2. sixel kitaplığının betiğinin çalıştığı sanal ortama (pip install sixel) yüklendiğini doğrula.
    3. Kodlamadan önce plot değerinin geçerli bir np.ndarray olduğundan emin ol; çünkü görsel boşsa veya geçerli bir dizi değilse cv2.imencode hata 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.

  • 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.

  • sixel paketi, bakımı yapılmayan PySixel kitaplığının bir çatallamasıdır ve Pillow (PIL) üzerinde ince bir Python sarmalayıcısıdır. import sixel başarısız olursa veya SixelWriter().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.

Yorumlar