天天看點

ICCV 2021 | OKDHP:利用線上知識蒸餾進行高效2D人體姿态估計

點選下方卡片,關注“CVer”公衆号

AI/CV重磅幹貨,第一時間送達

作者:蘭青  |  已授權轉載(源:知乎)

https://zhuanlan.zhihu.com/p/399742423

和大家分享一下我們最近被ICCV 2021接收的工作《Online Knowledge Distillation for Efficient Pose Estimation》。利用線上知識蒸餾進行高效2D人體姿态估計。這篇工作是由杭州師範大學和浙江大學合作完成。

ICCV 2021 | OKDHP:利用線上知識蒸餾進行高效2D人體姿态估計

論文:https://arxiv.org/abs/2108.02092

Abstract:

我們提出了一個新的線上知識蒸餾架構OKDHP去對人體姿态估計模型進行提升。

ICCV 2021 | OKDHP:利用線上知識蒸餾進行高效2D人體姿态估計

特别地,OKDHP訓練了一個多分支網絡,其中每個分支都被當做獨立的學生模型,這裡的教師不是顯式存在的,而是通過權重內建多個分支的結果後形成的內建heatmap來扮演教師的作用,通過優化Pixel-wise KL Divergence損失來優化每個學生分支模型。整個訓練過程被簡化到了one-stage,不需要額外預訓練的教師模型。我們在MPII和COCO上都證明了該方法的有效性。

————————————分割線

主流的2D姿态估計方法大多數都是基于Hourglass Network[1](HG),典型的工作有[2],[3],[4]。其含有多個堆疊的Hourglass,通常有2-stack, 4-stack, 8-stack類型。後一個Hourglass将前一個Hourglass的結果作為輸入,不斷進行refine,直到結尾。8-stack的結果要明顯好于4-stack,但是與之而來的問題就是計算量明顯的增加。

