Chuyển đến nội dung

Xem kết quả suy luận trong Terminal

Ví dụ Sixel về hình ảnh trong Terminal

Hình ảnh từ trang web libsixel.

Động lực

Khi kết nối với một máy từ xa, thông thường việc trực quan hóa kết quả hình ảnh là không thể hoặc yêu cầu di chuyển dữ liệu đến một thiết bị cục bộ có GUI. Terminal tích hợp VSCode cho phép hiển thị trực tiếp hình ảnh. Đây là một trình diễn 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 Kho lưu trữ VSCode, hãy kiểm tra Trạng thái sự cố, hoặc tài liệu để cập nhật về hỗ trợ Windows để xem hình ảnh trong terminal 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à sixeliTerm. Hướng dẫn này sẽ trình bày cách sử dụng sixel giao thức.

Xử lý

  1. Đầu tiên, bạn phải bật cài đặt terminal.integrated.enableImagesterminal.integrated.gpuAcceleration trong VSCode.

    "terminal.integrated.gpuAcceleration": "auto" # "auto" is default, can also use "on"
    "terminal.integrated.enableImages": true
    

    Cài đặt VSCode cho phép hình ảnh đầu cuối

  2. Cài đặt python-sixel thư viện trong môi trường ảo của bạn. Đây là một Fork của PySixel thư viện, không còn được duy trì nữa.

    pip install sixel
    
  3. Tải một mô hình và thực hiện suy luận, sau đó vẽ đồ thị kết quả và lưu trữ trong một biến. Xem thêm về các đố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("yolo11n.pt")
    
    # Run inference on an image
    results = model.predict(source="ultralytics/assets/bus.jpg")
    
    # Plot inference results
    plot = results[0].plot()  # (1)!
    
    1. Xem các tham số phương thức vẽ đồ thị để xem các đối số có thể sử dụng.
  4. Bây giờ, hãy sử dụng OpenCV để chuyển đổi np.ndarray đến bytes dữ liệu. Sau đó sử dụng io.BytesIO để tạo một đối tượng "tương tự như tệp".

    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. Bạn cũng có thể sử dụng các phần mở rộng hình ảnh khác.
    2. Chỉ đối tượng tại index 1 được trả về là cần thiết.
  5. Tạo một SixelWriter instance và sau đó sử dụng .draw() phương thức để vẽ hình ảnh trong terminal.

    from sixel import SixelWriter
    
    # Create sixel writer object
    w = SixelWriter()
    
    # Draw the sixel image in the terminal
    w.draw(mem_file)
    

Ví dụ: Kết Quả Suy Luận

Xem ảnh trong Terminal

Nguy hiểm

Việc sử dụng ví dụ này với video hoặc khung hình GIF động chưa được thử nghiệm. Hãy thử nghiệm có rủi ro riêng.

Ví dụ mã đầy đủ

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. Bạn cũng có thể sử dụng các phần mở rộng hình ảnh khác.
  2. Chỉ đối tượng tại index 1 được trả về là cần thiết.
  3. Xem các tham số phương thức vẽ đồ thị để 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 hình ảnh trong terminal.

Câu hỏi thường gặp

Làm thế nào để xem kết quả suy luận YOLO trong terminal VSCode trên macOS hoặc Linux?

Để xem kết quả suy luận YOLO trong một terminal VSCode trên macOS hoặc Linux, hãy làm theo các bước sau:

  1. Bật các cài đặt VSCode cần thiết:

    "terminal.integrated.enableImages": true
    "terminal.integrated.gpuAcceleration": "auto"
    
  2. Cài đặt thư viện sixel:

    pip install sixel
    
  3. Tải mô hình YOLO của bạn và chạy suy luận:

    from ultralytics import YOLO
    
    model = YOLO("yolo11n.pt")
    results = model.predict(source="path_to_image")
    plot = results[0].plot()
    
  4. Chuyển đổi hình ảnh kết quả suy luận thành byte và hiển thị nó trong terminal:

    import io
    
    import cv2
    from sixel import SixelWriter
    
    im_bytes = cv2.imencode(".png", plot)[1].tobytes()
    mem_file = io.BytesIO(im_bytes)
    SixelWriter().draw(mem_file)
    

Để biết thêm chi tiết, hãy truy cập trang chế độ dự đoán.

Tại sao giao thức sixel chỉ hoạt động trên Linux và macOS?

Giao thức sixel hiện chỉ được hỗ trợ trên Linux và macOS vì các nền tảng này có các khả năng terminal gốc tương thích với đồ họa sixel. Hỗ trợ Windows cho đồ họa terminal bằng sixel vẫn đang được phát triển. Để biết thông tin cập nhật về khả năng tương thích của Windows, hãy kiểm tra trạng thái Sự cố VSCodetài liệu.

Điều gì xảy ra nếu tôi gặp sự cố khi hiển thị hình ảnh trong terminal VSCode?

Nếu bạn gặp sự cố khi hiển thị hình ảnh trong terminal VSCode bằng sixel:

  1. Đảm bảo các cài đặt cần thiết trong VSCode được bật:

    "terminal.integrated.enableImages": true
    "terminal.integrated.gpuAcceleration": "auto"
    
  2. Xác minh cài đặt thư viện sixel:

    pip install sixel
    
  3. Kiểm tra lỗi trong mã chuyển đổi và vẽ đồ thị dữ liệu hình ảnh của bạn. Ví dụ:

    import io
    
    import cv2
    from sixel import SixelWriter
    
    im_bytes = cv2.imencode(".png", plot)[1].tobytes()
    mem_file = io.BytesIO(im_bytes)
    SixelWriter().draw(mem_file)
    

Nếu sự cố vẫn tiếp diễn, hãy tham khảo kho lưu trữ VSCode và truy cập phần tham số phương thức vẽ đồ thị để được hướng dẫn thêm.

YOLO có thể hiển thị kết quả suy luận video trong terminal bằng sixel không?

Việc hiển thị kết quả suy luận video hoặc khung GIF động bằng sixel trong terminal hiện chưa được kiểm tra và có thể không được hỗ trợ. Chúng tôi khuyên bạn nên bắt đầu với hình ảnh tĩnh và xác minh khả năng tương thích. Hãy thử nghiệm với kết quả video một cách thận trọng, lưu ý đến các hạn chế về hiệu suất. Để biết thêm thông tin về việc vẽ đồ thị kết quả suy luận, hãy truy cập trang chế độ dự đoán.

Làm thế nào để khắc phục sự cố với python-sixel thư viện?

Để khắc phục sự cố với python-sixel thư viện:

  1. Đảm bảo thư viện được cài đặt chính xác trong môi trường ảo của bạn:

    pip install sixel
    
  2. Xác minh rằng bạn có các phụ thuộc Python và hệ thống cần thiết.

  3. Tham khảo kho lưu trữ python-sixel GitHub để biết thêm tài liệu và hỗ trợ từ cộng đồng.

  4. Kiểm tra kỹ mã của bạn để tìm các lỗi tiềm ẩn, đặc biệt là việc sử dụng SixelWriter và các bước chuyển đổi dữ liệu hình ảnh.

Để được hỗ trợ thêm về cách làm việc với các mô hình YOLO và tích hợp sixel, hãy xem các trang tài liệu về xuấtchế độ dự đoán.



📅 Đã tạo 1 năm trước ✏️ Đã cập nhật 1 tháng trước

Bình luận