Ultralytics YOLO27:

Sử dụng YOLO26 với SAHI cho suy luận cắt lát#

Open SAHI for Sliced Inference In Colab

Hướng dẫn này trình cách sử dụng YOLO26 với SAHI (Slicing Aided Hyper Inference). Chúng ta sẽ tìm hiểu sâu về bản chất của SAHI, lý do suy luận cắt lát rất 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.

Giới thiệu về SAHI#

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



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 model 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 chỉnh sửa nhiều code.
  • Sử dụng tài nguyên hiệu quả: Bằng cách chia 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 bounding box phát hiện chồng lấn trong quá trình ghép.

Suy luận cắt lát là gì?#

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

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

  • Giảm tải tính toán: Các lát hình ảnh nhỏ hơn được xử lý nhanh hơn và tiêu thụ ít bộ nhớ hơn, giúp vận hành mượt mà 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 xử lý độc lập, chất lượng phát hiện đối tượng không bị suy giảm, miễn là các lát đủ lớn để chứa các đối tượng cần quan tâm.

  • Nâng cao khả năng mở rộng: Kỹ thuật này cho phép dễ dàng mở rộng 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, phù hợp với nhiều ứng dụng, từ hình ảnh vệ tinh đến chẩn đoán y khoa.

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 phiên bản mới nhất của SAHI và Ultralytics:

pip install -U ultralytics sahi

Import module và tải xuống tài nguyên#

Sau đây là cách tải xuống một số hình ảnh kiểm thử:

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 Model#

Bạn có thể khởi tạo một model 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ả#

Export và trực quan hóa các bounding box 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 và tỷ lệ chồng lấn:

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 annotation khác nhau:

# Access the object prediction list
object_prediction_list = result.object_prediction_list

# Convert to COCO annotation and COCO prediction formats
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]
Các định dạng export bổ sung

PredictionResult cũng có thể chuyển đổi các detection thành đối tượng imanticsFiftyOne bằng result.to_imantics_annotations()result.to_fiftyone_detections(). Các phương thức này yêu cầu những package tương ứng, vì vậy hãy cài đặt chúng trước bằng pip install imantics fiftyone.

Dự đoán theo batch#

Để dự đoán theo batch 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,
)

Giờ đây, 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 đóng góp#

Nếu sử dụng SAHI trong công việc nghiên cứu hoặc phát triển, vui lòng trích dẫn bài báo SAHI gốc và ghi nhận 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 cảm ơn nhóm nghiên cứu SAHI đã 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à các tác giả, hãy truy cập repository SAHI trên GitHub.

FAQ#

  • Tích hợp Ultralytics YOLO26 với SAHI (Suy luận siêu cấp được hỗ trợ bằng cắt lát) 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 trên hình ảnh độ phân giải cao bằng cách chia chúng thành các lát dễ xử lý. Phương pháp này 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 đó, hãy tải xuống các hình ảnh kiểm thử:

    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",
    )

    Để xem 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.

  • 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 tải tính toán: Các lát nhỏ hơn được xử lý nhanh hơn và tiêu thụ ít bộ nhớ hơn, giúp khả thi hóa việc 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ế.
    • 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 box chồng lấn, qua đó duy trì chất lượng phát hiện.
    • Nâng cao khả năng mở rộng: Bằng cách mở rộng các tác vụ phát hiện đối tượng trên nhiều 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 như phân tích hình ảnh vệ tinh và chẩn đoán y khoa.

    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.

  • Có, bạn có thể trực quan hóa kết quả dự đoán khi sử dụng YOLO26 với SAHI. Sau đây là cách export 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 đã 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. Để xem hướng dẫn chi tiết, hãy tham khảo phần Suy luận tiêu chuẩn.

  • SAHI (Suy luận siêu cấp được hỗ trợ bằng cắt lát) cung cấp một số tính năng bổ trợ cho Ultralytics YOLO26 trong việc phát hiện đối tượng:

    • Tích hợp liền mạch: SAHI dễ dàng tích hợp với các model YOLO, chỉ yêu cầu điều chỉnh code tối thiểu.
    • Sử dụng tài nguyên hiệu quả: SAHI chia hình ảnh lớn thành các lá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 bounding box phát hiện chồng lấn trong quá trình ghép, 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.

  • Để xử lý các dự án suy luận quy mô lớn bằng YOLO26 và SAHI, hãy tuân theo các phương pháp tốt nhất sau:

    1. Cài đặt các thư viện cần thiết: Đảm bảo bạn đã cài đặt 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 và tỷ lệ chồng lấn tối ưu cho dự án cụ thể của bạn.
    3. Chạy dự đoán theo batch: Sử dụng khả năng của SAHI để thực hiện dự đoán theo batch trên một thư mục hình ảnh, qua đó cải thiện hiệu quả.

    Ví dụ về dự đoán theo batch:

    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,
    )

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

Bình luận