zoukankan      html  css  js  c++  java
  • 多视觉任务的全能: 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

     

  • 相关阅读:
    Create Ubuntu DEB package from a Qt application
    Packaging a Qt application
    Ubuntu下安装Eclipse+QT我尽量让它详细点
    Mosh: the mobile shell
    PySide: Python for Qt 1.0发布 编程语言 ITeye资讯
    ubuntu用qt creator写的程序编译后生成的可执行文件复制到另一个系统中需要哪些文件才能运行
    Qt4小技巧——QTextEdit自动滚屏
    网站地图制作工具 Sitemap Creator 2.1
    Dependency Walker (depends.exe) Home Page
    秀一个PySide做的软件,网站地图制作工具 (Sitemap Creator)
  • 原文地址:https://www.cnblogs.com/wujianming-110117/p/12765072.html
Copyright © 2011-2022 走看看