目录
- 前提
- 案例
- 解决步骤
- 运行方式
- 打印效果
前提
我在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