读完HRNet原文始终不能明白它的网络结构,于是在查看多篇文章及源码之后,终于按自己的理解画出了网络结构图。
本手画结构图为HRNetV1,用作人体姿态估计任务,并且以输入大小为256*192为例,即对应原文中的HRNet-W32。(字写的差,请别见怪(* ̄︶ ̄))
蓝色框表示HRNet每个stage的基本结构,在源码中,stage1表示为layer1。layer1的黄色框表示TransitionLayer,transition1只生成下采样分支,不进行信息交换(fuse),而stage2和stage3的黄色框包含了TransitionLayer和FuseLayer,stage4的黄色框是FuseLayer。
原文说第二、三、四个阶段分别包含1、4、3个交换块,总共8个交换块。其实就是,stage2重复一次,stage3重复4次,stage4重复3次,这样一来,这8个信息交换块分别为stage2的TransitionLayer-->transition2,stage3前三次的FuseLayer及最后的一个TransitionLayer-->transition3,stage4的3次FuseLayer。
不同分辨率的层之间怎么交换信息呢?
- 同分辨率的层直接复制
- 需要升分辨率的使用bilinear upsample + 1x1卷积将channel维度统一
- 需要降分辨率的使用strided 3x3 卷积。
- 三个feature map融合的方式是相加
HRNet的在创新点在于把传统网络中高到底,低到高之间的串联方式改为并联,并且在高分辨率与低分辨率之间进行信息交换,这样就能在整个网络结构中保持高分辨率的特征表示。
参考:
https://blog.csdn.net/weixin_37993251/article/details/88043650?spm=1001.2014.3001.5506
https://blog.csdn.net/qq_41533576/article/details/120472456?spm=1001.2014.3001.5506
https://blog.csdn.net/gefeng1209/article/details/93142916?spm=1001.2014.3001.5506
https://blog.csdn.net/qq_35275007/article/details/115750787?spm=1001.2014.3001.5506
https://blog.csdn.net/yudw15/article/details/99600651?spm=1001.2014.3001.5506