Anzeigen von Ableitungsergebnissen in einem Terminal
Bild von der libsixel-Website.
Motivation
Wenn eine Verbindung zu einem entfernten Rechner besteht, ist es normalerweise nicht möglich, Bildergebnisse zu visualisieren, oder die Daten müssen auf ein lokales Gerät mit einer grafischen Benutzeroberfläche übertragen werden. Das in VSCode integrierte Terminal ermöglicht die direkte Darstellung von Bildern. Dies ist eine kurze Demonstration, wie man dies in Verbindung mit ultralytics
mit Vorhersageergebnisse.
Warnung
Nur kompatibel mit Linux und MacOS. Prüfen Sie die VSCode-Repository, prüfen Status der Ausgabe, oder Dokumentation für Aktualisierungen der Windows-Unterstützung zur Anzeige von Bildern im Terminal mit sixel
.
Die VSCode-kompatiblen Protokolle zum Betrachten von Bildern mit dem integrierten Terminal sind sixel
und iTerm
. In diesem Leitfaden wird die Verwendung der sixel
Protokoll.
Prozess
-
Zunächst müssen Sie die Einstellungen aktivieren
terminal.integrated.enableImages
undterminal.integrated.gpuAcceleration
in VSCode."terminal.integrated.gpuAcceleration": "auto" # "auto" is default, can also use "on" "terminal.integrated.enableImages": false
-
Installieren Sie die
python-sixel
Bibliothek in Ihrer virtuellen Umgebung. Dies ist eine Gabel derPySixel
Bibliothek, die nicht mehr gepflegt wird. -
Laden Sie ein Modell und führen Sie die Inferenz aus, stellen Sie die Ergebnisse dar und speichern Sie sie in einer Variablen. Weitere Informationen über Inferenzargumente und die Arbeit mit Ergebnissen finden Sie auf der Seite zum Vorhersagemodus.
from ultralytics import YOLO # Load a model model = YOLO("yolo11n.pt") # Run inference on an image results = model.predict(source="ultralytics/assets/bus.jpg") # Plot inference results plot = results[0].plot() # (1)!
- Siehe Parameter der Plot-Methode, um die möglichen Argumente zu sehen, die verwendet werden können.
-
Verwenden Sie nun OpenCV zur Umwandlung der
numpy.ndarray
zubytes
Daten. Verwenden Sie dannio.BytesIO
um ein "dateiähnliches" Objekt zu erstellen.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)
- Es ist auch möglich, andere Bilderweiterungen zu verwenden.
- Nur das Objekt mit dem Index
1
die zurückgegeben wird, benötigt.
-
Erstellen einer
SixelWriter
Instanz, und verwenden Sie dann die.draw()
Methode, um das Bild im Terminal zu zeichnen.
Beispiel Inferenzergebnisse
Gefahr
Die Verwendung dieses Beispiels mit Videos oder animierten GIF-Frames wurde nicht getestet. Der Versuch erfolgt auf eigene Gefahr.
Vollständiges Code-Beispiel
import io
import cv2
from sixel import SixelWriter
from ultralytics import YOLO
# Load a model
model = YOLO("yolo11n.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)
- Es ist auch möglich, andere Bilderweiterungen zu verwenden.
- Nur das Objekt mit dem Index
1
die zurückgegeben wird, benötigt. - Siehe Parameter der Plot-Methode, um die möglichen Argumente zu sehen, die verwendet werden können.
Tipp
Sie müssen möglicherweise Folgendes verwenden clear
um die Ansicht des Bildes im Terminal zu "löschen".
FAQ
Wie kann ich die Ergebnisse von YOLO in einem VSCode-Terminal unter macOS oder Linux anzeigen?
Gehen Sie folgendermaßen vor, um die Ergebnisse von YOLO in einem VSCode-Terminal unter macOS oder Linux anzuzeigen:
-
Aktivieren Sie die erforderlichen VSCode-Einstellungen:
-
Installieren Sie die sixel-Bibliothek:
-
Laden Sie Ihr YOLO Modell und führen Sie die Inferenz durch:
-
Konvertieren Sie das Ergebnisbild der Inferenz in Bytes und zeigen Sie es im Terminal an:
Weitere Einzelheiten finden Sie auf der Seite zum Vorhersagemodus.
Warum funktioniert das Sixel-Protokoll nur unter Linux und macOS?
Das sixel-Protokoll wird derzeit nur unter Linux und macOS unterstützt, da diese Plattformen über native Terminalfunktionen verfügen, die mit sixel-Grafiken kompatibel sind. Die Windows-Unterstützung für Terminalgrafiken mit sixel befindet sich noch in der Entwicklung. Aktuelle Informationen zur Windows-Kompatibilität finden Sie im VSCode Issue Status und in der Dokumentation.
Was ist, wenn ich Probleme mit der Anzeige von Bildern im VSCode-Terminal habe?
Wenn Sie Probleme bei der Anzeige von Bildern im VSCode-Terminal mit sixel:
-
Stellen Sie sicher, dass die erforderlichen Einstellungen in VSCode aktiviert sind:
-
Überprüfen Sie die Installation der sixel-Bibliothek:
-
Überprüfen Sie Ihren Bilddatenkonvertierungs- und Plotting-Code auf Fehler. Zum Beispiel:
Sollten die Probleme weiterhin bestehen, konsultieren Sie das VSCode-Repository und besuchen Sie den Abschnitt über die Parameter der Plot-Methode, um weitere Hinweise zu erhalten.
Kann YOLO mit Hilfe von sixel die Ergebnisse der Videoinferenz auf dem Terminal anzeigen?
Die Anzeige von Video-Inferenzergebnissen oder animierten GIF-Frames mit sixel im Terminal ist derzeit nicht getestet und wird möglicherweise nicht unterstützt. Wir empfehlen, mit statischen Bildern zu beginnen und die Kompatibilität zu überprüfen. Das Ausprobieren von Videoergebnissen erfolgt auf eigene Gefahr und unter Berücksichtigung von Leistungseinschränkungen. Weitere Informationen zum Plotten von Inferenzergebnissen finden Sie auf der Seite zum Vorhersagemodus.
Wie kann ich Probleme mit dem System beheben? python-sixel
Bibliothek?
Zur Fehlerbehebung bei Problemen mit dem python-sixel
Bibliothek:
-
Stellen Sie sicher, dass die Bibliothek in Ihrer virtuellen Umgebung korrekt installiert ist:
-
Stellen Sie sicher, dass Sie über die erforderlichen Python und Systemabhängigkeiten verfügen.
-
Weitere Dokumentation und Unterstützung durch die Community finden Sie im python-sixel GitHub-Repository.
-
Überprüfen Sie Ihren Code doppelt auf mögliche Fehler, insbesondere die Verwendung von
SixelWriter
und Bilddatenkonvertierungsschritte.
Weitere Hilfestellungen zur Arbeit mit YOLO Modellen und zur Integration von sixel finden Sie auf den Dokumentationsseiten zum Export- und Vorhersagemodus.