Java集成SmartJavaAI实现旋转框检测、定向边界框目标检测(YOLO-OBB)
Java集成SmartJavaAI实现旋转框检测、定向边界框目标检测(YOLO-OBB)
简介
旋转框(定向对象)目标检测通过引入一个额外的角度来更准确地定位图像中的对象,从而比标准对象检测更进一步。 旋转框目标检测器的输出是一组旋转的边界框,这些边界框精确地包围了图像中的目标,以及每个框的类别标签和置信度分数。当目标以各种角度出现时,定向边界框特别有用,例如在航空图像中,传统的轴对齐边界框可能包含不必要的背景。
现在我们已经可以借助 SmartJavaAI 项目,通过 Java 快速接入旋转框(定向对象)目标检测能力。本文将手把手教你如何使用 SmartJavaAI 来实现旋转框(定向对象)目标检测功能,即使你没有深度学习基础,也能轻松上手!
SmartJavaAI是什么?
SmartJavaAI是专为JAVA 开发者打造的一个功能丰富、开箱即用的 JAVA AI算法工具包,致力于帮助JAVA开发者零门槛使用各种AI算法模型,开发者无需深入了解底层实现,即可轻松在 Java 代码中调用人脸识别、目标检测、OCR 等功能。底层支持包括基于 DJL (Deep Java Library) 封装的深度学习模型,以及通过 JNI 接入的 C++/Python 算法,兼容多种主流深度学习框架如 PyTorch、TensorFlow、ONNX、Paddle 等,屏蔽复杂的模型部署与调用细节,开发者无需了解 AI 底层实现即可直接在 Java 项目中集成使用,后续将持续扩展更多算法,目标是构建一个“像 Hutool 一样简单易用”的 JAVA AI 通用工具箱

快速开始
借助 SmartJavaAI 开源项目,你可以直接在 Java 中集成语音识别模型,无需自己处理复杂的深度学习框架。
Maven引入
在项目的 pom.xml 中添加以下依赖,详细引入方式参考 Maven 引入。
如需引入全部功能,请使用 【不推荐 ❌】 all 模块。
基础依赖
<dependency>
<groupId>cn.smartjavaai</groupId>
<artifactId>vision</artifactId>
<version>1.0.24</version>
</dependency>
模型简介及下载
实例分割模型
模型名称 | 引擎 | 模型简介 | 模型开源网站 |
---|---|---|---|
YOLOV11-OBB | OnnxRuntime | Ultralytics在DOTAv1 数据集 上训练的模型、通过引入一个额外的角度来更准确地定位图像中的对象 | Github |
⚠️ 注意
不同模型支持的类别可能不一样,具体可查看模型目录下的 synset.txt
文件,其中列出了该模型支持的全部物体名称。
旋转框目标检测
1、获取旋转框目标检测模型
public ObbDetModel getModel(){
ObbDetModelConfig config = new ObbDetModelConfig();
//旋转框检测模型,切换模型需要同时修改modelEnum及modelPath
config.setModelEnum(ObbDetModelEnum.YOLOV11);
//模型所在路径,synset.txt也需要放在同目录下
config.setModelPath("/Users/wenjie/Documents/develop/model/vision/obb/yolo11n-obb.onnx");
// 指定允许的类别
// config.setAllowedClasses(Arrays.asList("plane","ship"));
//指定返回检测数量
config.setDevice(device);
//置信度阈值
config.setThreshold(0.5f);
return ObbDetModelFactory.getInstance().getModel(config);
}
2、旋转框目标检测
public void obbDet(){
try {
ObbDetModel detectorModel = getModel();
//创建Image对象,可以从文件、url、InputStream创建、BufferedImage、Base64创建,具体使用方法可以查看文档
Image image = SmartImageFactory.getInstance().fromFile(Paths.get("src/main/resources/obb/boats.jpg"));
R<DetectionResponse> result = detectorModel.detect(image);
if(result.isSuccess()){
log.info("旋转框检测结果:{}", JSONObject.toJSONString(result.getData()));
}else{
log.info("旋转框检测失败:{}", result.getMessage());
}
} catch (Exception e) {
e.printStackTrace();
}
}
3、旋转框目标检测并绘制检测结果
public void obbDetAndDraw(){
try {
ObbDetModel detectorModel = getModel();
R<DetectionResponse> result = detectorModel.detectAndDraw("src/main/resources/obb/boats.jpg","output/boats_detected.png");
if(result.isSuccess()){
log.info("旋转框检测结果:{}", JSONObject.toJSONString(result.getData()));
}else{
log.info("旋转框检测失败:{}", result.getMessage());
}
} catch (Exception e) {
e.printStackTrace();
}
}
完整示例项目
项目地址:https://gitee.com/dengwenjie/SmartJavaAI/tree/master/examples
开源项目地址
🔗 Gitee 项目地址:https://gitee.com/dengwenjie/SmartJavaAI
🔗 GitHub 项目地址:https://github.com/geekwenjie/SmartJavaAI
🔗 GitCode 项目地址:https://gitcode.com/geekwenjie/SmartJavaAI
📖 在线文档地址:http://doc.smartjavaai.cn
更多推荐
所有评论(0)