Skip to content

Ultralytics 文档:使用 YOLO11 与 SAHI 进行分片推理

欢迎来到 Ultralytics 关于如何使用 YOLO11 与 SAHI(切片辅助超推理)的文档。本综合指南旨在为您提供实施 SAHI 与 YOLO11 所需的所有关键知识。我们将深入探讨 SAHI 是什么,为什么分片推理对大规模应用至关重要,以及如何将这些功能与 YOLO11 集成以提高目标检测性能。

SAHI 分片推理概述

SAHI 简介

SAHI(切片辅助超推理)是一个创新库,旨在优化大规模和高分辨率图像的目标检测算法。其核心功能在于将图像分割成可管理的切片,对每个切片运行目标检测,然后将结果拼接回原图。SAHI 兼容一系列目标检测模型,包括 YOLO 系列,从而在确保计算资源优化使用的同时提供灵活性。



观看: 使用 Ultralytics YOLO11 进行 SAHI(切片辅助超推理)推理

SAHI 的主要特点

  • 无缝集成:SAHI 与 YOLO 模型无缝集成,这意味着您可以开始切片和检测,而无需大量代码修改。
  • 资源效率:通过将大图像分解成小部分,SAHI 优化了内存使用,使您能够在资源有限的硬件上运行高质量的检测。
  • 准确性:SAHI 通过在拼接过程中使用智能算法合并重叠的检测框,保持了检测的准确性。

什么是分片推理?

分片推理指的是将大图像或高分辨率图像细分为更小的片段(切片),对这些切片进行目标检测,然后将切片重新编译以在原始图像上重建目标位置。这种技术在计算资源有限或处理可能导致内存问题的高分辨率图像时非常有价值。

分片推理的好处

  • 减少计算负担:较小的图像切片处理速度更快,消耗的内存更少,从而在低端硬件上实现更流畅的操作。
  • 保持检测质量:由于每个切片独立处理,只要切片足够大以捕捉感兴趣的对象,目标检测的质量就不会降低。
  • 增强可扩展性:该技术允许目标检测更容易地扩展到不同大小和分辨率的图像,非常适合从卫星图像到医学诊断的广泛应用。
不使用 SAHI 的 YOLO11 使用 SAHI 的 YOLO11
不使用 SAHI 的 YOLO11 使用 SAHI 的 YOLO11

安装和准备

安装

要开始,请安装最新版本的 SAHI 和 Ultralytics:

pip install -U ultralytics sahi

导入模块和下载资源

以下是如何导入必要的模块并下载 YOLO11 模型和一些测试图像:

from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model

# 下载 YOLO11 模型
model_path = "models/yolo11s.pt"
download_yolov8s_model(model_path)

# 下载测试图像
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",
)

使用 YOLO11 的标准推理

实例化模型

您可以像这样实例化一个用于目标检测的YOLO11模型:

from sahi import AutoDetectionModel

detection_model = AutoDetectionModel.from_pretrained(
    model_type="yolov8",
    model_path=yolov8_model_path,
    confidence_threshold=0.3,
    device="cpu",  # 或 'cuda:0'
)

执行标准预测

使用图像路径或numpy图像执行标准推理。

from sahi.predict import get_prediction

# 使用图像路径
result = get_prediction("demo_data/small-vehicles1.jpeg", detection_model)

# 使用numpy图像
result = get_prediction(read_image("demo_data/small-vehicles1.jpeg"), detection_model)

可视化结果

导出并可视化预测的边界框和掩码:

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

使用YOLO11进行切片推理

通过指定切片尺寸和重叠比例执行切片推理:

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

处理预测结果

SAHI提供了一个PredictionResult对象,可以将其转换为各种注释格式:

# 访问对象预测列表
object_prediction_list = result.object_prediction_list

# 转换为COCO注释、COCO预测、imantics和fiftyone格式
result.to_coco_annotations()[:3]
result.to_coco_predictions(image_id=1)[:3]
result.to_imantics_annotations()[:3]
result.to_fiftyone_detections()[:3]

