High-Resoultion Net(HRNet)由微软亚洲研究院和中科大提出,发表在CVPR2019。HRNet的网络在CV领域,越来越得到关注,因为很多用HRNet作为骨架网络的方案在语义分割、目标检测、分类、分割、人体姿态估计等领域均取得瞩目的成绩。
文章名称:Deep High-Resolution Representation Learning for Human Pose Estimation
本文主要内容是展示HRNet在分割领域的模型结构,下面的例子选用HRNet_w48模型,输出为19类。
Github:https://github.com/HRNet/HRNet-Semantic-Segmentation/tree/pytorch-v1.1
HRNet_w48主要包括conv、layer1、stage2、stage3、stage4和last_layer等部分。在stage部分中,以并联的方式实现了高低分辨率的相互融合。为方便表示,本文将图片输入规定为224* 224* 3(h * w * c),(在实际应用中,一般为512 * 1024 * 3)。
-
conv
两个卷积操作,将图片下采样4倍。
-
layer1
用4个残差连接BottleBlock模块,这属于Resnet网络中的经典模块。在BottleBlock模块中,对256维的数据进行了降维处理到64维,再进行卷积操作,之后再升维至256维,有效地减少了计算量。
- transition1 && stage2
transition1:使用两个卷积将256通道的特征降维成两个特征图,由此形成两个分支进入stage2。
stage2:stage2只有一个HRM(HighResolutionModule)。HRM中包含Branches和fuse_layer部分。在stage2中包含两条branches,相当于两个分支,每个分支由4个BasicBlock组成。BasicBlock也是Resnet网络中的经典模块;fuse_layer的作用是将两个分支的特征图进行融合(fusion)。从图中可见,相同通道数的特征不需要处理(None),不同通道数的特征图需要上采样(interpolate)或者下采样(conv)处理。
- stage3
在进入stage3之前,transition2将2个分支改变成3个分支。如图所示,相同通道数的特征图不做处理(None),第三条分支的特征图由第二个分支下采样而来。
stage3由四个HRM组成,如下图所示。该部分的HRM模块比stage2中的多了一个分支,图中的HRM模块的细节已经省略,具体细节参考上图。
- stage4
同理,transition3将三个分支变化为四个分支,第四个分支由第三个分支下采样而来。
stage4由3个HRM模块组成,分支数也比stage3多了一条。可以见到,越往深处走,特征图的分辨率越低,这里有四挡分辨率大小,高低分辨率之间依然是相互融合的。
- last_year
将二、三、四分支的特征图分别进行上采样(interpolate),与分支一的特征图分辨率统一。四个分支的特征图相加,再经过两个1*1卷积,得到输出结果。
附加:
将hrnet的权重打印出来后,权重名称及其数字的含义如下。