Tài liệu Ultralytics: Sử dụng YOLO11 với SAHI để suy luận theo lát cắt
Chào mừng bạn đến với tài liệu Ultralytics về cách sử dụng YOLO11 với SAHI (Slicing Aided Hyper Inference - Suy luận Tăng cường Bằng Lát cắt). 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 YOLO11. Chúng ta sẽ đi sâu vào SAHI là gì, tại sao suy luận theo lát cắ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 YOLO11 để nâng cao hiệu suất phát hiện đối tượng.
Giới thiệu về SAHI
SAHI (Slicing Aided Hyper Inference - Suy luận Tăng cường Bằng Lát cắ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 cho hình ảnh có độ phân giải cao và quy mô lớn. Chức năng cốt lõi của nó nằm ở việc phân vùng hình ảnh thành các lát cắt dễ quản lý, chạy phát hiện đối tượng trên mỗi lát cắt, 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 cả dòng YOLO, do đó mang lại sự linh hoạt đồng thời đảm bảo sử dụng tối ưu tài nguyên tính toán.
Xem: Suy luận với SAHI (Slicing Aided Hyper Inference - Suy luận Tăng cường Bằng Lát cắt) sử dụng 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 các mô hình YOLO, 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 nhiều mã.
- 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 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 chồng chéo trong quá trình ghép.
Suy luận theo lát cắt là gì?
Suy luận theo lát cắt đề cập đến việc chia một hình ảnh lớn hoặc có độ phân giải cao thành các đ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 đó biên dịch 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 có 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 hình ảnh có độ phân giải cực cao mà nếu không có thể dẫn đến các vấn đề về bộ nhớ.
Lợi ích của suy luận theo lát cắt
-
Giảm gánh nặng tính toán: Các lát cắt hình ảnh nhỏ hơn xử lý nhanh hơn và chúng tiêu thụ ít bộ nhớ hơn, cho phé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ự suy 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 mở rộng 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 không có SAHI | YOLO11 có 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 mô-đun và tải xuống tài nguyên
Đây là cách nhập các mô-đun cần thiết và tải xuống mô hình YOLO11 và một số hình ảnh thử nghiệm:
from sahi.utils.file import download_from_url
from sahi.utils.ultralytics import download_yolo11n_model
# Download YOLO11 model
model_path = "models/yolo11n.pt"
download_yolo11n_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",
)
Suy luận tiêu chuẩn với YOLO11
Khởi tạo mô hình
Bạn có thể khởi tạo mô hình YOLO11 để phát hiện đối tượng như sau:
from sahi import AutoDetectionModel
detection_model = AutoDetectionModel.from_pretrained(
model_type="ultralytics",
model_path=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 tiêu chuẩn bằng cách sử dụng đường dẫn hình ảnh hoặc hình ảnh numpy.
from sahi.predict import get_prediction
from sahi.utils.cv import read_image
# With an image path
result = get_prediction("demo_data/small-vehicles1.jpeg", detection_model)
# With a numpy image
result_with_np_image = 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ạ được dự đoán:
from IPython.display import Image
result.export_visuals(export_dir="demo_data/")
Image("demo_data/prediction_visual.png")
Suy luận theo lát cắt với YOLO11
Thực hiện suy luận theo lát cắt bằng cách chỉ định kích thước lát cắt và tỷ lệ chồng lấp:
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 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
Để 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="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,
)
Vậy là xong! Bây giờ bạn đã được trang bị để sử dụng YOLO11 với SAHI cho cả suy luận tiêu chuẩn và suy luận theo lát cắt.
Trích dẫn và Lời cảm ơ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 SAHI gốc 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}
}
Chúng tôi xin gửi lời cảm ơn đến nhóm nghiên cứu SAHI vì đã tạo 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 GitHub.
Câu hỏi thường gặp
Làm cách nào để tích hợp YOLO11 với SAHI để suy luận theo lát cắt trong phát hiện đối tượng?
Tích hợp Ultralytics YOLO11 với SAHI (Slicing Aided Hyper Inference - Suy luận Tăng cường Bằng Lát cắt) để suy luận theo lát cắ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 hình ảnh có độ phân giải cao bằng cách phân vùng chúng thành các lát cắ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 mô hình YOLO11 và hình ảnh thử nghiệm:
from sahi.utils.file import download_from_url
from sahi.utils.ultralytics import download_yolo11n_model
# Download YOLO11 model
model_path = "models/yolo11n.pt"
download_yolo11n_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 về Suy luận theo Lát cắt (Sliced Inference) của chúng tôi.
Tại sao tôi nên sử dụng SAHI với YOLO11 để phát hiện đối tượng trên hình ảnh lớn?
Sử dụng SAHI với Ultralytics YOLO11 để phát hiện đối tượng trên ảnh lớn mang lại một số lợi ích:
- Giảm Tải Tính Toán: Các lát cắt nhỏ hơn xử lý nhanh hơn và tiêu thụ ít bộ nhớ hơn, giúp bạn có thể chạy các phát hiện chất lượng cao trên phần cứng với 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 hộp chồng chéo, 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 quy mô 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 theo lát cắ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 YOLO11 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 YOLO11 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 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 trực quan hóa vào thư mục đã chỉ định, sau đó bạn có thể tải hình ảnh để xem trong sổ tay hoặc ứng dụng của mình. Để có 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 khả năng phát hiện đối tượng YOLO11?
SAHI (Slicing Aided Hyper Inference) cung cấp một số tính năng bổ sung cho Ultralytics YOLO11 để 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 mô hình YOLO, 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 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 hộp phát hiện chồng chéo 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 cách nào để xử lý các dự án suy luận quy mô lớn bằng YOLO11 và SAHI?
Để xử lý các dự án suy luận quy mô lớn bằng YOLO11 và SAHI, hãy làm theo các phương pháp hay nhất sau:
- Cài Đặt Các Thư Viện Yêu Cầu: Đảm bảo rằng bạn có các phiên bản mới nhất của ultralytics và sahi.
- Cấu Hình Suy Luận Theo Lát Cắt: Xác định kích thước lát cắt và tỷ lệ chồng chéo tối ưu cho dự án cụ thể của bạn.
- Chạy Dự Đoán Hàng Loạt: Sử dụng 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ụ về dự đoán hàng loạt:
from sahi.predict import predict
predict(
model_type="ultralytics",
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.