Просмотр результатов выводов в терминале
Изображение с сайта libsixel.
Мотивация
При подключении к удаленной машине визуализация результатов обработки изображений обычно невозможна или требует переноса данных на локальное устройство с графическим интерфейсом. Интегрированный терминал VSCode позволяет напрямую визуализировать изображения. Это краткая демонстрация того, как использовать его в сочетании с ultralytics
с результаты прогнозирования.
Внимание
Совместим только с Linux и MacOS. Проверьте Репозиторий VSCode, проверьте Состояние проблемы, или документация для получения обновлений о поддержке Windows для просмотра изображений в терминале с помощью sixel
.
Для просмотра изображений с помощью встроенного терминала используются следующие протоколы, совместимые с VSCode sixel
и iTerm
. Это руководство демонстрирует использование sixel
протокол.
Процесс
-
Сначала необходимо включить настройки
terminal.integrated.enableImages
иterminal.integrated.gpuAcceleration
в VSCode."terminal.integrated.gpuAcceleration": "auto" # "auto" is default, can also use "on" "terminal.integrated.enableImages": true
-
Установите
python-sixel
библиотека в вашей виртуальной среде. Это вилка изPySixel
библиотека, которая больше не поддерживается. -
Загрузите модель и выполните вывод, затем постройте график результатов и сохраните их в переменной. Подробнее об аргументах для вывода и работе с результатами можно узнать на странице режима прогнозирования.
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()
-
Теперь используйте OpenCV преобразовать
numpy.ndarray
наbytes
данные. Затем используйтеio.BytesIO
чтобы создать "файлоподобный" объект.import io import cv2 # Results image as bytes im_bytes = cv2.imencode( ".png", plot, )[1].tobytes() # Image bytes as a file-like object mem_file = io.BytesIO(im_bytes)
-
Создайте
SixelWriter
экземпляр, а затем используйте.draw()
метод для отрисовки изображения в терминале.
Пример результатов вывода
Опасность
Использование этого примера с видео или анимированными GIF-кадрами не проверялось. Используйте на свой страх и риск.
Пример полного кода
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()
# Results image as bytes
im_bytes = cv2.imencode(
".png",
plot,
)[1].tobytes()
mem_file = io.BytesIO(im_bytes)
w = SixelWriter()
w.draw(mem_file)
Наконечник
Вам может понадобиться clear
чтобы "стереть" изображение в терминале.
ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ
Как просмотреть результаты анализа YOLO в терминале VSCode на macOS или Linux?
Чтобы просмотреть результаты анализа YOLO в терминале VSCode на macOS или Linux, выполните следующие действия:
-
Включите необходимые настройки VSCode:
-
Установите библиотеку sixel:
-
Загрузите модель YOLO и запустите вывод:
-
Преобразуйте изображение результатов вывода в байты и выведите его на экран терминала:
Более подробную информацию можно найти на странице режима прогнозирования.
Почему протокол sixel работает только на Linux и macOS?
В настоящее время протокол sixel поддерживается только в Linux и macOS, поскольку эти платформы имеют встроенные терминальные возможности, совместимые с графикой sixel. Поддержка Windows для терминальной графики с использованием sixel все еще находится в разработке. Для получения обновленной информации о совместимости с Windows проверьте статус выпуска VSCode и документацию.
Что делать, если у меня возникли проблемы с отображением изображений в терминале VSCode?
Если у вас возникли проблемы с отображением изображений в терминале VSCode с помощью sixel:
-
Убедитесь, что необходимые настройки в VSCode включены:
-
Проверьте установку библиотеки Sixel:
-
Проверьте код преобразования данных изображения и черчения на наличие ошибок. Например:
Если проблемы сохраняются, обратитесь к репозиторию VSCode и посетите раздел параметров метода построения для получения дополнительных указаний.
Может ли YOLO отображать результаты видеоинтерпретации на терминале с помощью sixel?
Отображение результатов видеоанализа или анимированных GIF-кадров с помощью sixel в терминале в настоящее время не проверено и может не поддерживаться. Мы рекомендуем начать со статичных изображений и проверить их совместимость. Пробуйте выводить видео результаты на свой страх и риск, помня об ограничениях производительности. Для получения дополнительной информации о построении графиков результатов выводов посетите страницу режима предсказания.
Как устранить неполадки с python-sixel
библиотека?
Чтобы устранить неполадки с python-sixel
библиотека:
-
Убедитесь, что библиотека правильно установлена в вашей виртуальной среде:
-
Убедитесь, что у вас есть необходимый Python и системные зависимости.
-
Обратитесь к репозиториюpython -sixel GitHub для получения дополнительной документации и поддержки сообщества.
-
Дважды проверьте свой код на наличие потенциальных ошибок, в частности, использование
SixelWriter
и этапы преобразования данных изображения.
Дополнительную информацию о работе с моделями YOLO и интеграции Sixel см. на страницах документации по экспорту и режиму прогнозирования.