Tài liệu Ultralytics: Sử dụng YOLO26 với SAHI cho suy luận cắt lát (Sliced Inference)

Mở SAHI cho suy luận cắt lát trong Colab

Chào mừng bạn đến với tài liệu Ultralytics về cách sử dụng YOLO26 với SAHI (Slicing Aided Hyper Inference). Hướng dẫn toàn diện này nhằm mục đích cung cấp cho bạn tất cả kiến thức cần thiết để triển khai SAHI cùng với YOLO26. Chúng ta sẽ tìm hiểu sâu về SAHI là gì, tại sao suy luận cắt lát lại quan trọng đối với các ứng dụng quy mô lớn và cách tích hợp các chức năng này với YOLO26 để nâng cao hiệu suất phát hiện đối tượng.

SAHI tiled inference for small objects

Giới thiệu về SAHI

SAHI (Slicing Aided Hyper Inference) là một thư viện sáng tạo được thiết kế để tối ưu hóa các thuật toán phát hiện đối tượng cho hình ảnh quy mô lớn và độ phân giải cao. Chức năng cốt lõi của nó nằm ở việc phân chia hình ảnh thành các lát cắt có thể quản lý, chạy phát hiện đối tượng trên từng lát cắt, sau đó ghép các kết quả lại với nhau. SAHI tương thích với nhiều mô hình phát hiện đối tượng, bao gồm dòng YOLO, từ đó mang lại sự linh hoạt trong khi vẫn đảm bảo tối ưu hóa việc sử dụng tài nguyên tính toán.



Watch: How to use SAHI with Ultralytics YOLO26 to Detect Small Objects | Slicing Aided Hyper Inference 🚀

Các tính năng chính của SAHI

  • Tích hợp liền mạch: SAHI tích hợp dễ dàng với các mô hình YOLO, nghĩa là bạn có thể bắt đầu cắt lát và phát hiện mà không cần sửa đổi nhiều mã.
  • Hiệu quả tài nguyên: Bằng cách chia nhỏ các hình ảnh lớn thành các phần nhỏ hơn, SAHI tối ưu hóa việc sử dụng bộ nhớ, cho phép bạn thực hiện phát hiện chất lượng cao trên phần cứng có tài nguyên hạn chế.
  • Độ chính xác cao: SAHI duy trì độ chính xác phát hiện bằng cách sử dụng các thuật toán thông minh để hợp nhất các khung phát hiện chồng lấp trong quá trình ghép nối.

Suy luận cắt lát (Sliced Inference) là gì?

Suy luận cắt lát đề cập đến thực tiễn chia nhỏ một hình ảnh lớn hoặc có độ phân giải cao thành các phân đoạn nhỏ hơn (lát cắt), tiến hành phát hiện đối tượng trên các lát cắt này, sau đó tổng hợp lại các lát cắt để tái tạo vị trí đối tượng trên hình ảnh gốc. Kỹ thuật này vô cùng giá trị trong các tình huống tài nguyên tính toán bị hạn chế hoặc khi làm việc với các hình ảnh có độ phân giải cực cao vốn có thể dẫn đến các vấn đề về bộ nhớ.

Lợi ích của suy luận cắt lát

  • Giảm gánh nặng tính toán: Các lát cắt hình ảnh nhỏ hơn sẽ được xử lý nhanh hơn và tiêu tốn ít bộ nhớ hơn, giúp hoạt động trơn tru hơn trên phần cứng cấp thấp.

  • Duy trì chất lượng phát hiện: Vì mỗi lát cắt được xử lý độc lập, nên không có sự giảm sút nào về chất lượng phát hiện đối tượng, miễn là các lát cắt đủ lớn để bao quát các đối tượng cần quan tâm.

  • Khả năng mở rộng nâng cao: Kỹ thuật này cho phép việc phát hiện đối tượng dễ dàng mở rộng trên các kích thước và độ phân giải hình ảnh khác nhau, làm cho nó trở nên lý tưởng cho nhiều ứng dụng từ hình ảnh vệ tinh đến chẩn đoán y tế.

YOLO26 without SAHIYOLO26 with SAHI
YOLO26 without SAHIYOLO26 with SAHI

Cài đặt và Chuẩn bị

Cài đặt

Để bắt đầu, hãy cài đặt các phiên bản mới nhất của SAHI và Ultralytics:

pip install -U ultralytics sahi

Nhập các Mô-đun và Tải xuống Tài nguyên

Dưới đây là cách tải xuống một số hình ảnh thử nghiệm:

from sahi.utils.file import download_from_url

