论文笔记-HRNet-Deep High-Resolution Representation Learning for Visual Recognition

paper: Deep High-Resolution Representation Learning for Visual Recognition

code: HRNet

Abstract

  1. HRNet,这里用的是PAMI2020的工作,整合了human pose estimation、object detection、semantic segmentation、image classification、facial landmark detection等多个视觉任务,目前Cityscapes test的分割任务中,精度最高的是HRNetV2+OCR,参考这里。下文会以semantic segmentaion的HRNetV2为主

  2. 主流的网络结构一般是多个conv实现encode(得了low-resolution的fm),再用deconv进行decode(得到high-resolution的fm),HRNet的pipeline是在网络整个处理过程中始终保持high-resolution的fm,同时并行加入encode的low-resolution的fm,框架图如下:

    • 上图是HRNet-Semantic-Segmentation里的插图,论文中的是插图是作为backbone的结构,即不同的视觉任务,在这个backbone后面加上对应的后续处理操作即可,原文backbone如下

Details

  1. HRNet的结构

    • 整体深度看,HRNet由4个stage组成,每个stage中的每部分都是由N个bottleneck的residual unit组成和一个用于改变channel个数\(3\times3\)的conv组成(代码中4个stage中,每个branch的N都是4)
      • HRNetV2的backbone的总conv层数大概是:\((4+8+12+16)\times 3 + (2+3+4+4) = 133\)(这个计算没有考虑每个stage的输出fuse所涉及到的conv和deconv个数)
    • 整体宽度看,HRNet每个stage的宽度数不同,stage1只有一个branch,stage2有2个branch(一个high-resolution的branch,一个resolution缩小一倍的branch),而两个branch只在最后一个residual unit的输出才会有交互(fm之间互相concate,具体concate方式见下文),以此类推,stage4中有4个branch。(这里说的branch等同于论文中的不同resolution)
    • 最终输出,stage4的4个branch的输出channel个数依次为C/2C/3C/4C(代码中为:32/64/128/256)
    • 对于不同的任务,在stage4的输出后接上后续的一些conv或deconv,输出改成需要的输出即可,如Abstract中图一所示的用于分割的网络结构
      • 首先,将stage4的4个branch分别进行deconv,返回到原始图像尺寸
      • 其次,将上述deconv后的特征在channel维度concate到一起得到15C个fm
      • 然后,接上conv + BN + ReLU + conv,conv的kernel大小都是\( 1 \times 1\),最后一个conv的输出channel个数是类别个数
      • 最后,在channel用softmax对每个pixel分类,得到segmentation map
  2. 如何生成不同resolution的fm,不同resolution的fm又是如何fuse的?

    • 具体实现降低图像尺寸的操作使用stride-2的\(3\times3 \)的conv,降两倍的话,则再添加一个这样的conv,诸如此。
    • 以HRNet的stage2为例,输出3个不同resolution的特征图(个数分别是C、2C、3C),每个resolution的特征图都是将前面三个resolution的fm进行fuse的结果,fuse的方式直接求和。
      • 例如,最上面的high-resolution的输出,由原始的high-resolution加上两个low-resolution进行deconv后的结果组成,如下图:

写在后面

  1. 关于HRNet系列的速度,参考这篇博文
posted @ 2020-05-11 19:47  StoneclutterX  阅读(2518)  评论(0编辑  收藏  举报