yolov7提供了简单的点对点预测,不需要再重新写NMS,非常方便,于是当然采用--end2end方法啦,命令如下图:
运行时发现没装onnx, 那就安装好了
conda install -c conda-forge onnx
但是!又出现了这个问题
原因是__int__()需要2到7个参数,但给了8个参数。查看代码export.py 159行,确实是8个参数:
修改为义下代码:
问题解决。
Nuget c#版onnxruntime安装:VS->工具->NuGet包管理器->管理解决方案的NuGet程序包
公主用的GPU版本,安装好了(记住,这里有个坑,公主用了好几天时间才把这个坑填上T_T)
貌似岁月静好,根据ONNX RUNTIME官网的提示配置了CUDA GPU的选项,然而~~~写了个小demo运行时出现了找不到“OrtGetApiBase”入口点的问题:
找不到入口点,最直接的就是dll的函数名变了呗,用dllimport解决!然而,用VS自带的dumpbin.exe查看函数的入口点函数名,名称并没有改变:
公主很抓狂,难道是依赖问题?DW查看依赖包,hin好,又是一堆飘红:
网上查了查,这里说明原来是DW不维护了的原因:
看了下,飘红的全是上述几个类型的包,也就是说依赖包也没有问题。继续查:终于有人遇到和我一样的问题了,他是这么解决的:
可是,人家估计是个大项目,我只是一个小demo,项目本身就是启动项目了。所以这个方案也pass掉。继续查看代码:引用块中妥妥的引用了
,程序运行的时候也加载了模块
model list中也都存在了.
公主真的快把头发薅光了~~~想摔桌子~~~一直到偶然看到这里
真的想哭啊~~~~所以,查对文章很重要!!!为什么官网不介绍(至少我没找到)?为什么到处都说cpu版只能用在cpu上,gpu版本的既能用cpu也能用gpu? 坑爹啊~~~!!!火速装好,onnxruntime。果然入口点的问题解决了!
然而,又出现了新问题:
以为是版本问题,按照官网介绍重新卸载安装CUDA 11.4.4版本,一定要是11.4.4才能满足Notes提到的版本。ONNXRuntime也改成1.12版。
然并卵~~~
查看了下,visual studio模板中并没有CUDA的模板,难道因为cuda并没有装载到visual studio上?难道不是自动装载的吗?更新了下visual studio的配置:
模板出现了:
然鹅,问题并没有解决。公主实在没办法了,网上资料甚少。直接在github上发邮件给作者,member回复的非常及时,一下子就指出了痛点,说我还是用的CPU 包:
赶紧去bin/debug下查看dll包,确实是CPU版的。得!!!问题又回去了,安装上就用的是CPU包,不安装就有Entry point 问题~~~~~~
公主抱着试试看的态度,按照这个list重新升级安装了依赖包
然后删除了CPU版的onnxruntime。果然通过了,喜极而泣!!!上一张缺陷检测demo效果图:
PS:公主训练照片的尺寸是512*512, 实际预测时用的照片尺寸是1024*1024,但准确率也还是8错哒!!!!!
T_T 难受,想哭~~~~~~这个破玩意整了四天,吃饭睡觉都在想着要怎么解决。公主都想说实在不行用python把项目重构一次直接用python算了~~~~还好还好,给自己点个赞顺便去吃顿火锅犒劳一下自己。还是想哭T_T
代码有时间整理一篇博客出来,公主根据yolov7官方python代码一点点整理翻译成c#的,也是耗费了巨大的精力T_T。换平台调用实在是太坑了!!!!!