如何计算一个模型的FPS,Params,GFLOPs
# 关于FPS,GFLOPs 以及 Params 的解释
衡量一个模型是否轻量,常常使用这三个指标:FPS,GFLOPs,Params(M)
- FPS: frames per second,即:每秒帧数,用于衡量模型的实时性能
- GFLOPs: 是G floating point operations的缩写(s表复数),即:10亿次浮点运算,用于衡量模型的计算量
- Params(M): 是 Parameters,即:参数量,用于衡量模型的复杂度
其中flops是容易产生歧义的,解释如下,参考 chen liu的回答 (opens new window)
- FLOPS:注意全大写,是floating point operations per second的缩写,意指每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。
- FLOPs:注意s小写,是floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。
- 1 GFLOPs = 10^9 FLOPs 即:10亿次浮点运算
# 计算模型的参数量和GFLOPS
参考代码:
- https://github.com/Lyken17/pytorch-OpCounter
- https://github.com/sovrasov/flops-counter.pytorch
# 如何准确的计算一个模型的FPS?
res = []
for id, (data, depth, img_name, img_size) in enumerate(test_loader):
torch.cuda.synchronize()
start = time.time()
predict= model_rgb(inputs, depth) # 有待修改
torch.cuda.synchronize()
end = time.time()
res.append(end-start)
time_sum = 0
for i in res:
time_sum += i
print("FPS: %f"%(1.0/(time_sum/len(res))))
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
上次更新: 2021/08/02, 21:04:52
- 02
- README 美化05-20
- 03
- 常见 Tricks 代码片段05-12