Xem kết quả suy luận trong một thiết bị đầu cuối
Hình ảnh từ trang web libsixel .
Động lực
Khi kết nối với máy từ xa, thông thường không thể hiển thị kết quả hình ảnh hoặc yêu cầu di chuyển dữ liệu sang thiết bị cục bộ có GUI. Thiết bị đầu cuối tích hợp VSCode cho phép hiển thị trực tiếp hình ảnh. Đây là một minh chứng ngắn về cách sử dụng điều này kết hợp với ultralytics
với Kết quả dự đoán.
Cảnh báo
Chỉ tương thích với Linux và MacOS. Kiểm tra VSCode Khokiểm Tình trạng vấn đềhoặc tư liệu để cập nhật về hỗ trợ Windows để xem hình ảnh trong thiết bị đầu cuối với sixel
.
Các giao thức tương thích với VSCode để xem hình ảnh bằng thiết bị đầu cuối tích hợp là: sixel
và iTerm
. Hướng dẫn này sẽ trình bày việc sử dụng sixel
Protocol.
Quá trình
-
Trước tiên, bạn phải bật cài đặt
terminal.integrated.enableImages
vàterminal.integrated.gpuAcceleration
trong VSCode.
-
Cài đặt
python-sixel
trong môi trường ảo của bạn. Đây là một nĩa củaPySixel
thư viện, không còn được duy trì. -
Nhập các thư viện liên quan
-
Tải một mô hình và thực hiện suy luận, sau đó vẽ kết quả và lưu trữ trong một biến. Xem thêm về đối số suy luận và làm việc với kết quả trên trang chế độ dự đoán .
from ultralytics import YOLO # Load a model model = YOLO("yolov8n.pt") # Run inference on an image results = model.predict(source="ultralytics/assets/bus.jpg") # Plot inference results plot = results[0].plot() #(1)!
- Xem các tham số phương thức vẽ để xem các đối số có thể sử dụng.
-
Bây giờ, sử dụng OpenCV để chuyển đổi
numpy.ndarray
đếnbytes
dữ liệu. Sau đó sử dụngio.BytesIO
để tạo một đối tượng "giống như tệp".# Results image as bytes im_bytes = cv.imencode( ".png", #(1)! plot, )[1].tobytes() #(2)! # Image bytes as a file-like object mem_file = io.BytesIO(im_bytes)
- Cũng có thể sử dụng các tiện ích mở rộng hình ảnh khác.
- Chỉ đối tượng tại index
1
Đó là trả lại là cần thiết.
-
Tạo một
SixelWriter
phiên bản, và sau đó sử dụng.draw()
phương pháp vẽ hình ảnh trong thiết bị đầu cuối.
Kết quả suy luận ví dụ
Nguy cơ
Sử dụng ví dụ này với video hoặc khung GIF động chưa được thử nghiệm. Cố gắng tự chịu rủi ro.
Ví dụ về mã đầy đủ
import io
import cv2 as cv
from ultralytics import YOLO
from sixel import SixelWriter
# Load a model
model = YOLO("yolov8n.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 = cv.imencode(
".png", #(1)!
plot,
)[1].tobytes() #(2)!
mem_file = io.BytesIO(im_bytes)
w = SixelWriter()
w.draw(mem_file)
- Cũng có thể sử dụng các tiện ích mở rộng hình ảnh khác.
- Chỉ đối tượng tại index
1
Đó là trả lại là cần thiết. - Xem các tham số phương thức vẽ để xem các đối số có thể sử dụng.
Mẹo
Bạn có thể cần sử dụng clear
để "xóa" chế độ xem của hình ảnh trong thiết bị đầu cuối.