# Download test images
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
    "demo_data/small-vehicles1.jpeg",
)
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/terrain2.png",
    "demo_data/terrain2.png",
)

Suy luận tiêu chuẩn với YOLO26

Khởi tạo Mô hình

Bạn có thể khởi tạo mô hình YOLO26 để phát hiện đối tượng như sau:

from sahi import AutoDetectionModel

detection_model = AutoDetectionModel.from_pretrained(
    model_type="ultralytics",
    model_path="yolo26n.pt",
    confidence_threshold=0.3,
    device="cpu",  # or 'cuda:0'
)

Thực hiện Dự đoán Tiêu chuẩn

Thực hiện suy luận tiêu chuẩn bằng đường dẫn hình ảnh.

from sahi.predict import get_prediction

result = get_prediction("demo_data/small-vehicles1.jpeg", detection_model)

result.export_visuals(export_dir="demo_data/", hide_conf=True)

Trực quan hóa Kết quả

Xuất và trực quan hóa các khung bao (bounding boxes) và mask được dự đoán:

from PIL import Image

# Open the predicted image
processed_image = Image.open("demo_data/prediction_visual.png")

# Display the predicted image
processed_image.show()

Suy luận cắt lát với YOLO26

Thực hiện suy luận cắt lát bằng cách chỉ định kích thước lát cắt và tỷ lệ chồng lấp:

from PIL import Image
from sahi.predict import get_sliced_prediction

result = get_sliced_prediction(
    "demo_data/small-vehicles1.jpeg",
    detection_model,
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2,
)

# Export results
result.export_visuals(export_dir="demo_data/", hide_conf=True)

# Open the predicted image
processed_image = Image.open("demo_data/prediction_visual.png")

# Display the predicted image
processed_image.show()

Xử lý Kết quả Dự đoán

SAHI cung cấp một đối tượng PredictionResult, có thể được chuyển đổi sang nhiều định dạng chú thích khác nhau:

# Access the object prediction list
object_prediction_list = result.object_prediction_list

# Convert to COCO annotation, COCO prediction, imantics, and fiftyone formats
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]
result.to_imantics_annotations()[:3]
result.to_fiftyone_detections()[:3]

Dự đoán hàng loạt (Batch Prediction)

Để dự đoán hàng loạt trên một thư mục hình ảnh:

from sahi.predict import predict

predict(
    model_type="ultralytics",
    model_path="yolo26n.pt",
    model_device="cpu",  # or 'cuda:0'
    model_confidence_threshold=0.4,
    source="path/to/dir",
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2,
)

Bây giờ bạn đã sẵn sàng sử dụng YOLO26 với SAHI cho cả suy luận tiêu chuẩn và suy luận cắt lát.

Trích dẫn và Ghi nhận

Nếu bạn sử dụng SAHI trong nghiên cứu hoặc công việc phát triển của mình, vui lòng trích dẫn bài báo SAHI gốc và ghi công các tác giả:

Trích dẫn
@article{akyon2022sahi,
  title={Slicing Aided Hyper Inference and Fine-tuning for Small Object Detection},
  author={Akyon, Fatih Cagatay and Altinuc, Sinan Onur and Temizel, Alptekin},
  journal={2022 IEEE International Conference on Image Processing (ICIP)},
  doi={10.1109/ICIP46576.2022.9897990},
  pages={966-970},
  year={2022}
}

Chúng tôi xin gửi lời cảm ơn đến nhóm nghiên cứu SAHI vì đã tạo ra và duy trì tài nguyên vô giá này cho cộng đồng thị giác máy tính. Để biết thêm thông tin về SAHI và những người tạo ra nó, hãy truy cập kho lưu trữ SAHI trên GitHub.

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

Làm thế nào tôi có thể tích hợp YOLO26 với SAHI cho suy luận cắt lát trong phát hiện đối tượng?

Việc tích hợp Ultralytics YOLO26 với SAHI (Slicing Aided Hyper Inference) cho suy luận cắt lát giúp tối ưu hóa các tác vụ phát hiện đối tượng của bạn trên các hình ảnh độ phân giải cao bằng cách phân chia chúng thành các lát cắt có thể quản lý được. Cách tiếp cận này giúp cải thiện việc sử dụng bộ nhớ và đảm bảo độ chính xác phát hiện cao. Để bắt đầu, bạn cần cài đặt các thư viện ultralytics và sahi:

pip install -U ultralytics sahi

Sau đó, tải xuống các hình ảnh thử nghiệm:

from sahi.utils.file import download_from_url

