Ultralytics Docs: Using YOLO11 with SAHI for Sliced Inference
Welcome to the Ultralytics documentation on how to use YOLO11 with SAHI (Slicing Aided Hyper Inference). This comprehensive guide aims to furnish you with all the essential knowledge you'll need to implement SAHI alongside YOLO11. We'll deep-dive into what SAHI is, why sliced inference is critical for large-scale applications, and how to integrate these functionalities with YOLO11 for enhanced object detection performance.
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 trong việc phân vùng hình ảnh thành các lát có thể quản lý được, chạy phát hiện đối tượng trên mỗi lát cắt và sau đó ghép các kết quả lại với nhau. SAHI tương thích với một loạt các mô hình phát hiện đối tượng, bao gồm YOLO hàng loạt, do đó mang lại sự linh hoạt trong khi vẫn đảm bảo sử dụng tối ưu các tài nguyên tính toán.
Xem: Inference with SAHI (Slicing Aided Hyper Inference) using Ultralytics YOLO11
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 YOLO Các mô hình, có nghĩa là bạn có thể bắt đầu cắt và phát hiện mà không cần sửa đổi mã nhiều.
- Hiệu quả tài nguyên: Bằng cách chia nhỏ 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 phát hiện chất lượng cao trên phần cứng với tài nguyên hạn chế.
- High Accuracy: SAHI maintains the detection accuracy by employing smart algorithms to merge overlapping detection boxes during the stitching process.
Suy luận cắt lát là gì?
Suy luận cắt lát đề cập đến việc thực hành chia nhỏ 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), tiến hành phát hiện đối tượng trên các lát cắt này và sau đó biên dịch lại các lát để tái tạo lại các vị trí đối tượng trên hình ảnh gốc. Kỹ thuật này là vô giá trong các tình huống mà tài nguyên tính toán bị hạn chế hoặc khi làm việc với hình ảnh có độ phân giải cực cao 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 hình ảnh nhỏ hơn sẽ xử lý nhanh hơn và chúng tiêu thụ ít bộ nhớ hơn, cho phép hoạt động mượt mà hơn trên phần cứng cấp thấp hơn.
-
Chất lượng phát hiện được bảo quản: Vì mỗi lát cắt được xử lý độc lập, không làm giảm chất lượng phát hiện đối tượng, miễn là các lát cắt đủ lớn để chụp các đối tượng quan tâm.
-
Khả năng mở rộng nâng cao: Kỹ thuật này cho phép phát hiện đối tượng dễ dàng được thu nhỏ hơn trên các kích thước và độ phân giải khác nhau của hình ảnh, làm cho nó trở nên lý tưởng cho một loạt các ứng dụng từ hình ảnh vệ tinh đến chẩn đoán y tế.
YOLO11 without SAHI | YOLO11 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:
Nhập mô-đun và tải xuống tài nguyên
Here's how to import the necessary modules and download a YOLO11 model and some test images:
from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model
# Download YOLO11 model
model_path = "models/yolo11s.pt"
download_yolov8s_model(model_path)
# 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",
)
Standard Inference with YOLO11
Khởi tạo mô hình
You can instantiate a YOLO11 model for object detection like this:
from sahi import AutoDetectionModel
detection_model = AutoDetectionModel.from_pretrained(
model_type="yolov8",
model_path=yolov8_model_path,
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 chuẩn bằng cách sử dụng đường dẫn hình ảnh hoặc hình ảnh tê.
from sahi.predict import get_prediction
# With an image path
result = get_prediction("demo_data/small-vehicles1.jpeg", detection_model)
# With a numpy image
result = get_prediction(read_image("demo_data/small-vehicles1.jpeg"), detection_model)
Trực quan hóa kết quả
Xuất và trực quan hóa các hộp giới hạn và mặt nạ dự đoán:
Sliced Inference with YOLO11
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 chéo:
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,
)
Xử lý kết quả dự đoán
SAHI cung cấp một PredictionResult
đối tượng, có thể được chuyển đổi thành các đị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
Để 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="yolov8",
model_path="path/to/yolo11n.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,
)
That's it! Now you're equipped to use YOLO11 with SAHI for both standard and sliced inference.
Trích dẫn và xác 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 của SAHI và ghi nhận các tác giả:
@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}
}
We extend our thanks to the SAHI research group for creating and maintaining this invaluable resource for the computer vision community. For more information about SAHI and its creators, visit the SAHI GitHub repository.
FAQ
How can I integrate YOLO11 with SAHI for sliced inference in object detection?
Integrating Ultralytics YOLO11 with SAHI (Slicing Aided Hyper Inference) for sliced inference optimizes your object detection tasks on high-resolution images by partitioning them into manageable slices. This approach improves memory usage and ensures high detection accuracy. To get started, you need to install the ultralytics and sahi libraries:
Then, download a YOLO11 model and test images:
from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model
# Download YOLO11 model
model_path = "models/yolo11s.pt"
download_yolov8s_model(model_path)
# Download test images
download_from_url(
"https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
"demo_data/small-vehicles1.jpeg",
)
Để 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.
Why should I use SAHI with YOLO11 for object detection on large images?
Using SAHI with Ultralytics YOLO11 for object detection on large images offers several benefits:
- Giảm gánh nặng tính toán: Các lát nhỏ hơn sẽ xử lý nhanh hơn và tiêu thụ ít bộ nhớ hơn, giúp việc chạy phát hiện chất lượng cao trên phần cứng với 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 chồng chéo, duy trì 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 các ứ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.
Can I visualize prediction results when using YOLO11 with SAHI?
Yes, you can visualize prediction results when using YOLO11 with SAHI. Here's how you can export and visualize the results:
from IPython.display import Image
result.export_visuals(export_dir="demo_data/")
Image("demo_data/prediction_visual.png")
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 và sau đó bạn có thể tải hình ảnh để xem nó trong sổ ghi chép 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 chuẩn.
What features does SAHI offer for improving YOLO11 object detection?
SAHI (Slicing Aided Hyper Inference) offers several features that complement Ultralytics YOLO11 for object detection:
- Tích hợp liền mạch: SAHI dễ dàng tích hợp với YOLO mô hình, yêu cầu điều chỉnh mã tối thiểu.
- Hiệu quả tài nguyên: Nó phân vùng 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 kết hợp hiệu quả các hộp phát hiện chồng chéo trong quá trình khâu, 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.
How do I handle large-scale inference projects using YOLO11 and SAHI?
To handle large-scale inference projects using YOLO11 and SAHI, follow these best practices:
- Cài đặt thư viện bắt buộc: Đảm bảo rằng bạn có các phiên bản mới nhất của ultralytics và sahi.
- Định cấu hình suy luận cắt lát: Xác định kích thước lát cắt tối ưu và tỷ lệ chồng chéo cho dự án cụ thể của bạn.
- 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, giúp cải thiện hiệu quả.
Ví dụ để dự đoán hàng loạt:
from sahi.predict import predict
predict(
model_type="yolov8",
model_path="path/to/yolo11n.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.