leoxiaobin / deep-high-resolution-net.pytorch

The project is an official implementation of our CVPR2019 paper "Deep High-Resolution Representation Learning for Human Pose Estimation"
https://jingdongwang2017.github.io/Projects/HRNet/PoseEstimation.html
MIT License
4.34k stars 915 forks source link

Bugs in `get_model_summary' and flops calculation #257

Open jin-s13 opened 3 years ago

jin-s13 commented 3 years ago

Dear all,

Thanks for releasing the codes! I noticed some problems in model flops calculation.

  1. The classname Conv2d and ConvTranspose2d both contain 'Conv', so their flops are counted in get_model_summary. https://github.com/leoxiaobin/deep-high-resolution-net.pytorch/blob/ba50a82dce412df97f088c572d86d7977753bf74/lib/utils/utils.py#L124

However, the flops-calculation for Conv2d and ConvTranspose2d should be different.

For Conv2d, it is

flops = (torch.prod(torch.LongTensor(list(module.weight.data.size()))) * torch.prod(torch.LongTensor(list(output.size())[2:]))).item()

But for ConvTranspose2d, it should be

flops = (torch.prod(torch.LongTensor(list(module.weight.data.size()))) * torch.prod(torch.LongTensor(list(input[0].size())[2:]))).item()

  1. Flops of many other ops (e.g. BN, ReLU) are not calculated.
zengwang430521 commented 2 years ago

Yes, indeed! @leoxiaobin @sunke123