前言
前段时间学习了下YOLOV10就是按照网上的教程搭建个环境搞了个demo。因为本职是搞java的想用java加载推理模型,当时想到的就是利用opencv处理,但后来发现YOLOV10这个版本有些节点(TopK这个节点因为我对模型不是太了解暂且叫节点吧)不支持,前面的版本是支持的例如YOLOV8的。
这里有个issue刚好它那个模型裁剪的图片我这里是加载不出来的,我把那个节点删了后面会报些其他错,我不知道他怎么处理的,有懂的可以评论留言。
opencv最新的版本是4.10,可能5.0的正式版本出来可能会直接支持的,想尝鲜的也可以自己编译。
前几天的时候我突然发现了一个宝库onnxruntime有java版本,YOLO的模型可以转ONNX啊于是试了下果然可以。
YOLOV10
1.模型文件和工程文件
2.测试模型或者训练自己模型的可以试下
3.因为里面的ultralytics如果是单独下载的话需要指定当前的目录。但是我用pycharm有个问题就是应用不到这个依赖(我得解决办法是把下载的这个文件目录复制一份放到python的lib库里面),当然最新的ultralytics不知道是否已经支持了YOLOV10了可以试下。
4.还有个问题就是torch的GPU版本默认是安装的CPU的,需要到torch官网自己下载个合适的GPU版本下面是,查看版本的。
python
import torch
print(torch.__version__)
print(torch.cuda.is_available())
5.训练过程中报错:页面文件太小,无法完成操作
将train.py文件中的workers参数的默认值改小,为0或者1试试
6.显存不够的out of memory 可以适当调整下batchsize、imgsz
java使用onnxruntime
POM加载依赖就可以了,(想试下的可以直接用上面下载的YOLOV10模型转换下就可以了)
<!-- https://mvnrepository.com/artifact/com.microsoft.onnxruntime/onnxruntime -->
<dependency>
<groupId>com.microsoft.onnxruntime</groupId>
<artifactId>onnxruntime</artifactId>
<version>1.18.0</version>
</dependency>
2.关于使用网上找下吧
onnxruntime注意问题
1.原图片和模型的输入要求有个缩放的问题
2.返回的坐标点xywh2xyxy,我用的YOLOV10的返回的是xyxy。但我不知道onnxruntime是否可以直接设置,还是模型本身就有设置。字面意思:xywh返回的是中心点的坐标和宽高,xyxy对角线的坐标点
3.问题是win平台下的onnxruntime.dll版本问题报一个错:the given version [14] is not supported, only version 1 to 10 is supported in this build.
4.上面的问题可以在github上下载最新的onnxruntime.dll注意系统。
5.关于上面的问题main方法做测试的时候可能没问题,但是跑服务的时候springboot有问题。网上的方法大部分是放到同级目录如果是tomcat的话放到bin目录下面,但我觉得还是直接主动加载最新的dll可控靠谱。