Bỏ qua nội dung

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

Chào mừng đến với Ultralytics tài liệu hướng dẫn cách sử dụng YOLO11 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ả các kiến thức cần thiết mà bạn sẽ cần để triển khai SAHI cùng với YOLO11 . Chúng tôi sẽ đi sâu tìm hiểu 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 YOLO11 để nâng cao hiệu suất phát hiện đối tượng .

Tổng quan về suy luận cắt lát SAHI

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 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 có thể quản lý được, chạy phát hiện đối tượng trên từng 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 chuỗi, do đó mang lại sự linh hoạt đồng thời đảm bảo sử dụng tối ưu các nguồn tài nguyên tính toán.



Đồng hồ: Suy luận với SAHI (Siêu suy luận hỗ trợ cắt lá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 YOLO mô hình, 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ả sử dụng 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 chức năng 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 nối.

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

Suy luận cắt lát đề cập đến việc 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 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 hữu ích 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 các hình ảnh có độ phân giải cực cao, nếu không 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 ảnh nhỏ hơn được xử lý nhanh hơn và 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.

  • Chất lượng phát hiện được bảo toàn : Vì mỗi lát cắt được xử lý độc lập nên 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 để thu được 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 vật thể dễ dàng hơn trên nhiều kích thước và độ phân giải hình ảnh khác nhau, khiến 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ế.

YOLO11 không có SAHI YOLO11 với SAHI
YOLO11 không có SAHI YOLO11 với 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

Nhập mô-đun và tải xuống tài nguyên

Sau đây là cách nhập các mô-đun cần thiết và tải xuống YOLO11 mô hình và một số hình ảnh thử nghiệm:

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

Suy luận chuẩn với YOLO11

Khởi tạo mô hình

Bạn có thể khởi tạo một YOLO11 mô hình phát hiện đối tượng như thế này:

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

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

Hình dung 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:

result.export_visuals(export_dir="demo_data/")
Image("demo_data/prediction_visual.png")

Suy luận cắt lát với 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 lấn:

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

Vậy là xong! Bây giờ bạn đã được trang bị để sử dụng YOLO11 với SAHI cho cả suy luận chuẩn và suy luận cắt lát.

Trích dẫn và Lời cảm ơn

Nếu bạn sử dụng SAHI trong công trình 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 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 đã tạo ra và duy trì nguồn 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 sáng tạo ra nó, hãy truy cập kho lưu trữ GitHub của SAHI .

CÂU HỎI THƯỜNG GẶP

Làm thế nào tôi có thể 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 cắt lát 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 có thể quản lý được. 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 ultralytics và thư viện sahi:

pip install -U ultralytics sahi

Sau đó, tải xuống một YOLO11 hình ảnh mô hình và thử nghiệm:

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 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 vật thể trên hình ảnh lớn?

Sử dụng SAHI với Ultralytics YOLO11 để 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 xử lý nhanh hơn và tiêu thụ ít bộ nhớ hơn, giúp khả thi khi chạy 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ế.
  • 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, 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 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 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ể hình dung kết quả dự đoán khi sử dụng YOLO11 với SAHI?

Có, bạn có thể hình dung kết quả dự đoán khi sử dụng YOLO11 với SAHI. Sau đâ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 được hình dung vào thư mục đã chỉ định và sau đó bạn có thể tải hình ảnh để xem trong sổ tay 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 .

SAHI cung cấp những tính năng nào để cải thiện YOLO11 phát hiện vật thể?

SAHI (Slicing Aided Hyper Inference) cung cấp một số tính năng bổ sung 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 YOLO các mô hình, yêu cầu điều chỉnh mã tối thiểu.
  • Hiệu quả sử dụng tài nguyên : Phân chia hình ảnh lớn thành các phần nhỏ hơn, giúp tối ưu hóa tốc độ và sử dụng bộ nhớ.
  • Độ 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.

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

Để xử lý các dự án suy luận quy mô lớn bằng cách sử dụng YOLO11 và SAHI, hãy thực hiện các biện pháp tốt nhất sau:

  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 theo lát cắt : Xác định kích thước lát cắ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 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 theo lô:

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.

📅 Được tạo ra cách đây 1 năm ✏️ Đã cập nhật cách đây 2 tháng

Bình luận