前提

我在AutoDL云服务器上,会运行失败,不晓得为啥,我感觉可能是CUDA版本的问题,CUDA版本低了就会没有那么深的计算量吧

  • AutoDL上(显卡RTX3090,4GB)安装的torch版本是1.10.0+cu111
  • 本地笔记本电脑上(显卡RTX3050,4GB)安装的torch版本是1.10.0+cu113

案例

在这里插入图片描述

解决步骤

  • 前言train.py或者test.py打印出来的parameters、GFLOPS数值往往是不相同的,还有种打印这两个数值的方式是运行models/yolo.py。所以这里共3种方式打印,只要所有改进模型选用的打印方式一致就可以。
  • 因为我在运行train.py或者test.py时,有时候都会遇到不显示GFLOPs的情况,但是论文中又需要对比这个参数,因此撰写此博客的解决方案是在models/yolo.py中更改的
  • 小建议:当遇到跟我相同情况的同学,就可以采用此博客方式,统一调用models/yolo.py来打印这两个值。已验证,在不同机器上,此方式打印出来的值是一样的

#------------------------分割线-----------------------------#

其实可以不加我下面这段代码了,直接运行models/yolo.py即可(因为打印的值是一样的),运行方式和效果倒是可以继续看下去

❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀

⭐在models/yolo.py中按下快捷键Ctrl+F搜索model.train()定位过去,然后添加如下代码即可:

    # -------------------打印参数量|计算量---------------- #
    from thop import profile
    img = torch.rand(1, 3, 640, 640).to(device)
    flops, params = profile(model, (img,))
    print(f'params: {params}, GFLOPs: {2 * flops}')   # 注意这里的flops要×2,才跟yolo打印出来的值对应得上
    print('params: %.2f M, GFLOPs: %.1f B' % (params / 1e6, 2 * flops / 1e9))   # 注意这里的flops要×2,才跟yolo打印出来的值对应得上
    # -------------------打印参数量|计算量---------------- #

上图中的换算公式,可参考博客:【论文】参数量Parameters和每秒浮点运算次数FLOPs的单位是多少?答:Paramenter/M,FLOPs/B

在这里插入图片描述

运行方式

  • 可以直接在PyCharm中运行yolo.py文件(注意指定cfg参数,最好是绝对路径
  • 也可以在终端里面键入命令:python models/yolo.py --cfg /root/autodl-fs/yolov7-main/cfg/training/yolov7.yaml

打印效果

在这里插入图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