ICCV 2021 | 重铸Regression荣光!具有残差对数似然估计的人体姿态回归
??作者?|?Tau
單位?|?網易
研究方向?|?計算機視覺
本文是一篇新鮮出爐的 ICCV Oral,由于我的工作內容是姿態估計相關,因此也在第一時間拜讀了一下,以下是一些筆記和過往經驗的總結。由于我自身能力有限,文章中存在錯誤請見諒,歡迎指正。
論文標題:
Human Pose Regression with Residual Log-likelihood Estimation
論文地址:
https://jeffli.site/res-loglikelihood-regression/resources/ICCV21-RLE.pdf
開源地址:
https://github.com/Jeff-sjtu/res-loglikelihood-regression
這兩天抓緊時間看了下作者放出來的代碼,發現有些地方值得注意:
1. 本文走的是用(joint_num*3)維的 FC 層直接回歸出坐標點的路子,可以說是非常暴力了,這和我一開始想的 soft-argmax 的路線還不太一樣,這顯得 RLE 更強了;
2. 根據我過去工作的經驗,用 soft-argmax 積分熱圖來回歸的方法應該能取得比純 FC 更好的效果,在對比實驗中也沒有把 RLE 用到 Integral Pose 上的實驗,直覺上應該能再漲點才對。我正在自己的數據上跑實驗,出了結果會在這里更新。后續:我跟作者取得了聯系,根據作者的說法積分熱圖確實能帶來輕微的提升,但增加了計算量。
Hi Tau. Actually, we did conduct experiments on the soft-argmax based method. We use ResNet-50 and usingsigmoidto predict the normalized heatmap. The original model obtains 65.7 mAP on the COCO validation set, and the model trained with RLE obtain 70.7 mAP. This is slightly better than the direct regression method (70.5 mAP without pretrained). Although using soft-argmax is better, but we think the improvement is marginal and it brings more computation.
調了幾天,終于在我自己的項目上跑起來了,記錄一些遇到的坑:
1. RLE 這個 loss 數值是可正可負的,因為 L=-log p,當 p>1 的時候就會為負數,基本上訓到后面都會是負的,這是正常現象;
2. 這個 loss 對數據噪聲比較敏感,很容易導致模型訓崩,我之前的訓練數據清洗得不夠干凈(自己沒發現),但在 L1 loss 上訓練沒有遇到問題,在 RLE 上模型直接訓崩了,debug 了很久才發現是數據噪聲問題(比如坐標值超出了圖片范圍);
3. 作者的訓練代碼里,坐標值是經過了歸一化的,在 RegressionFlow 模型中使用的 bar_mu = (pred_jts - gt_uvd) / sigma?時,sigma 也進行了 sigmoid 限制在 0~1 之間。
前言
一般來說,我們可以把姿態估計任務分成兩個流派:Heatmap-based 和 Regression-based。其主要區別在于監督信息的不同,Heatmap-based 方法監督模型學習的是高斯概率分布圖,即把 GroundTruth 中每個點渲染成一張高斯熱圖,最后網絡輸出為 K 張特征圖對應 K 個關鍵點,然后通過 argmax 或 soft-argmax 來獲取最大值點作為估計結果。
這種方法由于需要渲染高斯熱圖,且由于熱圖中的最值點直接對應了結果,不可避免地需要維持一個相對高分辨率的熱圖(常見的是 64x64,再小的話誤差下界過大會造成嚴重的精度損失),因此也就自然而然導致了很大的計算量和內存開銷。
Regression-based 方法則非常簡單粗暴,直接監督模型學習坐標值,計算坐標值的 L1 或 L2 loss。由于不需要渲染高斯熱圖,也不需要維持高分辨率,網絡輸出的特征圖可以很小(比如 14x14 甚至 7x7),拿 Resnet-50 來舉例的話,FLOPs 是 Heatmap-based 方法的兩萬分之一,這對于計算力較弱的設備(比如手機)是相當友好的,在實際的項目中,也更多地是采用這種方法。
說到 Regression-based 方法的優點,那是就是好呀就是好,可以簡單總結為以下三點:
1. 沒有高分辨率熱圖,無負一身輕。計算成本和內存開銷一起大幅降低;
2. 輸出為連續的,不用擔心量化誤差。(Heatmap-based 輸出的熱圖最大值點在哪,對應到原圖的點也就確定了,輸出熱圖的分辨率越小,這個點放大后對應回去就越不準。Regression-based 輸出為一個數值,小數點后可以有很多位,精度不受縮放影響);
3. 可拓展性高。不論是 one-stage 還是 two-stage,image-based 還是 video-based,2D 還是 3D,Regression-based 方法都可以一把梭。此前就有用這種方法來將 2D 和 3D 數據放在一起聯合訓練的文章。這是Heatmap-based方法做不到的,因為輸出是高度定制化的,2D 輸出必須渲染 2D 高斯熱圖,3D 就必須渲染 3D 的高斯熱圖,計算量和內存開銷也蹭蹭蹭地暴漲。
而 Heatmap-based 方法通過顯式地渲染高斯熱圖,讓模型學習輸出的目標分布,也可以看成模型單純地在學習一種濾波方式,將輸入圖片濾波成為最終希望得到的高斯熱圖即可,這極大地簡化了模型的學習難度,且非常契合卷積網絡的特性(卷積本身就可以看成一種濾波),并且這種方式規定了學習的分布,相對于除了結果以外內部一切都是黑盒的 Regression-based 方法,對于各種情況(遮擋、動態模糊、截斷等)要魯棒得多。
基于以上種種優點,Heatmap-based 方法在姿態估計領域是處于主導地位的,SOTA 方案也都是基于此,這也導致了一種學術研究與算法落地的割裂,你在各種數據集和比賽里指標刷得飛起,但項目落地時我們工程師卻只能干著急,因為你用的方法又慢又吃內存,真實項目里根本沒法用啊。
終于,這一天有篇文章站出來說,重鑄 Regression 榮光,吾輩義不容辭!不僅將 Regression-based 方法提到了超越 Heatmap-based 方法的高度,還保留了其一直以來的節省計算資源和內存資源的優點,真正做到了又快又準,簡直是項目落地算法工程師的福音,接下來就讓我們一起來學習一下這篇文章。
核心思想
從極大似然估計(Maximum Likelihood Estimation, MLE)的角度來看問題,損失函數的選擇其實是基于我們對目標分布的假設的,如果我們假設目標分布服從高斯分布,那么損失函數就應該選擇 L2 loss,如果假設為拉普拉斯分布,則應該選擇 L1 loss。
這里其實我還延申出來一個理解,早一些時候的文章大家都選擇 L2 loss 作為損失函數,但近來越來越多的文章選擇 L1 loss,并且有翔實的實驗顯示 L1 在大多數情況下都會優于 L2,對于這個現象我一開始是作為一種實驗得到的經驗結論進行記憶的,但到這里我才理解,選擇 L2 其實是一件很自然的事情,因為高斯分布具有大量優秀的特性:采樣方便、解析的密度已知、KL 距離容易計算,還有中心極限定理的保證——任何大的數據都趨近于高斯分布,所以你怎么用它幾乎都是對的。但對于姿態估計任務而言,由于要精確地預測關鍵點位置,實際上概率分布是相對來說比較稀疏的,只有小部分區域具有概率,因此將拉普拉斯分布作為先驗可能是一種更好的假設。
從這個視角來思考,我們其實可以把 Heatmap-based 方法看成是對模型的中間結果進行了監督,顯式地要求模型學習高斯概率分布,進而得出結果;而 Regression-based 方法由于缺少對概率分布的監督約束,模型內部學到的分布是不穩定的,完全受到訓練數據的支配,因此在性能和魯棒性上遜于 Heatmap-based 方法也就不難想象了。
因此我們也可以知道,一個正確的密度函數假設對優化結果是起到主導性作用的。但在實際問題中,目標的分布是未知的,我們所掌握的數據也是有限的,模型很難單純通過數據回歸出真實的密度函數,有沒有比草率地假設某一個分布更好的選擇呢?有的,這里我們將引入這篇文章的核心之一,標準化流(Normalizing Flows)。
標準化流
標準化流是一類深度生成式模型,具體的數學原理有興趣的朋友可以自行搜索,我這里比較膚淺地將其理解為,通過構造一個可逆的變換函數,能將一些基本的簡單分布(如高斯分布)變換為任意的復雜分布。
這里用李宏毅老師的視頻截圖來進行直觀展示,通過一系列可逆變換的疊加,可以將簡單分布變換成任意的復雜分布:
換句話說,雖然現階段我們條件有限,我們的回歸模型只能擬合一個簡單分布,但我可以對擬合出來的結果進行變換,讓變換后的結果更接近真實分布,只要我的變換足夠復雜,理論上我可以擬合任意的目標分布。
而這里的變換,實際上也就是我們的神經網絡,因為神經網絡理論上可以逼近任意的函數,因此流模型中那一系列疊加的可逆變換可以通過疊加的 FC 層實現。也就是說,我們將網絡學習的目標,從讓網絡直接擬合目標分布,變成了擬合簡單分布+流模型變換調整兩個步驟。
結果用極大似然估計法,損失函數可以表示為:
以上的描述對應圖中的(a)設計。
重參數化
盡管思想上是說得通了,但在實際實現中,還需要一些技巧。
Regression-based 方法是要網絡直接預測坐標值的,但是(a)中的設計顯然增加了步驟,而且讓網絡先擬合簡單分布再進行變換的思路,似乎也有點繞彎路的感覺。因此作者進一步改進了方案,我們先對一個標準的基礎分布進行變換,然后讓網絡直接學變換后的真實分布不是更好嗎?
在實際操作中,作者假設所有底層分布共享相同的密度函數族,但是根據輸入不同,會有不同的均值和方差(可以理解為需要對原始分布進行平移和縮放)。我們以標準正態分布為基礎分布,通過流模型將基礎分布變換為真實分布的原始分布,用回歸網絡來預測平移和縮放系數 和 。這里的平移和縮放參數,實際上就是預測值和 GT 的偏移量。
注意這里的符號!!帶 hat 的是偏移量,或者說平移縮放系數,頭上帶 overline 一橫的是真實目標分布。
到了這里,我們模型的學習目標也發生了改變,已經從(a)中的:回歸模型學習基礎分布,流模型學習將基礎分布變換為真實分布;變成了:流模型學習 GT 的偏移量的原始分布變換,回歸模型學習變換后的原始分布的平移縮放參數。
損失函數也因此可以簡化為:
經過以上的簡化,我們的模型已經可以端到端地進行訓練了,但實際上還是存在一些問題。
不難發現,我們的回歸模型的學習是完全依賴于流模型變換的結果的,而在模型訓練的初期,我們學到的變換函數是非常不準的,如果讓回歸模型去擬合基于不正確的變換得到的目標分布,對于模型性能是有害的。但端到端訓練的原則讓我們不想將訓練變成二階段的(即先訓練流模型,訓好以后再訓練回歸模型),因此本文又引入了一個殘差對數似然估計(Residual Log-likelihood Estimation, RLE)的概念。
殘差對數似然估計
要解決上面提到的模型依賴問題,本文設計了一條梯度 shortcut 來降低依賴程度。
用公式表示流模型擬合的目標分布,可以構造拆分為三項:
其中第一項 Q(x) 是一個簡單分布(如高斯分布或拉普拉斯分布),第二項我們稱之為殘差對數似然項,第三項是一個常數 s。
我們可以假設 Q(x) 是大致上接近于目標分布的,只是不夠完美,這在之前我們已經有眉目了,選高斯分布不會錯,選拉普拉斯分布更優。殘差對數似然項是對第一項的一個補充,用于填補簡單分布不夠完美的部分,因此目標概率分布公式可以寫成:
其中 G(x) 是流模型所需要學習的分布。經過這樣的變換后,我們可以發現,回歸模型對流模型的依賴被大大減輕了,因為不論流模型學到的結果如何,都只是在簡單分布的基礎上進行補充。這里的簡單分布恰好正是我們前人使用的 baseline,所以不管怎么學,我們的回歸模型都不會太差,相反,隨著流模型對變換參數的預測越來越準確,回歸模型所擬合的分布將比 baseline 更加接近真實分布。
最終得到訓練的損失函數為:
而當訓練結束,回歸模型學到的平移縮放參數就固定了,我們的流模型也固定了,由于我們假設所有的數據都服從我們的目標分布,變換函數是不會因為輸入數據的變化而受影響的。更牛逼的是,由于是在 N(0, I)的標準分布上進行的變換,在測試推理階段,平移縮放系數直接就可以看成最終預測的坐標值。
因此在推理階段我們就不再需要運行流模型了,我們的回歸網絡至此已經學到了流模型變換后的真實分布。這也是本文提出的方法的妙處所在,訓練時對目標分布的假設就已經確定了,剩下的就又回到了 Regression-based 方法的既定流程上,確定分布假設,對應設計損失函數即可。
流模型這部分的邏輯比較繞,而且 (a) (b) (c) 三種方案里幾個 mu 和 sigma 的含義是有不同,但又能互相轉化的,建議對照著那張路程圖多看幾遍,最好結合原文來理解,筆者才疏學淺,表達得可能不夠清晰。
流模型
本文選擇的基礎分布為拉普拉斯分布,這也是符合前人實驗結論的,大量的實驗結果佐證了拉普拉斯分布應該是一個比較接近于真實目標分布的假設,只是不夠完美,但這足夠我們選擇它作為變換的基礎,有利于簡化變換的難度,降低學習的難度。
而常見的可以選擇流模型其實有很多種,本文經過實驗對比最終選擇了 RealNVP,可逆變換函數用 3 個具有 64 個神經元的全連接層來表示。這樣一個簡單的輕量級的流模型,對訓練速度的影響是幾乎可以忽略的。
在文章最后的附錄中,作者也對學到的分布進行了可視化:
實驗結果
對所提出方法的消融實驗如下:
這個實驗以在 Resnet50 上對 L1 loss 進行直接回歸作為 baseline,通過加入重參數化后的流模型進行直接似然估計的端到端訓練(Direct Likelihood Estimation, DLE)可以帶來 4.6mAP 的提升,加入殘差對數似然估計來減輕模型依賴后的提升變為 12.4mAP,最后加入前人文章中用到的訓練技巧,先用 heatmap 對 backbone 進行預訓練,然后再用 Regression-based 方法進行微調,可以最終帶來 13.2mAP 的提升。
PS:這個預訓練技巧其實還蠻有用的,可以學一手。
跟現有 SOTA 方法的對比如圖,可以看到能讓 Regression-based 方法達到媲美 Heatmap-based 方法的高度,其他更多的消融實驗和參數選擇實驗我在這里就不一一貼出來了,有興趣的朋友可以自行查閱論文。
以上是對本文進行學習后的一些記錄,可能存在一些理解有誤或者不夠精準的地方,后續可能會進行修改,也歡迎大家進行指正,感謝閱讀。
更多閱讀
#投 稿?通 道#
?讓你的文字被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學術熱點剖析、科研心得或競賽經驗講解等。我們的目的只有一個,讓知識真正流動起來。
?????稿件基本要求:
? 文章確系個人原創作品,未曾在公開渠道發表,如為其他平臺已發表或待發表的文章,請明確標注?
? 稿件建議以?markdown?格式撰寫,文中配圖以附件形式發送,要求圖片清晰,無版權問題
? PaperWeekly 尊重原作者署名權,并將為每篇被采納的原創首發稿件,提供業內具有競爭力稿酬,具體依據文章閱讀量和文章質量階梯制結算
?????投稿通道:
? 投稿郵箱:hr@paperweekly.site?
? 來稿請備注即時聯系方式(微信),以便我們在稿件選用的第一時間聯系作者
? 您也可以直接添加小編微信(pwbot02)快速投稿,備注:姓名-投稿
△長按添加PaperWeekly小編
????
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
·
總結
以上是生活随笔為你收集整理的ICCV 2021 | 重铸Regression荣光!具有残差对数似然估计的人体姿态回归的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 今日arXiv精选 | 14 篇 ICC
- 下一篇: 技术部门Leader是不是一定要技术大牛