# OBB旋转框检测

# 简介

旋转框(定向对象)检测通过引入一个额外的角度来更准确地定位图像中的对象,从而比标准对象检测更进一步。 旋转框目标检测器的输出是一组旋转的边界框,这些边界框精确地包围了图像中的目标,以及每个框的类别标签和置信度分数。当目标以各种角度出现时,定向边界框特别有用,例如在航空图像中,传统的轴对齐边界框可能包含不必要的背景。

# 安装

# Maven

在项目的 pom.xml 中添加以下依赖,详细引入方式参考 Maven 引入

如需引入全部功能,请使用 【不推荐 ❌】 all 模块。

<dependency>
    <groupId>cn.smartjavaai</groupId>
    <artifactId>vision</artifactId>
    <version>1.0.24</version>
</dependency>

# 获取旋转框检测模型

ObbDetModelConfig config = new ObbDetModelConfig();
config.setModelEnum(ObbDetModelEnum.YOLOV11);
config.setModelPath("/Users/wenjie/Documents/develop/model/vision/obb/yolo11n-obb.onnx");
config.setThreshold(0.5f);
ObbDetModel instanceSegModel = ObbDetModelFactory.getInstance().getModel(config);

# ObbDetModelConfig参数说明

字段名称 字段类型 默认值 说明
modelEnum ObbDetModelEnum 旋转框检测模型枚举
modelPath String 模型路径
allowedClasses List<String> 允许的分类列表
topK int 不限制 检测结果数量
threshold double 0.5 置信度阈值,分数低于这个值的结果将被过滤掉。值越高越严格,越低越宽松
device DeviceEnum CPU 指定运行设备,支持 CPU/GPU
gpuId int 0 gpu设备ID 当device为GPU时生效
predictorPoolSize int 默认为cpu核心数 模型预测器线程池大小
customParams Map<String, Object> 个性化配置(按模型类型动态解析)

# 旋转框检测模型

模型名称 引擎 模型简介 模型开源网站
YOLOV11-OBB OnnxRuntime Ultralytics在DOTAv1 数据集 上训练的模型、通过引入一个额外的角度来更准确地定位图像中的对象 Github (opens new window)

⚠️ 注意
不同模型支持的类别可能不一样,具体可查看模型目录下的 synset.txt 文件,其中列出了该模型支持的全部物体名称。


# ObbDetModel API 方法说明

# 旋转框检测

Image图片源请查看文档Image使用说明

R<DetectionResponse> detect(Image image);
ObbResult detectCore(Image image);

# DetectionResponse字段说明

  • 返回并非json格式,仅用于字段讲解
{
  "detectionInfoList": [ //检测信息列表
    {
      "obbDetInfo": { //旋转框信息
        "className": "harbor", //类别
        "rotatedBox": { //旋转框坐标
          "bottomLeft": {
            "x": 1534,
            "y": 1026
          },
          "bottomRight": {
            "x": 1878,
            "y": 245
          },
          "topLeft": {
            "x": 1659,
            "y": 1081
          },
          "topRight": {
            "x": 2003,
            "y": 300
          }
        }
      },
      "score": 0.5105053
    }
  ]
}

# 检测并绘制结果

该接口支持对图像进行检测,并将检测结果绘制在图像上,同时返回检测结果信息。

  • 保存绘制后的图片到指定路径,检测结果通过 DetectionResponse 返回。
R<DetectionResponse> detectAndDraw(String imagePath, String outputPath);
  • 支持直接输入 Image 对象进行检测,检测结果通过 DetectionResponse 返回。
    可以通过 DetectionResponse 中的 drawnImage 获取绘制后的 Image 对象。
R<DetectionResponse> detectAndDraw(Image image);

# 使用说明
  • imagePath:待检测图像的文件路径。
  • outputPath:绘制检测结果后图像的保存路径。
  • image:待检测的 Image 对象。
  • 返回的 DetectionResponse 包含检测框信息及绘制后的图像(drawnImage),方便后续处理或展示。

# 模型下载

百度网盘: https://pan.baidu.com/s/1C2i49mxT7vopcv0qZSm3vg?pwd=1234 提取码: 1234

# 完整示例代码

示例代码 (opens new window)

# 离线使用

离线使用请看文档