# OBB旋转框检测
# 简介
旋转框(定向对象)检测通过引入一个额外的角度来更准确地定位图像中的对象,从而比标准对象检测更进一步。 旋转框目标检测器的输出是一组旋转的边界框,这些边界框精确地包围了图像中的目标,以及每个框的类别标签和置信度分数。当目标以各种角度出现时,定向边界框特别有用,例如在航空图像中,传统的轴对齐边界框可能包含不必要的背景。
# 安装
# Maven
在项目的 pom.xml 中添加以下依赖,详细引入方式参考 Maven 引入。
如需引入全部功能,请使用 【不推荐 ❌】 all 模块。
<dependency> <groupId>cn.smartjavaai</groupId> <artifactId>vision</artifactId> <version>1.0.27</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) |
⚠️ 注意 :
1、不同模型支持的类别可能不一样,具体可查看模型目录下的 synset.txt 文件,其中列出了该模型支持的全部物体名称。
2、每个模型均支持加载自训练模型文件。用户只需在路径中指定自训练的模型文件,并在 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
