• 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上查询。

  • 相关阅读:
    学习进度条
    软件工程---课程设计总结
    软件工程----课程总结
    操作系统--实验四
    软件工程---阅读《构建之法》P384~391
    软件工程---阅读《构建之法》第8、9、10章读后感
    操作系统---实验三 进程调度模拟程序
    软件工程--- 阅读《构建之法》第6~7章
    转载---CSS3实现曲线阴影和翘边阴影
    转载---QRcodeJS生成二维码
  • 原文地址:https://www.cnblogs.com/bile/p/16602205.html
Copyright © 2020-2023  润新知