0
本文作者: 我在思考中 | 2021-09-03 10:40 |
本文是我們ICCV2021的工作,作為白菜的渣作還是硬著頭皮來宣傳啦。本文目的在于講解我們?cè)嫉膍otivation,可能會(huì)有部分與原始論文不同的視角,希望可以方便大家理解以及節(jié)省大家閱讀正文的時(shí)間。
摘要:幾何投影是單目3D物體檢測(cè)任務(wù)中一種強(qiáng)大且常見的深度估計(jì)方法。它根據(jù)估計(jì)的物體高度導(dǎo)出深度,這使得數(shù)學(xué)先驗(yàn)被引入到深度估計(jì)模型中。但是,該過程同樣引入了誤差放大問題,其輸入的物體高度存在的估計(jì)誤差會(huì)被放大,并加大反映在輸出端的深度數(shù)值上。這種特性導(dǎo)致深度推斷具有不可控性,并且還會(huì)損害模型的訓(xùn)練效率。
在本文中,我們提出了一個(gè)幾何不確定性投影網(wǎng)絡(luò) (GUP Net) 來嘗試解決誤差放大效應(yīng)在推理和訓(xùn)練階段帶來的負(fù)面影響。具體來說,我們提出了 GUP 模塊來獲得推斷深度的基于幾何的不確定性,其為每個(gè)深度提供高度可靠的置信度,其不僅有利于推理階段的得分計(jì)算,而且有利于模型的學(xué)習(xí)。
此外,在訓(xùn)練階段,我們提出了一種分層任務(wù)學(xué)習(xí)策略來減少誤差放大引起的不穩(wěn)定性。該學(xué)習(xí)算法通過監(jiān)控每個(gè)任務(wù)的學(xué)習(xí)情況來動(dòng)態(tài)地給每個(gè)任務(wù)分配不同的學(xué)習(xí)權(quán)重。每個(gè)任務(wù)的訓(xùn)練的多少取決于其前置任務(wù)的訓(xùn)練情況,該方案可以顯著提高訓(xùn)練過程的穩(wěn)定性和效率。
實(shí)驗(yàn)證提出的方法可以推斷出比現(xiàn)有方法更可靠的物體深度數(shù)值,并且表現(xiàn)優(yōu)于最先進(jìn)的基于圖像的單目 3D 檢測(cè)器約3.74%和4.7%的性能(在KITTI數(shù)據(jù)集的汽車和行人類別上的AP40性能)。
作者介紹:陸巖,悉尼大學(xué)工程學(xué)博士生,研究方向?yàn)槎嗄B(tài)數(shù)據(jù)處理,3D計(jì)算機(jī)視覺。
http://arxiv.org/abs/2107.13774
點(diǎn)擊觀看視頻解讀:
(1) 什么是單目3D物體檢測(cè):3D物體檢測(cè)是一個(gè)體系很大的計(jì)算機(jī)視覺任務(wù)。它的主要目標(biāo)為從輸入信號(hào)中估計(jì)出物體的位置,大小以及方位角,其數(shù)學(xué)形式為:
而根據(jù)輸入信號(hào)的不同,我們可以講3D物體檢測(cè)進(jìn)行如下分類:以圖像和激光雷達(dá)點(diǎn)云共同作為輸入的多模態(tài)3D物體檢測(cè),輸入多張圖片的多目3D物體檢測(cè),僅輸入激光雷達(dá)的點(diǎn)云3D物體檢測(cè)以及僅輸入單張圖像的單目3D物體檢測(cè)。
鏈接:https://zhuanlan.zhihu.com/p/106170250
(2) 單目3D物體檢測(cè)在做什么以及潛在的問題:本文要處理的問題為單目3D物體檢測(cè)(下文簡稱mono3Ddet)問題。這個(gè)任務(wù)相比于傳統(tǒng)的3D物體檢測(cè)而言,其本質(zhì)是個(gè)病態(tài)問題(ill-posed),所以獲得真正精確的depth從理論上就有極大的困難??偟脕碚f,這個(gè)任務(wù)的難度比以往的標(biāo)準(zhǔn)3D物體檢測(cè)以及2D物體檢測(cè)都要高一些,其問題的根源在于depth的不適定,所以現(xiàn)階段的主流工作均在解決depth估計(jì)的問題,本文也并不例外。
(3) 單目3D物體檢測(cè)的核心難點(diǎn)是景深計(jì)算(Depth estimation):在mono3Ddet所有的7DoF參數(shù)中,z (depth)是引起性能低下的根本原因,雖然諸如size與angle也是病態(tài)的估計(jì)問題,但是他們對(duì)mono3Ddet的質(zhì)量下降其實(shí)貢獻(xiàn)并不多,這一點(diǎn)已經(jīng)被AM3D等工作證明過[4][5]。
(4) 單目3D檢測(cè)中投影模型是一種很常見的引入幾何信息的方法:幾何投影模型是一種最常見的depth prior,也就是說我們?cè)诠烙?jì)depth的時(shí)候,可以通過以下關(guān)系得到:
其中f是相機(jī)焦距,是物體的3D高度,
是物體的2D高度。在該關(guān)系下,depth估計(jì)可以轉(zhuǎn)化為先估計(jì)
與
,再通過投影的方式得到,這種做法也在諸多3D物體檢測(cè)中得以驗(yàn)證,是一種有效的引入depth先驗(yàn)知識(shí)的策略。
(5) Score是提高單目3D檢測(cè)性能的重要途徑之一:過去有不少mono3Ddet的方法忽略了3D score對(duì)結(jié)果的影響,例如pseudo lidar的AM3D和PatchNet。它們都使用了前端2D score作為自己的最終3D檢測(cè)得分,而諸如MonoDis這類使用了得分的方法,往往并沒有在paper里強(qiáng)調(diào)3D得分的作用,這種make sense的做法可能會(huì)被大家忽略,實(shí)際上在mono3Ddet里,Score是極為重要的東西,因?yàn)闄z測(cè)類算法最終的評(píng)估指標(biāo)是AP而不是Acc,所以,單純地“做對(duì)”一定數(shù)量的樣本是沒有用的,只有高得分樣本做對(duì)才有用。
那么回到本文,本文所要解決的問題其實(shí)是投影模型中的誤差放大(error amplification)現(xiàn)象,這里定性地說明下什么是誤差放大,也即輸入(前端估計(jì)的高度)的誤差會(huì)被乘倍數(shù)的放大并在輸出端(計(jì)算出的depth)。例如我們對(duì)投影模型的輸入加入一個(gè)微小的偏置,其輸出則會(huì)變成原始的投影結(jié)果與偏置項(xiàng)引發(fā)的depth誤差的和:
那么這一項(xiàng)直接看不夠直觀,實(shí)際上我們對(duì)該式子進(jìn)行了定量地測(cè)試,我們將設(shè)置為0.1(一個(gè)不算大的誤差)。然后觀察這樣一個(gè)0.1的偏置對(duì)depth結(jié)果會(huì)產(chǎn)生多大的抖動(dòng),結(jié)果如下:
圖1. 綠色的框代表原始投影結(jié)果,藍(lán)色與紅色框?qū)?yīng)加入0.1的bias后的投影結(jié)果
可以看出,0.1的偏差引入的誤差對(duì)于iou要求在0.7以上的3D物體檢測(cè)而言是比較大的。其最大甚至可以引入幾米的誤差。那么這樣一個(gè)事情會(huì)帶來哪些危害呢?我們認(rèn)為:使得depth的估計(jì)不確定性高,也即其輸出可靠性差。輸出可靠性差會(huì)使得其得分/不確定性難以預(yù)測(cè)。那么這件事會(huì)對(duì)物體檢測(cè)產(chǎn)生訓(xùn)練與測(cè)試兩個(gè)方面的不同影響。
1). 對(duì)于測(cè)試而言(Inference Stage),在前文我說明了一個(gè)結(jié)論:好的高質(zhì)量的得分是AP高的必要條件。而誤差放大引起的不穩(wěn)定性會(huì)使得高品質(zhì)的得分的非常難以獲得,因?yàn)閷?shí)際在3D物體檢測(cè)中,大部分情況下,獲得得分的途徑是使用神經(jīng)網(wǎng)絡(luò)進(jìn)行端到端回歸(例如直接預(yù)測(cè)每個(gè)box的IOU value或者對(duì)每個(gè)box預(yù)測(cè)uncertainty),其本質(zhì)上是要求神經(jīng)網(wǎng)絡(luò)可以根據(jù)輸入特征對(duì)當(dāng)前物體的檢測(cè)難度進(jìn)行一個(gè)動(dòng)態(tài)的評(píng)估。這里給出一個(gè)具體的例子說明這個(gè)問題:
圖2. 常見的uncertainty estimation pipeline
任何種類的mono3Ddet模型都可以拆成上圖的樣子,其中task layers對(duì)應(yīng)與task相關(guān)的節(jié)點(diǎn)。而score layers則對(duì)應(yīng)與得分相關(guān)的節(jié)點(diǎn),其輸出 c 為得分,一般使用不確定度loss訓(xùn)練或者使用iou loss[1]訓(xùn)練等。可以想象,從input x 上直接估計(jì)出得分顯然是個(gè)病態(tài)問題,因?yàn)樽罱K得分對(duì)于輸入而言是一個(gè)不可知(agnostic)的量,因此,我們認(rèn)為,得分估計(jì)問題可以等價(jià)于對(duì)輸入特征進(jìn)行難度估計(jì)。然而,因?yàn)閹缀瓮队澳P鸵氲恼`差放大效應(yīng)的存在,使得這件事情的難度大幅提高。特征層面一個(gè)及其微弱的擾動(dòng)會(huì)使得depth估計(jì)結(jié)果抖動(dòng)極大,因此得分估計(jì)這件事就變成了:push神經(jīng)網(wǎng)絡(luò)去對(duì)特征微小的抖動(dòng)進(jìn)行區(qū)分。如下圖:
圖3. error amplification給score估計(jì)帶來的問題
舉例來說,假設(shè)feature f 可以產(chǎn)生一個(gè)很好的depth估計(jì)結(jié)果,此時(shí)神經(jīng)網(wǎng)絡(luò)需要Score layers的輸出可能拉高,以反應(yīng)其回歸的高質(zhì)量。然而假設(shè)存在對(duì)于一個(gè)微小的擾動(dòng)使得feature f 產(chǎn)生了一個(gè)很小的波動(dòng),其同樣引起了 h 的一個(gè)很小的擾動(dòng),這個(gè)擾動(dòng)從數(shù)值上看可能微不足道,但是它卻被投影模型放大從而產(chǎn)生了非常巨大的depth偏移(例如0.01的 h 的擾動(dòng)可能引起0.5m的depth偏移,但這足以使得iou暴降),此時(shí)卻要求神經(jīng)網(wǎng)絡(luò)給出很低的得分,因此得分估計(jì)變得較為困難。而且除此以外,在現(xiàn)有的單目3d物體檢測(cè)方法中,得分也即uncertainty,往往也是訓(xùn)練loss的一部分,因此得分質(zhì)量差會(huì)對(duì)訓(xùn)練和測(cè)試均產(chǎn)生不同程度的影響。
2). 除此以外,對(duì)于訓(xùn)練而言,誤差放大會(huì)使得depth的訓(xùn)練在前期較為不穩(wěn)定,因?yàn)樵谇捌?,模型?duì)于高度的預(yù)測(cè)是非常糟糕的,這時(shí)候就會(huì)在depth輸出端產(chǎn)生極其巨大的輸出擾動(dòng),對(duì)整個(gè)模型產(chǎn)生影響。
所以,面對(duì)這兩個(gè)問題,我們提出了基于不確定度的幾何投影模型(Geometry Uncertainty Projection Network,下文簡稱GUPNet)。
本節(jié)我將重點(diǎn)講解原始論文GUP module以及HTL的部分,其他部分大家可以參考原文。首先,我們的baseline是CenterNet的魔改版本,具體細(xì)節(jié)等價(jià)于MonoPair刪除Pair relation后剩余的部分,大家可以參考MonoPair的原文,此處不在贅述。在這里我先給出我們的網(wǎng)絡(luò)框架:
圖4. GUPNet網(wǎng)絡(luò)結(jié)構(gòu)
輸入圖像首先經(jīng)過backbone net提取出2d的bounding box,然后該bounding box經(jīng)過ROI Align后提取出ROI特征,該特征會(huì)與3D坐標(biāo)系進(jìn)行concatenate從而獲得最終的ROI特征,所有的3D信息推斷均會(huì)在此ROI特征上進(jìn)行。我們首先估計(jì)出3D box除了depth以外的所有參數(shù)。然后2D與3D bounding box的高度將被輸入到GUP模塊中提取出最終的depth,訓(xùn)練階段HTL將會(huì)對(duì)每個(gè)部分進(jìn)行控制從而實(shí)現(xiàn)multi-task learning。
Backbone Network
我們的backbone網(wǎng)絡(luò)結(jié)構(gòu)為常規(guī)單目3D檢測(cè)的網(wǎng)絡(luò)結(jié)構(gòu),前端的2D檢測(cè)器是基于CenterNet,其輸入一個(gè)2D heatmap以及2D box的長寬和位置修正量。之后對(duì)每個(gè)2D的ROI,使用ROI Align獲得特征,再與坐標(biāo)圖結(jié)合即獲得了全部的2D Roi。之后偏航角,3D box尺寸以及3D投影中心點(diǎn)的offset會(huì)被3D頭計(jì)算。
GUP Module
為了實(shí)現(xiàn)對(duì)depth進(jìn)行更好的uncertainty的估計(jì),我們認(rèn)為把投影過程體現(xiàn)在uncertainty的計(jì)算過程中尤為重要。為什么端到端的uncertainty評(píng)估不好呢,其本質(zhì)就是因?yàn)橥队斑^程對(duì)于uncertainty regression部分而言是agnostic的,其沒有直接參與到投影過程的計(jì)算中,因此使得不確定度的估計(jì)質(zhì)量不高(此處如果沒有說明清楚的話,還請(qǐng)各位老師同學(xué)在評(píng)論區(qū)指出)。因此在本文中,我們采用基于概率模型的方法對(duì)不確定度的估計(jì)同樣引入投影先驗(yàn),我們首先假設(shè)投影過程中的是拉普拉斯分布
,也即:
將此式代入投影模型,可計(jì)算獲得輸出depth為:
其中是一個(gè)歸一化拉普拉斯分布La(0,1)。從上式可以得到的均值
和標(biāo)準(zhǔn)差
分別是
和
,其中
是拉普拉斯分布
的標(biāo)準(zhǔn)差,它與
的關(guān)系為:
。對(duì)于結(jié)果
而言,其均值
對(duì)應(yīng)投影depth結(jié)果,而標(biāo)準(zhǔn)差
則反應(yīng)了投影不確定度。在此基礎(chǔ)上,為了更精準(zhǔn)的depth輸出,我們額外讓神經(jīng)網(wǎng)絡(luò)預(yù)測(cè)出一個(gè)depth的修正值(depth bias),我們假設(shè)該修正值也是拉普拉斯分布
,因此最終depth則變成:
那么這時(shí)輸出端的不確定度就同時(shí)反應(yīng)了投影模型放大的輸入端的不確定性以及網(wǎng)絡(luò)bias引入的不確定度。為了獲得最終得分,我們對(duì)該不確定度做了一個(gè)指數(shù)變換,把它映射到0~1之間:
該得分的計(jì)算過程相較于圖2的版本,其計(jì)算過程引入了投影模型的先驗(yàn),因此由投影模型引起的誤差放大效應(yīng)可以被一定程度上解決,因?yàn)橛晒烙?jì)誤差引起的放大誤差會(huì)被很好的反應(yīng)在計(jì)算的不確定度中,所以基于此不確定度得到的得分質(zhì)量將大幅上升。
上述結(jié)論在我們的ablation中得以體現(xiàn),此處整理如下:
上表對(duì)應(yīng)原始論文表3的(b)~(f)行。第一行是我們的baseline,第二行證明了單獨(dú)用不確定度作為得分很有效(也安利給各位做單目3D檢測(cè)的小伙伴嘗試,真的很能提點(diǎn))。第三行為單獨(dú)的投影模型,也可以漲點(diǎn)(漲點(diǎn)量不多推測(cè)是因?yàn)槲覀兊腷aseline中存在坐標(biāo)map,本身就有一定的幾何先驗(yàn))。所以既然單獨(dú)的不確定度得分和投影模塊可以漲點(diǎn),我們很自然地認(rèn)為combine他們可以漲點(diǎn),結(jié)果在第四行,居然事與愿違。反而不如普通第二行的模型高。之所以會(huì)這樣,就是因?yàn)榈诙械哪P蛯?duì)應(yīng)本blog的圖2,第四行對(duì)應(yīng)本blog圖4。一場(chǎng)圖4受到了誤差放大的影響,得分難學(xué)了很多。而第五行則是我們的GUP module(相當(dāng)于在第四行的基礎(chǔ)上加入我們的幾何不確定度)的結(jié)果。其效果明顯好轉(zhuǎn),至少超過了簡單的combination,使得投影模型與不確定度得分可以很好地并存。
Hierarchical Task Learning
GUP Module可以較好地處理inference時(shí)得分質(zhì)量的問題。但是在訓(xùn)練階段,誤差放大依然會(huì)帶來一些問題,一個(gè)最典型的問題就是在訓(xùn)練初期,的估計(jì)質(zhì)量非常低,因此本身就已經(jīng)很大的的誤差將會(huì)在輸出端引起巨量的誤差,使訓(xùn)練直接走偏到其他方向。因此我們提出了一個(gè)多級(jí)task學(xué)習(xí)(HTL)策略來進(jìn)行multi-task learning(MTL)。
以往的MTL算法大多都是假設(shè)task之間是獨(dú)立的[2],或者至少認(rèn)為task之間應(yīng)當(dāng)享有平衡的資源[3]。然而這些在我們的模型中均不合理,我們?cè)噲D將[2][3]的方法引入我們的模型,結(jié)果性能不升反降(可參考原文表4)。原因很簡單,對(duì)于Task Uncertainty[2],它的task之間獨(dú)立的假設(shè)在我們的方法上完全不成立,我們的方法畫成一個(gè)graph的話,如下圖:
圖5. Task Graph
可以看出來,task之間存在級(jí)聯(lián)關(guān)系,級(jí)聯(lián)的task本身就不可能獨(dú)立,因此強(qiáng)行獨(dú)立的假設(shè)會(huì)破壞Task Uncertainty的原本假設(shè),因此帶來性能退化。而對(duì)于GradNorm[3],其本質(zhì)是希望平衡每個(gè)task對(duì)loss的貢獻(xiàn)量,但是這在mono3Dder中同樣難以成立,因?yàn)椴煌琹oss的尺度差異很大,諸如depth的單位是m,且范圍很廣,他的loss數(shù)值就會(huì)很大,而對(duì)于這種本身范圍就很小的輸出,他的損失函數(shù)數(shù)值也會(huì)很小。因此梯度之間的關(guān)系也會(huì)不同,強(qiáng)行平衡各個(gè)term的貢獻(xiàn)會(huì)使得depth估計(jì)訓(xùn)練不充分,下降性能。
因此,我們針對(duì)GUPNet設(shè)計(jì)了HTL算法,其總體的思路為,一個(gè)task的訓(xùn)練要有它的先制任務(wù)(pre-task)的訓(xùn)練狀態(tài)決定,如果先制任務(wù)訓(xùn)練完成,則當(dāng)前任務(wù)展開訓(xùn)練。這種做法就類似于學(xué)校上課,一年級(jí)課程上完了再上二年級(jí)一樣,所以總得來說,我們需要兩個(gè)元素實(shí)現(xiàn)這件事情:
1). 任務(wù)學(xué)習(xí)狀態(tài)評(píng)估:用于評(píng)估先制任務(wù)的學(xué)習(xí)狀態(tài),
2). 當(dāng)前任務(wù)控制器:當(dāng)先制任務(wù)學(xué)習(xí)達(dá)標(biāo)后,提高當(dāng)前任務(wù)的權(quán)重。
任務(wù)學(xué)習(xí)狀態(tài)評(píng)估:對(duì)于第個(gè)任務(wù)的學(xué)習(xí)狀態(tài)的評(píng)估,我們首先計(jì)算如下函數(shù):
這個(gè)函數(shù)的本質(zhì)就是對(duì)于一個(gè)loss曲線,在t時(shí)刻,取一個(gè)過去時(shí)刻長度為K的滑窗,然后平均每個(gè)時(shí)刻的變化率(導(dǎo)數(shù)),從而獲得滑窗內(nèi)的平均變化率。之后對(duì)于該時(shí)刻的學(xué)習(xí)狀態(tài)評(píng)估即為:
其含義為計(jì)算當(dāng)前滑窗內(nèi)的平均變化率與初始時(shí)刻滑窗平均變化率的關(guān)系,其可以圖解為下圖:
圖6. HTL中的任務(wù)狀態(tài)評(píng)估圖解
本質(zhì)上即為比較兩個(gè)滑窗內(nèi)變化率的關(guān)系,較一致時(shí)說明訓(xùn)練不充分,反之則說明訓(xùn)練較為充分。
當(dāng)前任務(wù)控制器:
而對(duì)于第i個(gè)任務(wù),我們使用如下的線性函數(shù)控制他的訓(xùn)練:
之所以使用該函數(shù)是因?yàn)樾问胶唵吻覠o需調(diào)整超參數(shù),其中為總epoch數(shù),為該任務(wù)所有前置任務(wù)的學(xué)習(xí)狀態(tài)評(píng)估值的乘積:
可以看出,前置任務(wù)學(xué)習(xí)充分的話,會(huì)加速最終的提升速度,而線性函數(shù)也保證了
的上升是平滑的而非跳邊的。對(duì)于每個(gè)task,我們都可以獲得這樣一個(gè)權(quán)重,最終總損失函數(shù)如下:
本文探究了基于幾何的不確定度在單目3D檢測(cè)中的應(yīng)用,但是在實(shí)際實(shí)現(xiàn)中,我們只考慮了3D高度對(duì)結(jié)果的不確定度的影響,而沒有考慮2D,這是因?yàn)橐环矫?D高度結(jié)果較之3D比較穩(wěn)定,二來,引入基于分布的2D高度會(huì)使結(jié)果變得較為復(fù)雜,優(yōu)化難度變高,在我們目前的實(shí)驗(yàn)中,難以取得較大幅度的性能提高,也歡迎大家關(guān)注我們未來的工作,我們未來會(huì)著重針對(duì)這個(gè)問題進(jìn)行進(jìn)一步的研究。
以上就是本工作的全部內(nèi)容介紹,總得來說,GUP module嘗試通過公式計(jì)算不確定度從而使得其轉(zhuǎn)換出的3D得分可靠性上升。而HTL則通過一種手工策略,嘗試更加針對(duì)性地解決GUPNet的串行multi-task learning的問題。以上即為本文的內(nèi)容,歡迎大家討論。
[1] Jiang B, Luo R, Mao J, et al. Acquisition of localization confidence for accurate object detection[C]//Proceedings of the European conference on computer vision (ECCV). 2018: 784-799.
[2] Kendall A, Gal Y, Cipolla R. Multi-task learning using uncertainty to weigh losses for scene geometry and semantics[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 7482-7491.
[3] Chen Z, Badrinarayanan V, Lee C Y, et al. Gradnorm: Gradient normalization for adaptive loss balancing in deep multitask networks[C]//International Conference on Machine Learning. PMLR, 2018: 794-803.
[4] Ma X, Wang Z, Li H, et al. Accurate monocular 3d object detection via color-embedded 3d reconstruction for autonomous driving[C]//Proceedings of the IEEE/CVF International Conference on Computer Vision. 2019: 6851-6860.
[5] Ma X, Zhang Y, Xu D, et al. Delving into Localization Errors for Monocular 3D Object Detection[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021: 4721-4730.
掃碼添加小助手微信(AIyanxishe3),備注“ICCV 2021”拉你進(jìn)群。
雷峰網(wǎng)特約稿件,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。