# 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