# Download test images
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
    "demo_data/small-vehicles1.jpeg",
)
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/terrain2.png",
    "demo_data/terrain2.png",
)

Để biết hướng dẫn chi tiết hơn, hãy tham khảo hướng dẫn Suy luận cắt lát của chúng tôi.

Tại sao tôi nên sử dụng SAHI với YOLO26 để phát hiện đối tượng trên hình ảnh lớn?

Sử dụng SAHI với Ultralytics YOLO26 để phát hiện đối tượng trên hình ảnh lớn mang lại một số lợi ích:

  • Giảm gánh nặng tính toán: Các lát cắt nhỏ hơn được xử lý nhanh hơn và tiêu tốn ít bộ nhớ hơn, giúp việc thực hiện các phát hiện chất lượng cao trên phần cứng có tài nguyên hạn chế trở nên khả thi.
  • Duy trì độ chính xác phát hiện: SAHI sử dụng các thuật toán thông minh để hợp nhất các khung chồng lấp, bảo toàn chất lượng phát hiện.
  • Khả năng mở rộng nâng cao: Bằng cách mở rộng các tác vụ phát hiện đối tượng trên các kích thước và độ phân giải hình ảnh khác nhau, SAHI trở nên lý tưởng cho nhiều ứng dụng khác nhau, chẳng hạn như phân tích hình ảnh vệ tinh và chẩn đoán y tế.

Tìm hiểu thêm về lợi ích của suy luận cắt lát trong tài liệu của chúng tôi.

Tôi có thể trực quan hóa kết quả dự đoán khi sử dụng YOLO26 với SAHI không?

Có, bạn có thể trực quan hóa kết quả dự đoán khi sử dụng YOLO26 với SAHI. Dưới đây là cách bạn có thể xuất và trực quan hóa kết quả:

from PIL import Image

result.export_visuals(export_dir="demo_data/", hide_conf=True)

processed_image = Image.open("demo_data/prediction_visual.png")

processed_image.show()

Lệnh này sẽ lưu các dự đoán đã được trực quan hóa vào thư mục được chỉ định, sau đó bạn có thể tải hình ảnh để xem trong notebook hoặc ứng dụng của mình. Để biết hướng dẫn chi tiết, hãy xem phần Suy luận tiêu chuẩn.

SAHI cung cấp những tính năng nào để cải thiện phát hiện đối tượng YOLO26?

SAHI (Slicing Aided Hyper Inference) cung cấp một số tính năng bổ sung cho Ultralytics YOLO26 để phát hiện đối tượng:

  • Tích hợp liền mạch: SAHI tích hợp dễ dàng với các mô hình YOLO, đòi hỏi sự điều chỉnh mã tối thiểu.
  • Hiệu quả tài nguyên: Nó phân chia các hình ảnh lớn thành các lát cắt nhỏ hơn, giúp tối ưu hóa việc sử dụng bộ nhớ và tốc độ.
  • Độ chính xác cao: Bằng cách hợp nhất hiệu quả các khung phát hiện chồng lấp trong quá trình ghép nối, SAHI duy trì độ chính xác phát hiện cao.

Để hiểu sâu hơn, hãy đọc về các tính năng chính của SAHI.

Làm thế nào để tôi xử lý các dự án suy luận quy mô lớn sử dụng YOLO26 và SAHI?

Để xử lý các dự án suy luận quy mô lớn sử dụng YOLO26 và SAHI, hãy tuân theo các thực tiễn tốt nhất sau đây:

  1. Cài đặt các thư viện cần thiết: Đảm bảo rằng bạn có phiên bản mới nhất của ultralytics và sahi.
  2. Cấu hình suy luận cắt lát: Xác định kích thước lát cắt và tỷ lệ chồng lấp tối ưu cho dự án cụ thể của bạn.
  3. Chạy dự đoán hàng loạt: Sử dụng các khả năng của SAHI để thực hiện dự đoán hàng loạt trên một thư mục hình ảnh, điều này giúp cải thiện hiệu quả.

Ví dụ về dự đoán hàng loạt:

from sahi.predict import predict

predict(
    model_type="ultralytics",
    model_path="path/to/yolo26n.pt",
    model_device="cpu",  # or 'cuda:0'
    model_confidence_threshold=0.4,
    source="path/to/dir",
    slice_height=256,
    slice_width=256,
    overlap_height_ratio=0.2,
    overlap_width_ratio=0.2,
)

Để biết các bước chi tiết hơn, hãy truy cập phần Dự đoán hàng loạt của chúng tôi.

Bình luận