说明:因为yolov5函数中已经计算了 FLOPS,因此如果想要计算访存量那么只需按照flops的位置,添加访存量的计算即可
一、先记住计算量和访存量的公式:



二、找到计算FLOPS的位置,并添加访存量
yolov5中计算flops的位置在torch_utiles.py文件,model_info函数中,故”
1. 修改 torch_utiles.py

2. 修改profile.py中的profile函数
profile 函数首先定义了一个 add_hooks,然后指令:model.apply(add_hooks) 先把这个hook挂起来,随后运行模型的时候才开始正式运行这个hook
2.1 hook 中的操作 --为每一层添加缓冲区并初始化

代码如下:
m.register_buffer('total_kernel_macs',torch.zeros(1,dtype=torch.float64))
m.register_buffer('total_output_macs',torch.zeros(1,dtype=torch.float64))

本文介绍了如何在Yolov5中计算模型的访存量OMACS和FLOPS。首先,明确了计算量和访存量的公式。接着,详细讲述了在`torch_utils.py`和`profile.py`中修改代码的步骤,包括添加缓冲区、根据不同层类型选择合适的计算函数,以及计算整个模型的访存量和FLOPS。最后,文章提到了删除hook和返回结果的处理过程。
最低0.47元/天 解锁文章
2317

被折叠的 条评论
为什么被折叠?



