【论文】YOLOv7运行train.py和test.py时,打印不出来计算量GFLOPs解决方法

目录

  • 前提
  • 案例
  • 解决步骤
  • 运行方式
  • 打印效果

前提

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

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

案例

【论文】YOLOv7运行train.py和test.py时,打印不出来计算量GFLOPs解决方法_第1张图片

解决步骤

  • 前言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

【论文】YOLOv7运行train.py和test.py时,打印不出来计算量GFLOPs解决方法_第2张图片

运行方式

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

打印效果

【论文】YOLOv7运行train.py和test.py时,打印不出来计算量GFLOPs解决方法_第3张图片

你可能感兴趣的:(论文写作,YOLO)