HRNet 簡介 - Deep High-Resolution Representation Learning for Human Pose Estimation

Ke Sun, Bin Xiao, Dong Liu, Jingdong Wang. “Deep High-Resolution Representation Learning for Human Pose Estimation”. In CVPR’19.

CVPR’19 paper

Paper link : https://arxiv.org/abs/1902.09212

Github (PyTorch) : https://github.com/leoxiaobin/deep-high-resolution-net.pytorch

Github 模型架構(PyTorch) : https://github.com/leoxiaobin/deep-high-resolution-net.pytorch/blob/master/lib/models/pose_hrnet.py

簡介

本文提出使用一個可提供高解析度的模型架構 - HRNet( (High-Resolution Net) ),

來解決人的骨架測量問題,

整體上就是提出這模型架構,

其骨架的訓練方法都與他們團隊的前作相同,

ECCV’18 - Simple baselines for human pose estimation and tracking 相同,

因此本文會介紹模型的部分,

其核心想法是我們要維持模型中高解析度的部分,

以常用的模型 VGG, ResNet 為例,

我們都是經過 Stride, pooling 來不斷的縮小 Feature maps 的大小,

最終才輸入進分類器,

但經過不斷的縮小,高解析度的資訊也不斷的丟失,

因此本文所提出的架構就是為了保留高解析度的特徵而設計的。

從下圖可看出,我們最上面那層並沒有經過任何的 Stride/pooling,

還是保存著同樣的尺寸。

概念

先來簡單講一下過去的模型架構,

以深度學習的模型來說,

通常都會使用分類任務的模型作為骨幹再去延伸

較為著名的骨幹如 VGG, ResNet。

而上述的兩種都有 Stride/pooling 的動作壓縮影像尺寸,

針對本文的所希望處理的高解析度任務來說,

上述的縮小尺寸的特性會造成我們測量準確度下降。

下圖為以往處理 pose estimation 的網路架構。

左上角是 (a) Hourglass 的架構,

右上角是 (b) Cascaded pyramid networks 的架構,

左下角是 (c) SimpleBaseline 的架構,

右下角是 (d) 使用 dilated convolutions 的架構,

主要就幾種處理方式

  • 對稱式的模型,縮小和放大。(a)
  • 用大量的資源萃取特徵,再用少部分的 CNN 做放大,回復到原本的解析度。(b) (c)
  • 在 backbone 的最後使用 dilated convolutions (d)

而本文提出的是,

我們目的是要維持住高解析度的特徵,

但是只使用高解析度的特徵很難有效解決多尺度的問題,

因此提出的架構是保持著高解析度的特徵,

但是也會有一部分的網路是透過不斷地縮小來解決多尺度的問題。

基本上的架構我認為與 ICLR’18 - MSDNet 相似,

下圖出自 MSDNet - Multi-Scale Dense Networks for Resource Efficient Image Classification

都是透過多尺度融合,並且保存著大的解析度。((最上面那層

只是說 MSDNet 少了每個 Branch 之間的融合,

而 HRNet 多了 Multi-scale fusion 的動作,

Multi-scale fusion 策略,下圖右方

下圖出自 Deeply-Fused Nets

簡單來說就將每個 branch feature maps 做融合,

要注意的就是每個 feature maps 的解析度不同,

因此實際操作會搭配 upsampling 以及 downsampling。

總結來說雖然每個 branch 的解析度不同,

但是透過 Multi-scale fusion 的方式所融合出來的特徵,

對於此任務(pose-estimated)來說是能帶來更有意義的資訊的。

架構

可以看一下示意圖,

可以看到我們的模型保存著高解析度的特徵 N11 -> N21 -> N31 -> N41,

也有不斷的壓縮解析度 N11 -> N22 -> N33 -> N44

而本文的特點就是將每個平行的 branch 都輸入進 multi-scale fusion - 本文稱作 exchanged unit,

原本輸入 4 個 branch,經過 multi-scale fusion 出來也會是 4 個 branch。

那它的作用就是將每個 branch 的尺寸都先轉換成該 branch 的尺寸後,再進行相加。

而本文提出的策略是 Repeated multi-scale fusion,

代表經過一次 multi-scale fusion 完之後還會再進行一次,

因為 n 個 branch 輸入進 multi-scale fusion 後還是 n 個 branch 解析度也不變,

因此可以不斷的重用來讓模型可以學會更多的資訊。

以本文為例,

在 stage-2 加入 1 個 exchanged unit,

在 stage-3 加入 3 個 exchanged units,

在 stage-3 加入 4 個 exchanged units,

本文有一堆細節,有興趣請看論文,或看 github - HRNet 模型架構(PyTorch)

未來延伸

高解析度的網路其實是相當好用的,

因此作者說未來會延伸至 semantic segmentation, object detection, face alignment, image translation 等等的方向。

成果

參考資料:

Deep High-Resolution Representation Learning for Human Pose Estimation

Simple baselines for human pose estimation and tracking

MSDNet - Multi-Scale Dense Networks for Resource Efficient Image Classification

Deeply-Fused Nets


© 2018-2019 XiaoSean. All rights reserved.

Powered by Hydejack v8.1.1