批量预测

对图像目录进行批量预测:

from sahi.predict import predict

predict(
    model_type="yolov8",
    model_path="path/to/yolo11n.pt",
    model_device="cpu",  # 或 '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,
)

就是这样!现在您已经准备好使用YOLO11和SAHI进行标准和切片推理。

引用和致谢

如果您在研究或开发工作中使用SAHI,请引用原始的SAHI论文并感谢作者:

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

我们感谢SAHI研究小组为计算机视觉社区创建和维护这一宝贵资源。有关SAHI及其创建者的更多信息,请访问SAHI GitHub仓库

常见问题

如何在目标检测中将YOLO11与SAHI集成以进行切片推理?

将Ultralytics YOLO11与SAHI(切片辅助超推理)集成以进行切片推理,通过将高分辨率图像分割成可管理的切片来优化您的目标检测任务。这种方法改善了内存使用并确保了高检测精度。要开始,您需要安装ultralytics和sahi库:

pip install -U ultralytics sahi

然后,下载一个YOLO11模型和测试图像:

from sahi.utils.file import download_from_url
from sahi.utils.yolov8 import download_yolov8s_model

# 下载YOLO11模型
model_path = "models/yolo11s.pt"
download_yolov8s_model(model_path)

# 下载测试图像
download_from_url(
    "https://raw.githubusercontent.com/obss/sahi/main/demo/demo_data/small-vehicles1.jpeg",
    "demo_data/small-vehicles1.jpeg",
)

有关更详细的说明,请参阅我们的切片推理指南

为什么我应该在大型图像上使用SAHI与YOLO11进行目标检测?

在大型图像上使用SAHI与Ultralytics YOLO11进行目标检测提供了几个好处:

  • 减少计算负担:较小的切片处理速度更快,消耗的内存更少,使得在资源有限的硬件上运行高质量检测成为可能。
  • 保持检测精度:SAHI使用智能算法合并重叠的框,保持检测质量。
  • 增强可扩展性:通过在不同图像尺寸和分辨率上扩展目标检测任务,SAHI成为各种应用的理想选择,如卫星图像分析和医学诊断。

在我们的文档中了解更多关于切片推理的好处

使用YOLO11与SAHI时,我可以可视化预测结果吗?

是的,使用YOLO11与SAHI时,您可以可视化预测结果。以下是如何导出和可视化结果的方法:

from IPython.display import Image

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

此命令将把可视化的预测结果保存到指定目录,然后您可以在笔记本或应用程序中加载图像进行查看。有关详细指南,请查看标准推理部分

SAHI为改进YOLO11目标检测提供了哪些功能?

SAHI(切片辅助超推理)为Ultralytics YOLO11目标检测提供了多项功能:

  • 无缝集成:SAHI轻松集成YOLO模型,仅需少量代码调整。
  • 资源高效:它将大图像分割成小切片,优化内存使用和速度。
  • 高准确性:通过在拼接过程中有效合并重叠的检测框,SAHI保持高检测准确性。

欲深入了解,请阅读SAHI的关键功能

如何使用YOLO11和SAHI处理大规模推理项目?

要使用YOLO11和SAHI处理大规模推理项目,请遵循以下最佳实践:

  1. 安装所需库:确保您拥有最新版本的ultralytics和sahi。
  2. 配置切片推理:确定适合您项目的最佳切片尺寸和重叠比例。
  3. 运行批量预测:利用SAHI的功能对图像目录进行批量预测,提高效率。

批量预测示例:

from sahi.predict import predict

predict(
    model_type="yolov8",
    model_path="path/to/yolo11n.pt",
    model_device="cpu",  # 或 '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,
)

更多详细步骤,请访问我们的批量预测部分。


📅 Created 11 months ago ✏️ Updated 13 days ago

Comments