Transformer-man / yolov5_onnx_dnn

非常简单的yolov5应用,只需要opencv库即可,包括c++和python版本。支持对图片和视频进行检测和摄像头实时检测
79 stars 9 forks source link

Android 上使用 opencv 加载 onnx 模型,总是返回 -1 ,无法检测任何物体 #5

Open succlz123 opened 1 year ago

succlz123 commented 1 year ago

我尝试了 opencv 4.5.3 4.6.0 4.7.0 版本都不行。

我使用 yolov3 yolov4 weight 可以正常识别物体。

然后想要使用 yolov5 模型来测试,首先使用官方的转换脚本把官方的 release 里的 pt 转成 onnx,使用 opencv 加载出错。原因是 pytroch 兼容性问题,我修复后成功转换出 onnx 给 opencv,也没有加载错误了。理论上这一步 模型加载是没问题了,但是 forward 后, outputs 里面一直是 -1,没有检查到任何东西。尝试下载你的模型也不行。真是奇怪,v3 v4 都正常的。 我是 cv 新手,目前在探索学习阶段。

dnnNet.forward(outputs, outputLayers);
succlz123 commented 1 year ago

研究了下应该是 不同版本之间模型有一些差别,v3 v4 java 中可以通过 mat.rows 拿到对应的 rows,但是 v5 中是另外种方式,c++ 中我看直接指针操作了。但是不懂怎么在 java 中做对应的操作取到评分。

Transformer-man commented 1 year ago

opencv我使用的版本是4.5.4.60