Просмотр результатов умозаключений в терминале
Изображение с сайта libsixel.
Мотивация
При подключении к удаленной машине обычно визуализация результатов работы с изображениями невозможна или требует перемещения данных на локальное устройство с графическим интерфейсом. Интегрированный терминал VSCode позволяет напрямую визуализировать изображения. Это короткая демонстрация того, как использовать его в сочетании с ultralytics
с Результаты предсказаний.
Внимание
Совместим только с Linux и MacOS. Проверь Репозиторий VSCode, проверь Состояние проблемы, или документация для обновлений о поддержке Windows для просмотра изображений в терминале с sixel
.
Протоколы, совместимые с VSCode, для просмотра изображений с помощью встроенного терминала следующие sixel
и iTerm
. Это руководство продемонстрирует использование sixel
Протокол.
Процесс
Во-первых, ты должен включить настройки
terminal.integrated.enableImages
иterminal.integrated.gpuAcceleration
в VSCode.Установи
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() # (1)!
- Смотри параметры метода plot, чтобы узнать возможные аргументы для использования.
Now, use OpenCV to convert the
numpy.ndarray
наbytes
Данные. Затем используйio.BytesIO
чтобы сделать "файлоподобный" объект.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
который возвращается, необходим.
Создай
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() # (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
который возвращается, необходим. - Смотри параметры метода plot, чтобы узнать возможные аргументы для использования.
Наконечник
Тебе может понадобиться 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 ты найдешь на страницах документации по экспорту и режиму прогнозирования.