Çıkarım Sonuçlarını Terminalde Görüntüleme

Sixel example of image in Terminal

libsixel web sitesinden görsel.

Motivasyon

Uzak bir makineye bağlandığında, görsel sonuçları normalde görüntülemek mümkün değildir veya verileri grafik arayüzü (GUI) olan yerel bir cihaza taşımayı gerektirir. VSCode entegre terminali, görselleri doğrudan işlemeyi sağlar. Bu, bunu ultralytics ve çıkarım sonuçları ile birlikte nasıl kullanacağına dair kısa bir gösterimdir.

Uyarı

Only compatible with Linux and MacOS. Check the VSCode repository, check Issue status, or documentation for updates about Windows support to view images in terminal with sixel.

VSCode'un entegre terminalini kullanarak görsel görüntülemek için uyumlu protokoller sixel ve iTerm protokolleridir. Bu kılavuz, sixel protokolünün kullanımını gösterecektir.

Süreç

  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. Install the python-sixel library in your virtual environment. This is a fork of the PySixel library, which is no longer maintained.

    pip install sixel
  3. Bir model yükle ve çıkarımı çalıştır, ardından sonuçları çizdir ve bir değişkende sakla. Çıkarım argümanları ve sonuçlarla çalışma hakkında daha fazla bilgi için predict modu sayfasına bak.

    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)!
    1. Kullanabileceğin olası argümanları görmek için plot yöntemi parametrelerine bak.
  4. Now, use OpenCV to convert the np.ndarray to bytes data. Then use io.BytesIO to make a "file-like" object.

    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. Başka görsel uzantıları kullanmak da mümkündür.
    2. Döndürülen dizindeki yalnızca 1 numaralı nesne gereklidir.
  5. Bir SixelWriter örneği oluştur ve ardından görseli terminalde çizdirmek için .draw() yöntemini kullan.

    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ı

YOLO inference results displayed in terminal

Tehlike

Bu örneğin videolar veya hareketli GIF kareleriyle 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)
  1. Başka görsel uzantıları kullanmak da mümkündür.
  2. Döndürülen dizindeki yalnızca 1 numaralı nesne gereklidir.
  3. Kullanabileceğin olası argümanları görmek için plot yöntemi parametrelerine bak.

İpucu

Terminaldeki görsel görüntüsünü "temizlemek" için clear komutunu kullanman gerekebilir.

SSS

YOLO çıkarım sonuçlarını macOS veya Linux üzerinde bir VSCode terminalinde nasıl görüntüleyebilirim?

YOLO çıkarım sonuçlarını macOS veya Linux üzerinde bir 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 kütüphanesini kur:

    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="path_to_image")
    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 predict modu sayfasını ziyaret et.

Sixel protokolü neden sadece Linux ve macOS'ta çalışıyor?

Sixel protokolü şu anda yalnızca Linux ve macOS'ta desteklenmektedir çünkü bu platformlar sixel grafikleriyle uyumlu yerel terminal özelliklerine sahiptir. Windows için sixel kullanan terminal grafiği desteği hala geliştirilme aşamasındadır. Windows uyumluluğu hakkındaki güncellemeler için VSCode Sorun durumunu ve belgeleri kontrol et.

VSCode terminalinde görselleri görüntülerken sorun yaşarsam ne yapmalıyım?

VSCode terminalinde sixel kullanarak görselleri görüntülerken sorun yaşarsan:

  1. VSCode'daki gerekli ayarların etkinleştirildiğinden emin ol:

    "terminal.integrated.enableImages": true
    "terminal.integrated.gpuAcceleration": "auto"
  2. Sixel kütüphanesi kurulumunu doğrula:

    pip install sixel
  3. Görsel veri dönüştürme ve çizdirme kodunu hatalara karşı kontrol et. Örneğin:

    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)

Sorunlar devam ederse VSCode deposuna danış ve ek rehberlik için plot yöntemi parametreleri bölümünü ziyaret et.

YOLO, sixel kullanarak terminalde video çıkarım sonuçlarını görüntüleyebilir mi?

Sixel ile terminalde video çıkarım sonuçlarını veya hareketli GIF karelerini görüntülemek şu an için test edilmemiştir ve desteklenmiyor olabilir. Sabit görsellerle başlamanı ve uyumluluğu doğrulamanı öneririz. Performans kısıtlamalarını göz önünde bulundurarak, video sonuçlarını denemek kendi sorumluluğundadır. Çıkarım sonuçlarını çizdirme hakkında daha fazla bilgi için predict modu sayfasını ziyaret et.

python-sixel kütüphanesi ile ilgili sorunları nasıl giderebilirim?

python-sixel kütüphanesi ile ilgili sorunları gidermek için:

  1. Kütüphanenin sanal ortamına doğru bir şekilde kurulduğundan emin ol:

    pip install sixel
  2. Gerekli Python ve sistem bağımlılıklarına sahip olduğunu doğrula.

  3. Ek belgeler ve topluluk desteği için python-sixel GitHub deposuna başvur.

  4. Kodunu olası hatalar, özellikle SixelWriter kullanımı ve görsel veri dönüştürme adımları açısından tekrar kontrol et.

YOLO modelleri ve sixel entegrasyonu ile çalışma konusunda daha fazla yardım için dışa aktarma (export) ve predict modu belge sayfalarına bak.

Yorumlar