Visualizaci贸n de los resultados de la inferencia en un terminal
Imagen de la web libsixel.
Motivaci贸n
Cuando se conecta a una m谩quina remota, normalmente la visualizaci贸n de los resultados de las im谩genes no es posible o requiere trasladar los datos a un dispositivo local con una interfaz gr谩fica de usuario. El terminal integrado VSCode permite renderizar directamente las im谩genes. Esta es una breve demostraci贸n de c贸mo utilizarlo junto con ultralytics
con resultados de las predicciones.
Advertencia
S贸lo compatible con Linux y MacOS. Compruebe el Repositorio VSCodecomprobar Estado de la cuesti贸no documentaci贸n para obtener informaci贸n actualizada sobre la compatibilidad con Windows para ver im谩genes en el terminal con sixel
.
Los protocolos compatibles con VSCode para la visualizaci贸n de im谩genes mediante el terminal integrado son los siguientes sixel
y iTerm
. Esta gu铆a mostrar谩 el uso del sixel
protocolo.
Proceso
-
En primer lugar, debe activar la configuraci贸n
terminal.integrated.enableImages
yterminal.integrated.gpuAcceleration
en VSCode."terminal.integrated.gpuAcceleration": "auto" # "auto" is default, can also use "on" "terminal.integrated.enableImages": false
-
Instale el
python-sixel
en su entorno virtual. Se trata de un horquilla de laPySixel
que ya no se mantiene. -
Carga un modelo y ejecuta la inferencia, luego traza los resultados y los almacena en una variable. Consulte m谩s informaci贸n sobre los argumentos de inferencia y el trabajo con los resultados en la p谩gina del modo de predicci贸n.
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)!
- Consulte los par谩metros del m茅todo de trazado para ver los posibles argumentos a utilizar.
-
Ahora, utilice OpenCV para convertir el
numpy.ndarray
abytes
datos. A continuaci贸n, utiliceio.BytesIO
para crear un objeto "similar a un archivo".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)
- Tambi茅n es posible utilizar otras extensiones de imagen.
- S贸lo el objeto en el 铆ndice
1
que se devuelve es necesario.
-
Crear un
SixelWriter
y, a continuaci贸n, utilice la funci贸n.draw()
para dibujar la imagen en el terminal.
Ejemplo de resultados de inferencia
Peligro
No se ha probado el uso de este ejemplo con v铆deos o marcos GIF animados. Int茅ntelo bajo su propia responsabilidad.
Ejemplo de c贸digo completo
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)
- Tambi茅n es posible utilizar otras extensiones de imagen.
- S贸lo el objeto en el 铆ndice
1
que se devuelve es necesario. - Consulte los par谩metros del m茅todo de trazado para ver los posibles argumentos a utilizar.
Consejo
Puede que necesite utilizar clear
para "borrar" la vista de la imagen en el terminal.
PREGUNTAS FRECUENTES
驴C贸mo puedo ver los resultados de la inferencia YOLO en un terminal VSCode en macOS o Linux?
Para ver los resultados de la inferencia YOLO en un terminal VSCode en macOS o Linux, siga estos pasos:
-
Habilite los ajustes VSCode necesarios:
-
Instala la biblioteca sixel:
-
Cargue su modelo YOLO y ejecute la inferencia:
-
Convierte la imagen del resultado de la inferencia en bytes y la muestra en el terminal:
Para m谩s detalles, visite la p谩gina del modo de predicci贸n.
驴Por qu茅 el protocolo sixel s贸lo funciona en Linux y macOS?
Actualmente, el protocolo sixel solo es compatible con Linux y macOS, ya que estas plataformas disponen de funciones de terminal nativas compatibles con los gr谩ficos sixel. La compatibilidad de Windows con gr谩ficos de terminal mediante sixel a煤n est谩 en fase de desarrollo. Para obtener informaci贸n actualizada sobre la compatibilidad con Windows, consulte el estado y la documentaci贸n de VSCode Issue.
驴Qu茅 ocurre si tengo problemas para visualizar im谩genes en el terminal VSCode?
Si tiene problemas para visualizar im谩genes en el terminal VSCode utilizando sixel:
-
Aseg煤rese de que los ajustes necesarios en VSCode est谩n activados:
-
Verifique la instalaci贸n de la biblioteca sixel:
-
Compruebe si hay errores en la conversi贸n de datos de imagen y en el c贸digo de trazado. Por ejemplo:
Si los problemas persisten, consulte el repositorio VSCode y visite la secci贸n de par谩metros del m茅todo de trazado para obtener m谩s informaci贸n.
驴Puede YOLO mostrar los resultados de la inferencia de v铆deo en el terminal utilizando sixel?
La visualizaci贸n de los resultados de la inferencia de v铆deo o de fotogramas GIF animados mediante sixel en el terminal no se ha probado actualmente y es posible que no sea compatible. Recomendamos empezar con im谩genes est谩ticas y verificar la compatibilidad. Intente mostrar resultados de v铆deo bajo su propia responsabilidad, teniendo en cuenta las limitaciones de rendimiento. Para m谩s informaci贸n sobre el trazado de resultados de inferencia, visite la p谩gina del modo de predicci贸n.
驴C贸mo puedo solucionar problemas con el python-sixel
驴Biblioteca?
Para solucionar problemas con el python-sixel
biblioteca:
-
Aseg煤rese de que la biblioteca est谩 correctamente instalada en su entorno virtual:
-
Compruebe que dispone de las dependencias necesarias de Python y del sistema.
-
Consulte el repositorio GitHubpython -sixel para obtener documentaci贸n adicional y apoyo de la comunidad.
-
Compruebe su c贸digo en busca de posibles errores, especialmente el uso de
SixelWriter
y los pasos de conversi贸n de datos de imagen.
Para obtener m谩s ayuda sobre el trabajo con los modelos YOLO y la integraci贸n de sixel, consulte las p谩ginas de documentaci贸n sobre exportaci贸n y modo predictivo.