Çıkarım Sonuçlarını Terminalde Görüntüleme
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.
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ç
-
Ö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
-
Install the
python-sixellibrary in your virtual environment. This is a fork of thePySixellibrary, which is no longer maintained.pip install sixel -
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)!- Kullanabileceğin olası argümanları görmek için plot yöntemi parametrelerine bak.
-
Now, use OpenCV to convert the
np.ndarraytobytesdata. Then useio.BytesIOto 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)- Başka görsel uzantıları kullanmak da mümkündür.
- Döndürülen dizindeki yalnızca
1numaralı nesne gereklidir.
-
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ı
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)- Başka görsel uzantıları kullanmak da mümkündür.
- Döndürülen dizindeki yalnızca
1numaralı nesne gereklidir. - Kullanabileceğin olası argümanları görmek için plot yöntemi parametrelerine bak.
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:
-
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="path_to_image") 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 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:
-
VSCode'daki gerekli ayarların etkinleştirildiğinden emin ol:
"terminal.integrated.enableImages": true "terminal.integrated.gpuAcceleration": "auto" -
Sixel kütüphanesi kurulumunu doğrula:
pip install sixel -
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:
-
Kütüphanenin sanal ortamına doğru bir şekilde kurulduğundan emin ol:
pip install sixel -
Gerekli Python ve sistem bağımlılıklarına sahip olduğunu doğrula.
-
Ek belgeler ve topluluk desteği için python-sixel GitHub deposuna başvur.
-
Kodunu olası hatalar, özellikle
SixelWriterkullanı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.