Meet YOLO26: next-gen vision AI.

Link to this sectionTài liệu Ultralytics: Sử dụng YOLO26 với SAHI để thực hiện Sliced Inference#

Mở SAHI để thực hiện Sliced Inference 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 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ẽ đi sâu vào SAHI là gì, tại sao sliced inference 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 object detection.

SAHI tiled inference for small objects

Link to this sectionGiớ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 object detection 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 chia nhỏ hình ảnh thành các lát (slices) dễ quản lý, chạy object detection 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 object detection, bao gồm dòng YOLO, qua đó mang lại sự linh hoạt đồng thời đảm bảo sử dụng tài nguyên tính toán một cách tối ưu.



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

Link to this sectionCá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 sửa đổi nhiều code.
  • 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 chạy quy trình 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 hộp phát hiện (detection boxes) bị chồng lấp trong quá trình ghép nối.

Link to this sectionSliced Inference là gì?#

Sliced Inference đề 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 (các lát), thực hiện object detection trên các lát này, sau đó biên dịch lại các lát để tái tạo vị trí đối tượng trên hình ảnh gốc. Kỹ thuật này vô giá trong các tình huống 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ể dẫn đến các vấn đề về bộ nhớ.

Link to this sectionLợi ích của Sliced Inference#

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

  • Bảo toàn chất lượng phát hiện: Vì mỗi lát được xử lý độc lập, nên không có sự suy giảm chất lượng của object detection, miễn là các lá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 object detection được mở rộng dễ dàng hơn 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

Link to this sectionCài đặt và Chuẩn bị#

Link to this sectionCà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

Link to this sectionNhập Module và Tải xuống Tài nguyên#

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

Link to this sectionInference tiêu chuẩn với YOLO26#

Link to this sectionKhởi tạo Model#

Bạn có thể khởi tạo model YOLO26 cho object detection 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'
)

Link to this sectionThực hiện Dự đoán Tiêu chuẩn#

Thực hiện inference tiêu chuẩn bằng cách sử dụ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)

Link to this sectionTrực quan hóa Kết quả#

Xuất và trực quan hóa các bounding box và mask đã 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()

Link to this sectionSliced Inference với YOLO26#

Thực hiện sliced inference 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()

Link to this sectionXử lý Kết quả Dự đoán#

SAHI cung cấp đối tượng PredictionResult, có thể được chuyển đổi thành 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 and COCO prediction formats
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]
Các định dạng xuất bổ sung

PredictionResult cũng có thể chuyển đổi các kết quả phát hiện thành các đố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 các gói tương ứng, vì vậy hãy cài đặt chúng trước bằng pip install imantics fiftyone.

Link to this sectionDự đoán theo lô (Batch Prediction)#

Để dự đoán theo lô 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ả inference tiêu chuẩn và sliced inference.

Link to this sectionTrích dẫn và Ghi nhận#

Nếu bạn sử dụng SAHI trong công việc nghiên cứu hoặc phát triển của mình, vui lòng trích dẫn bài báo gốc về SAHI 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 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 computer vision. Để biết thêm thông tin về SAHI và những người tạo ra nó, hãy truy cập SAHI GitHub repository.

Link to this sectionCâu hỏi thường gặp#

Link to this sectionLàm thế nào tôi có thể tích hợp YOLO26 với SAHI cho sliced inference trong object detection?#

Việc tích hợp Ultralytics YOLO26 với SAHI (Slicing Aided Hyper Inference) cho sliced inference giúp tối ưu hóa các tác vụ object detection trên hình ảnh độ phân giải cao bằng cách chia nhỏ chúng thành các lát dễ quản lý. Cách tiếp cận 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 đó, 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",
)

Để biết hướng dẫn chi tiết hơn, hãy tham khảo Hướng dẫn Sliced Inference của chúng tôi.

Link to this sectionTại sao tôi nên sử dụng SAHI với YOLO26 cho object detection trên hình ảnh lớn?#

Việc sử dụng SAHI với Ultralytics YOLO26 cho object detection 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 nhỏ hơn sẽ được xử lý nhanh hơn và tiêu tốn ít bộ nhớ hơn, giúp việc chạy các quy trình 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 hộp bị 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ụ object detection 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 sliced inference trong tài liệu của chúng tôi.

Link to this sectionTô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. Đâ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 đã chỉ định, sau đó bạn có thể tải hình ảnh để xem trong notebook hoặc ứng dụng của mình. Để có hướng dẫn chi tiết, hãy xem phần Inference Tiêu chuẩn.

Link to this sectionSAHI cung cấp những tính năng gì để cải thiện object detection với YOLO26?#

SAHI (Slicing Aided Hyper Inference) cung cấp một số tính năng bổ sung cho Ultralytics YOLO26 trong object detection:

  • Tích hợp liền mạch: SAHI dễ dàng tích hợp với các model YOLO, đòi hỏi sự điều chỉnh code ở mức tối thiểu.
  • Hiệu quả tài nguyên: Nó chia nhỏ các 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 hộp phát hiện bị 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.

Link to this sectionLàm thế nào tôi có thể xử lý các dự án inference quy mô lớn bằng YOLO26 và SAHI?#

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

  1. Cài đặt các thư viện cần thiết: Đảm bảo bạn có các phiên bản mới nhất của ultralytics và sahi.
  2. Cấu hình Sliced Inference: 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 theo Lô: Sử dụng các khả năng của SAHI để thực hiện dự đoán theo lô trên một thư mục hình ảnh, điều này giúp cải thiện hiệu suất.

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

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 theo lô (Batch Prediction) của chúng tôi.

Bình luận