调试Yolo+DeepSort+PyTorch+Pyinstaller程序的记录

1. 前言

    接手的学长遗留下来的横向监控项目,写了一堆想想还是删了,只能说高校学生除了真有本领还是别搞实际运用,水太深把握不住。

2. 优化记录

2.1 结构化运行时CUDA显存占用持续增长报错

    报错信息:“RuntimeError:CUDA out of memory.Tried to allocate……”

    错误原因:除去设备配置问题和网上众多降低显存占用的方法,yolo本身的版本和weights下模型版本不对应也可引发此问题。项目中两个模块是两个学长分别负责的,前一个用的YOLOV5的5.0版本,另一个用的1.0版本。

    解决方案:统一YOLO中utils代码和weigths下模型的版本

2.2 监控程序CPU占用率过高

    问题原因:排查发现将YOLO输出的结果放入DeepSort后CPU占用率大幅增加,参考[1]串,推测是利用numpy库计算卡尔曼滤波时开启的线程过多。(注1:numpy库在计算时默认开启与逻辑cpu个数相同数量的线程进行计算)

     解决方案:在deep_sort/deep_sort.py中import os后加入

os.environ["MKL_NUM_THREADS"] = "1"
os.environ["NUMEXPR_NUM_THREADS"] = "1"
os.environ["OMP_NUM_THREADS"] = "1"
os.environ["OPENBLAS_NUM_THREADS"] = "1"

    限制numpy线程后会对多目标跟踪性能性能一定影响,可以根据需要调整开启的线程数。

2.3 Pyinstaller打包.exe程序无法运行

    问题原因:默认使用了UPX对conda环境中的部分库进行了压缩,即使排除了PySide2等库仍会在代码其他部分死锁且命令行无报错。

    解决方案:将main.spec中的UPX选项均改为False(或者选择不安装UPX无视Pyinstaller的UPX not avaliable),代价是该项目所用到的完整的Python库占用达到了9个G,建议import时都采用import xxx from xxx以减少打包所需的库大小。

3.参考资料

[1] https://github.com/mikel-brostrom/Yolov5_StrongSORT_OSNet/issues/48

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值