多视觉任务的全能: HRNet

多视觉任务的全能: HRNet

HRNet是微软亚洲研究院的王井东老师领导的团队完成的,打通图像分类、图像分割、目标检测、人脸对齐、姿态识别、风格迁移、Image Inpainting、超分、optical flow、Depth estimation、边缘检测等网络结构。

王老师在ValseWebinar《物体和关键点检测》中亲自讲解了HRNet,讲解地非常透彻。以下文章主要参考了王老师在演讲中的解读,配合论文+代码部分,来为各位读者介绍这个全能的Backbone-HRNet。

1. 引入

网络结构设计思路

在人体姿态识别这类的任务中,需要生成一个高分辨率的heatmap来进行关键点检测。这就与一般的网络结构比如VGGNet的要求不同,因为VGGNet最终得到的feature map分辨率很低,损失了空间结构。

 传统的解决思路

获取高分辨率的方式大部分都是如上图所示,采用的是先降分辨率,然后再升分辨率的方法。U-Net、SegNet、DeconvNet、Hourglass本质上都是这种结构。

 虽然看上去不同,但是本质是一致的

2. 核心

普通网络都是这种结构,不同分辨率之间是进行了串联

 不断降分辨率

王井东老师则是将不同分辨率的feature map进行并联:

 并联不同分辨率feature map

在并联的基础上,添加不同分辨率feature map之间的交互(fusion)。

 具体fusion的方法如下图所示:

     同分辨率的层直接复制。

·      

需要升分辨率的使用bilinear upsample + 1x1卷积将channel数统一。

·      

需要降分辨率的使用strided 3x3 卷积。

·      

三个feature map融合的方式是相加。

至于为何要用strided 3x3卷积,这是因为卷积在降维的时候会出现信息损失,使用strided 3x3卷积是为了通过学习的方式,降低信息的损耗。所以这里没有用maxpool或者组合池化。

 HR示意图

另外在读HRNet的时候会有一个问题,有四个分支的到底如何使用这几个分支呢?论文中也给出了几种方式作为最终的特征选择。

 三种特征融合方法

(a)图展示的是HRNetV1的特征选择,只使用分辨率最高的特征图。

(b)图展示的是HRNetV2的特征选择,将所有分辨率的特征图(小的特征图进行upsample)进行concate,主要用于语义分割和面部关键点检测。

(c)图展示的是HRNetV2p的特征选择,在HRNetV2的基础上,使用了一个特征金字塔,主要用于目标检测网络。

再补充一个(d)图

  

HRNetV2分类网络后的特征选择

(d)图展示的也是HRNetV2,采用上图的融合方式,主要用于训练分类网络。

总结一下HRNet创新点·     

将高低分辨率之间的链接由串联改为并联。在整个网络结构中都保持了高分辨率的表征(最上边那个通路)。·      

在高低分辨率中引入了交互来提高模型性能。

3. 效果 

3.1 消融实验

1.  对交互方法进行消融实验,证明了当前跨分辨率的融合的有效性。

交互方法的消融实现

2.  证明高分辨率feature map的表征能力

1x代表不进行降维,2x代表分辨率变为原来一半,4x代表分辨率变为原来四分之一。W32、W48中的32、48代表卷积的宽度或者通道数。

3.2 姿态识别任务上的表现

 以上的姿态识别采用的是top-down的方法。

 COCO验证集的结果

可以看到上图用红色箭头串起来的是不是和SELayer很相似。为什么说SENet是HRNet的一个特例,但从这个结构来讲,可以这么看:

·       SENet没有像HRNet这样分辨率变为原来的一半,分辨率直接变为1x1,比较极端。变为1x1向量以后,SENet中使用了两个全连接网络来学习通道的特征分布;但是在HRNet中,使用了几个卷积(Residual block)来学习特征。

·       SENet在主干部分(高分辨率分支)没有安排卷积进行特征的学习;HRNet在主干部分(高分辨率分支)安排了几个卷积(Residual block)来学习特征。

·       特征融合部分SENet和HRNet区分比较大,SENet使用的对应通道相乘的方法,HRNet则使用的是相加。之所以说SENet是通道注意力机制是因为通过全局平均池化后没有了空间特征,只剩通道的特征;HRNet则可以看作同时保留了空间特征和通道特征,所以说HRNet不仅有通道注意力,同时也有空间注意力。

HRNet团队构建了分类、分割、检测、关键点检测等库,工作量非常大,而且做了很多扎实的实验证明了这种思路的有效性。所以是否可以认为HRNet属于SENet之后又一个更优的backbone呢?还需要自己实践中使用这种想法和思路来验证。

4. 参考

https://arxiv.org/pdf/1908.07919

https://www.bilibili.com/video/BV1WJ41197dh?t=508

https://github.com/HRNet

 

原文地址:https://www.cnblogs.com/wujianming-110117/p/12765072.html