FPD[5](CVPR 19')首先提出,利用傳統的蒸餾(KD)方法,首先訓一個8-stack HG作為teacher,選擇一個4-stack HG作為student,然後進行KD。參考Fig. 1。

ICCV 2021 | OKDHP:利用線上知識蒸餾進行高效2D人體姿态估計

Fig. 1 The overall architecture of FPD.

那麼這篇工作明顯存在着幾點問題:

(1). 第一步訓teacher,第二步訓student,整體是一個two-stage的過程,較為繁瑣。

(2). 如果要利用FPD訓練一個8-stack HG的student,就需要找到一個比8-stack更高的model去作為teacher。堆疊更多的HG會存在性能收益遞減,并且帶來計算量直線上升。

(3). KD過程中同時使用Mean Squared Error(MSE)作為傳統任務的監督loss和kd loss,訓練時一個output同時針對兩個target進行優化會帶來明顯的沖突。

——————————————————分割線

ICCV 2021 | OKDHP:利用線上知識蒸餾進行高效2D人體姿态估計

Fig.2 Network Comparison

由以上的幾個問題就引出了我們ICCV 2021的工作,我們首先提出了利用線上知識蒸餾的方法去對網絡進行訓練。用大白話來概括一下工作的幾個核心:

(1). 我們提出了一個線上知識蒸餾的架構,即一個多分支結構。這裡的teacher不是顯式存在的,而是通過多個學生分支的結果經過了FAU的ensemble形成的,即established on the fly,我們利用ensemble得到的結果(擁有更高的準确率)來扮演teacher的角色,來KD每個的學生分支,即在Fig.2 (b)中的三個小分支。

具體來說就是,如果要得到一個4-stack HG的網絡,FPD的方式如(a)所示,先訓練一個8-stack,然後進行KD。而在我們的方法,如圖(b),直接建立一個多分支網絡(圖中為3個分支),其中每個分支視為student,要得到一個4-stack HG,那麼我們選擇在前部share 2個stack(節約計算量),後面針對每一個branch,我們将剩下的2個stack HG獨立出來,以保持diversity。三個分支産生的結果經過FAU進行ensemble,得到的ensemble heatmap再KD回每一個student分支。

我們的方法帶來的直接的好處就是,整個的KD過程被簡化到了one-stage,并且不需要手動的選擇一個更高performance的teacher來進行KD。Online KD的方法直接訓練完了之後,選擇一個最好性能的分支,去除掉其他多餘分支結構即可得到一個更高acc的目标HG網絡。

那麼從這裡也可以直接看出我們的多分支網絡更省計算量,粗略的算,FPD的方法總共會需要8+4=12個stack參與計算,我們的方法,隻會有2x4=8個stack進行計算。

(針對diversity的問題提一下,在OKDDip[6]中就有提及,針對這樣的一個多分支模型,每個分支之間的diversity是需要考慮的,對于每個分支,如果共享的stage過多,那麼留給剩下分支的優化空間就會被明顯縮小,分支之間在訓練的過程中會顯式的趨于同質化,進而帶來的結果就是ensemble結果準确率的下降。與之相反,獨立的HG數量越多也可以帶來KD性能的提升,分支數量同理,詳情請參考paper中的Table 7和8,這裡不詳細列出。我們在paper中将共享的HG數量設定為目标網絡HG數量的一半,即目标網絡8-stack,整個網絡就共享4-stack。)

(2). 既然是一個多分支結構,那麼每個分支的情況可不可以是adaptive的?既然在分支裡更多的stack可以産生更好的heatmap,那麼必然也就會帶來ensemble結果的提升,進而KD的效果就會更好。于是針對(b)的這種每個分支都是一樣的balance的結構,我們更進一步提出了unbalance結構。

具體的來說,要KD得到一個4-stack HG,即Fig.2 (c)中的第一個branch,2+2=4個stack的主分支,通過在輔助分支堆疊更多的HG來産生更好的ensemble結果,這裡就是第二個分支是2+4=6個stack,第三個分支2+6=8個stack的情況。

在不考慮訓練計算量的情況下,在部署時移除輔助分支,相比于balance結構,可以得到更好的main branch,即目标的4-stack HG。

(3). 這裡的FAU,即Feature Aggregation Unit,是用來對每個分支産生的結果進行一個帶有weight的channel-wise的ensemble。即将每個heatmap按照生成的權重進行內建。具體的結構如Fig.3所示。

ICCV 2021 | OKDHP:利用線上知識蒸餾進行高效2D人體姿态估計

Fig.3 Feature Aggregation Unit

針對人體姿态估計這種場景下,其實是存在着很多的尺度變化問題,就比如一個人在一張圖檔中,既可以是貼的很近,占滿了整張圖檔,也可以是離得很遠,隻在圖檔中占小小的一個部分。受到SKNet[7]的啟發,在原先的3x3, 5x5的基礎上,我拓展出了7x7和avg pool來捕捉更大範圍的資訊,進而來生成對應每個分支産生的heatmap的weight。消融實驗證明了FAU确實是要比普通的attention方法提高更多。(小聲:avg pool這branch我做了實驗試了一下,有一丁丁的提升,灰常小)

——————————————分割線

需要強調的是,其實我們的OKDHP方法不僅是對于hourglass類别的網絡有着明顯的提升,對于其他的pose estimation網絡也有效果,我們将其拓展到了一個非常lightweight且能夠real time進行pose estimation的開源實作MobilePose[8]上面,(在paper的末尾位置的Supplementary Material裡)

這裡的MobilePose可以粗略的将這個網絡分為encoder(backbone)和decoder部分。網絡結構設計上,我們選擇去share整個的encoder部分,然後建立三個獨立的分支,每個獨立的分支都對應一個完整的decoder部分。FAU結構保持不變。結果如下:

ICCV 2021 | OKDHP:利用線上知識蒸餾進行高效2D人體姿态估計

可以看到,對于更加輕量化的backbone結果,我們的OKDHP方法可以獲得更明顯的漲點。

再次說明一下,我們的方法不僅僅是能夠work在hourglass這個特定的網絡上面。針對其他的網絡結構,如果想要應用OKDHP,仔細的選擇網絡中共享和獨立的部分來設計網絡,我們提出的整個架構具有很好的拓展性。

—————————————分割線

實驗部分

在MPII validation和testing set上

ICCV 2021 | OKDHP:利用線上知識蒸餾進行高效2D人體姿态估計
ICCV 2021 | OKDHP:利用線上知識蒸餾進行高效2D人體姿态估計

在Fig. 5上,我們針對2-stack,4-stack和8-stack都進行了實驗,預設的實驗條件是3分支結構。共享的HG數量是整個目标網絡HG的一半,即要訓練一個8-stack HG,會share 4個HG,獨立4個HG。FAU結構不随HG數量改變。

更進一步對比我們的Balance和Unbalance結構:

ICCV 2021 | OKDHP:利用線上知識蒸餾進行高效2D人體姿态估計

更為具體的Unbalance結構的精度情況:

ICCV 2021 | OKDHP:利用線上知識蒸餾進行高效2D人體姿态估計

這裡面也就對應上了Fig. 1(c)裡面的結構,target就是一個4-stack HG的網絡,那麼這裡選擇6-stack和8-stack作為輔助分支,确實是取得了更好的結果。

在COCO val 2017上,

ICCV 2021 | OKDHP:利用線上知識蒸餾進行高效2D人體姿态估計

也有不錯的性能提升。

Acknowledegment

我們非常感謝浙大的陳德仿博士給出的非常nice的建議和讨論。

參考

  1. ^Stacked hourglass networks for human pose estimation. ECCV 16'
  2. ^Multi-Context Attention for Human Pose Estimation. CVPR 17'
  3. ^Learning Feature Pyramids for Human Pose Estimation. ICCV 17'
  4. ^Multi-Scale Structure-Aware Network for Human Pose Estimation. ECCV 18'
  5. ^Fast Human Pose Estimation. CVPR 19'
  6. ^Online Knowledge Distillation with Diverse Peers. AAAI 2020
  7. ^Selective kernel networks. CVPR 19'
  8. ^https://github.com/YuliangXiu/MobilePose-pytorch

ICCV和CVPR 2021論文和代碼下載下傳

背景回複:CVPR2021,即可下載下傳CVPR 2021論文和代碼開源的論文合集

背景回複:ICCV2021,即可下載下傳ICCV 2021論文和代碼開源的論文合集

背景回複:Transformer綜述,即可下載下傳最新的兩篇Transformer綜述PDF

重磅!人體姿态估計交流群成立

掃碼添加CVer助手,可申請加入CVer-人體姿态估計微信交流群,方向已涵蓋:目标檢測、圖像分割、目标跟蹤、人臉檢測&識别、OCR、姿态估計、超分辨率、SLAM、醫療影像、Re-ID、GAN、NAS、深度估計、自動駕駛、強化學習、車道線檢測、模型剪枝&壓縮、去噪、去霧、去雨、風格遷移、遙感圖像、行為識别、視訊了解、圖像融合、圖像檢索、論文投稿&交流、PyTorch和TensorFlow等群。

一定要備注:研究方向+地點+學校/公司+昵稱(如人體姿态估計+上海+上交+卡卡),根據格式備注,可更快被通過且邀請進群

ICCV 2021 | OKDHP:利用線上知識蒸餾進行高效2D人體姿态估計

▲長按加小助手微信,進交流群

▲點選上方卡片,關注CVer公衆号

整理不易,請點贊和在看

ICCV 2021 | OKDHP:利用線上知識蒸餾進行高效2D人體姿态估計

繼續閱讀