随笔 - 272  文章 - 7  评论 - 27  阅读 - 83万

yolov4检测识别不出目标的问题

用cmake编译yolo4,并顺利用生成的darknet.exe测试yolov4.weights模型,可以正常检测出目标;

但是,用vs编译yolo_cpp_dll 动态库后,却检测不出目标,只会返回1000个参数全是0的bbox。

一开始怀疑是vs编译yolo_cpp_dll 项目属性没有没有设置好,但是检查了多次之后,还是不行,在另外一台电脑上同样的项目属性却可以正常检测出来。

其次怀疑是cudnn或者cuda,但是检查了版本都符合官网要求。

搜索一通之后,网上有人说opencv4.1有问题,不能用,要用3.4版本的,但是在另一台电脑也是4.1,也能检测出来,况且cmake编译出来的也是用的4.1.

继续找,yolo使用gpu识别不出检测框_始原始的博客-CSDN博客 这里有和我可能相同的问题,说是显卡1650算力不支持cudnn_half ,去掉之后,果然可以检测出来了。我用cmake编译的时候时间长忘了cudnn_half被关闭了,所以cmake编译的可以正常检测出来,但是检测时间变长了。

所以RTX1650等的显卡项目上不要去选了。。。

原文如下:

项目场景:
操作系统:windows10
硬件设备:RTX1650(其他可能出现该问题的显卡:游戏本显卡1650,1660以及1660Ti)

问题描述
yolo系列运行成功后,在cpu中能跑出检测框来,gpu中识别不出检测框。
c语言代码:

darknet_no_gpu.exe detect yolov3.cfg yolov3.weights dog.jpg
1
cpu用时:1148.185000 milli-seconds.

darknet.exe detect yolov3.cfg yolov3.weights dog.jpg
1
gpu用时:517.685000 milli-seconds.

python语言代码:

python detect.py --weights yolov7.pt --source bus.jpg --no-trace --device cpu
1
cpu用时:(720.1ms) Inference

python detect.py --weights yolov7.pt --source bus.jpg --no-trace
1
gpu用时:(231.3ms) Inference

原因分析:
猜测原因:RTX1650没有达到CUDNN_HALF使用要求

解决方案:
总结:需要关闭CUDNN_HALF
一、yolov3;Visual Studio 2019;c语言

方法一:右键属性 -> C/C++ -> 预处理器定义 -> 删除cudnn_half        
方法二:使用记事本打开darknet.vcxproj -> 编辑 -> 查找 ->删除cudnn_half

二、yolov7;PyCharm Community Edition 2021;python语言
在主函数中添加:

torch.backends.cudnn.enabled = False

感谢这位大牛!

如遇其他问题,可去githubissue上查询。

posted on   NLazyo  阅读(1116)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· 单线程的Redis速度为什么快?
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示