Bỏ để qua phần nội dung

Xem kết quả suy luận trong một thiết bị đầu cuối

Ví dụ thứ sáu về hình ảnh trong Terminal

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 Kho lưu trữ VSCodekiể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à: sixeliTerm. Hướng dẫn này sẽ trình bày việc sử dụng sixel Protocol.

Quá trình

  1. Trước 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": false
    

    VSCode bật cài đặt hình ảnh thiết bị đầu cuối

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

    pip install sixel
    
  3. 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)!
    
    1. Xem các tham số phương thức vẽ để xem các đối số có thể sử dụng.
  4. Bây giờ, sử dụng OpenCV để chuyển đổi numpy.ndarray đến bytes dữ liệu. Sau đó sử dụng io.BytesIO để tạo một đối tượng "giống 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. Cũng có thể sử dụng các tiện ích mở rộng hình ảnh khác.
    2. Chỉ đối tượng tại index 1 Đó là trả lại là cần thiết.
  5. 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.

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

Kết quả suy luận ví dụ

Xem hình ảnh trong Terminal

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
from sixel import SixelWriter

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()  # (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. Cũng có thể sử dụng các tiện ích mở rộng hình ảnh khác.
  2. Chỉ đối tượng tại index 1 Đó là trả lại là cần thiết.
  3. 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.

FAQ

Làm thế nào tôi có thể xem YOLO kết quả suy luận trong một thiết bị đầu cuối VSCode trên macOS hoặc Linux?

Để xem YOLO kết quả suy luận trong thiết bị đầu cuối VSCode trên macOS hoặc Linux, hãy làm theo các bước sau:

  1. Bật 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 của bạn YOLO Mô hình hóa và chạy suy luận:

    from ultralytics import YOLO
    
    model = YOLO("yolov8n.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 thiết bị đầu cuối:

    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ó khả năng đầu cuối gốc tương thích với đồ họa sixel. Hỗ trợ Windows cho đồ họa đầu cuối sử dụng sixel vẫn đang được phát triển. Để biết các bản cập nhật về tính tương thích của Windows, hãy kiểm tra tài liệutrạng thái Vấn đề VSCode.

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

Nếu bạn gặp sự cố khi hiển thị hình ảnh trong thiết bị đầu cuối 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 chuyển đổi dữ liệu hình ảnh và mã vẽ của bạn để tìm lỗi. Chẳng hạn:

    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 pháp cốt truyện để được hướng dẫn thêm.

Có thể YOLO Hiển thị kết quả suy luận video trong thiết bị đầu cuối bằng sixel?

Hiển thị kết quả suy luận video hoặc khung GIF động bằng sixel trong thiết bị đầu cuối 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 tính tương thích. Bạn tự chịu rủi ro khi thử kết quả video, lưu ý đến các hạn chế về hiệu suất. Để biết thêm thông tin về vẽ kết quả suy luận, hãy truy cập trang chế độ dự đoán .

Làm cách 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ó những điều cần thiết Python và phụ thuộc hệ thống.

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

  4. Kiểm tra kỹ mã của bạn để tìm các lỗi tiềm ẩn, cụ thể 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 khi làm việc với YOLO Mô hình và tích hợp Sixel, hãy xem các trang tài liệu về chế độ xuấtdự đoán .



Đã tạo 2024-03-09, Cập nhật 2024-07-05
Tác giả: glenn-jocher (6), IvorZhu331 (1), Burhan-Q (1)

Ý kiến