paper: Deep High-Resolution Representation Learning for Visual Recognition
code: HRNet
Abstract
-
HRNet,這里用的是PAMI2020的工作,整合了human pose estimation、object detection、semantic segmentation、image classification、facial landmark detection等多個視覺任務,目前Cityscapes test的分割任務中,精度最高的是HRNetV2+OCR,參考這里。下文會以semantic segmentaion的HRNetV2為主
-
主流的網絡結構一般是多個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如下
- 上圖是HRNet-Semantic-Segmentation里的插圖,論文中的是插圖是作為backbone的結構,即不同的視覺任務,在這個backbone后面加上對應的后續處理操作即可,原文backbone如下
Details
-
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
- 整體深度看,HRNet由4個stage組成,每個stage中的每部分都是由N個bottleneck的residual unit組成和一個用於改變channel個數\(3\times3\)的conv組成(代碼中4個stage中,每個branch的N都是4)
-
如何生成不同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后的結果組成,如下圖:
- 例如,最上面的high-resolution的輸出,由原始的high-resolution加上兩個low-resolution進行deconv后的結果組成,如下圖:
寫在后面
- 關於HRNet系列的速度,參考這篇博文