AAAI 2022 | 北航提出基于特征纯化的视线估计算法,让机器更好地“看见”
視線估計算法基于用戶的面部圖片計算其視線方向。然而,面部圖片中除包含有效的人眼區域信息外,仍包含眾多的視線無關特征,如個人信息、光照信息。
這些視線無關特征損害了視線估計的泛化性能,當使用環境更改時,視線估計算法的性能也會出現大幅度的下降。
針對以上挑戰,本期 AI Drive 將邀請北京航空航天大學程義華博士,介紹其團隊提出的一種基于特征純化的視線估計算法 PureGaze。
這項被 AAAI 2022 接收的研究中,算法利用對抗訓練實現了視線特征的純化。純化過程中,算法保留了視線相關特征而消除視線無關特征。通過利用此特征純化算法,方法的域泛化性能得到提升,方法也在多個數據集上達到領先的性能。
本文將從三個部分解讀該工作:
背景介紹
實現方法
實驗結果
域自適應問題
視線估計目前不算是很熱門的技術,但是現在在類似智能車的方面有廣泛的應用,它的主要目標是用來估計人眼的視線方向。
視線估計的主要目標是估計用戶的視線方向,目前在智能車的智能車艙以及虛擬現實、增強顯示中有著廣泛的應用。
比如在上圖中,要去判斷這個人的眼睛是看在哪里,相當于在現實的任務中估計一個人其注視的點在哪里、看到的是什么地方、方向,而這種方向是可以作為反映人類意向性的有用信息,因此,視線估計可以用來做一些判斷的事情。
一般來說,一個簡單的網絡的結構,如圖中所說,輸入一個人臉的圖片,把這個人臉的圖片經過一層層地卷積,得到一個三維坐標(x,y,z),是由人的眉心到所注視空間的某個點之間的方向向量。
上圖是 2017 年在 CVPR Workshop 里發表的一篇文章,內容是一種比較經典的網絡結構。即有一個人臉圖片,它輸入的是 448×448 的,經過卷積加了一個空間的權重,最后得到一個二維的 Spatialweights。
在本工作里,主要解決的是視線估計中的 Cross-domain 的問題。Cross-domain 就相當于把方法放在一個數據集上進行訓練,同時在其他的數據集上進行測試,這樣就相當于在實際之間的應用,并通過此獲得一個通用的算法。
但是針對于當前的 Cross-domain 來說,很大的問題是在提出的算法上,一般情況下,算法在 domain 里或者說在數據集內部,經常能得到很好的效果,但是一旦讓其去進行 Cross domain 測試的時候,會有比較大的性能差異,差異性可能甚至于直接的將誤差翻倍。
主要的原因可能是由于在采集數據的時候,會有不同的環境因素或者個人的因素影響。如圖列舉的三個數據集中間的圖片,可以看出有一些人臉圖片可能會有不同的光照因素,同時,對于不同的人來說,這也是會造成誤差的。
對于本文來說,想要去解決 Cross-domain 問題,有一些以前的相關工作,大部分人會把這個問題看作是一個 Domain Adaption 的問題。
要在原始的 domain 上訓練一個模型,然后要把它遷移到某個其他 domain 的圖片上去,這是一個比較簡單的算法,比如,我們先總的訓練一個模型,然后在下游的一些子任務上面、在一個新的任務上面把模型進行微調,也許就能得到好的結果,這其實也是一種類似于 Domain Adaption 的方法。
這些方法經常有兩點要求,第一,需要一個目標的數據集上面的一些樣本,這樣才能夠做一個 Domain Adaption。
同時,它們還會學習到很多模型,對于不同的數據集不是說直接地把一個模型就能拿過來用,而是首先需要一段的預熱,把模型首先在新環境中間采集一些數據;采集數據過后,花一段時間去運行、訓練,最后才能得到比較好的模型。
而對于我們的方法來說,主要想要解決的是如何不需要且不利用目標域的數據,因為這樣相當于局限了整個模型。我們期望能在原始的數據集上學習模型,而這個模型把它同時應用到多個模型上,也都能達到比較好的結果,于是我們采用了域泛化的方法。
如上圖的圖片,相當于這個方法總體的想法, Source 層上面會給定它一個圖片以及 Gaze labels,如它的視線方向是哪里,然后,在原始的域上面進行訓練,訓練完數據過后,相當于這個數據使用了自己的一些方法;比如在過程中提出一個自對抗的任務,該任務其核心是叫做 Gaze feature purification(視線特征純化),通過視線特征純化,就能在原始的圖里面學習到比較好的模型,并將它在多個目標域上面進行測試。
實現方法
首先,這個方法的 Framework 其實是由一個起始的觀察得到。相當于在所有的域上面,它本質的實現模式是比較相似的。
即不管在什么環境中,真正來看,以人為的角度去觀察一個人、觀察一個對象的時候,看它的視線方向的時候,其實只是看其眼睛是看哪邊,對于每個人來說,不管其處于什么環境、或不管對面是什么人,注意力集中的位置就等于是眼球和兩個眼角之間的相對位置。
但自己關注的本質的信息,其實對于其他人來說,可能有一些域的差異,會導致產生影響。
比如說在一個比較暗的環境中,其實本身的圖像信息,它是和比較暗的環境信息是融合在一起的,這是并不能如愿所得的,這些環境信息跟圖像信息融合在一起,這些差異性會導致很多與 Gaze 無關的因素。
所以,本文的主要想法就是視線特征的純化。這需要把跟視線相關的特征保留下來,同時把無關的特征去除,這樣得到的視線相關特征是比較好實現的,能夠在每個域上面都得到使用。
上圖展示了整體的 framework,如何從左圖中得到結果,首先輸入一張圖片,這張圖片要保存其中與視線相關的特征,同時要移除掉類似光照、特征、個人因素的影響,對于這些特征,可以把它映射到一個特征的空間中,即圖中的I 區域表示整個特征的空間。
通常情況下,只需要提取 G 區域這一小部分,但是很多情況下提取特征的Z區域包含很大的空間,其中有很多的無關特征。為了解決視線特征純化的問題,提出了兩個任務,這兩個任務分別是保留視線相關特征,即提取到的特征區域包含有更多視線相關的特征。
同時,對于另一任務,即移除掉視線無關的特征,這點是比較棘手的,因為對于視線無關特征來說,是無法定義清楚到底需要的是什么、需要消除的是什么。在左圖中給出的例子,比如說是光照、個人因素,這是能夠看到的最直接的目標。
但是在實際中,視線無關特征是多不勝數的,可能直接地在訓練一個 gan 網絡,對于特征來說,要求其不包含有光照信息的方案,一般是只針對于某一種信息,但是沒有辦法根本解決這個問題,這是沒有辦法解決移除掉視線無關特征的信息,所以要把整體的任務進行轉換,像第一個任務還是一樣的,保留一個視線信息。
同時,對于第二個任務,就變成了移除掉所有的圖片信息,原來是對于網絡結構、網絡結果來說,想讓整個的特征不包含有任何的圖片信息,即對于任務二,也就如圖中所畫的,把綠色的圓圈盡可能地縮小,讓它越小越好。
而且在這兩個任務之間進行對抗學習,通過對抗學習,就能讓其達到自平衡,因此它能夠去把一些視線無關的特征去除,也能夠把一些相關的特征很好地保留。
在這種情況下,在整個任務中,其實是要求讓整個網絡結構保留實驗信息,同時讓整個網絡結構消除所有的圖片信息,即并不要求它保留視線無關的信息,所以對于網絡結構、對于網絡特征來說,它們就是把視線無關特征,首先去除,然后提取特征,這就叫做純化;通過它純化特征,再使用它來進行視線估計。
所以,整個的 Framework 中,為了解決 Gaze FeaturePurification 的問題,對其中的保留視線相關特征和移除視線無關特征,要通過兩個任務進行,第一個是保留視線信息,第二個是移除掉所有的圖片信息。通過這樣的任務,達到 Feature Purification。
上圖展示的是具體的網絡結構的設置,首先要進行視線特征的純化,即視線估計任務:保留視線信息。
可以直接看到上面的網絡結構,即有一張圖片,將圖片輸入到 Backbone 中,然后在 Backbone 中得到特征,再由特征得到 MLP,最后得到 Gaze 信息,這就是一個比較簡單的視線估計網絡。
對于 Backbone 和 MLP 來說,我們要求它是盡可能精準地估計視線方向,也是使用任務一保留視線信息。同時對于任務二,要去移除所有的圖片信息。怎么讓特征移除掉所有的圖片信息,在這里做了一個假設。
這是從自動編碼機里衍生出來的想法了,因為在自動編碼機里,這個任務里一般認為,如果一旦原始的圖片輸到神經網絡,得到特征,再重建回原來的網絡、原來的圖片。
如果重建的比較好,就默認整個網絡結構把圖片的特征壓縮成很小的一塊。
所以在這里,我們假設使用一個重建網絡,不能從特征中去恢復出原始的圖片,那就不包含任何的圖片信息。總體的想法是構建讓 Backbone 提取特征,中間不包含有圖片信息,這需要讓重建網絡無法從特征中重建出原始圖片來實現。
在這里整體的網絡結構如下:輸入一張圖片,將其在 Backbone 中得到特征,而特征通過 SA-Module,一個比較簡單的重建網絡:其網絡結構在圖的右側,基本上講是 Feature maps 經過上采樣等步驟,最后得到圖片,再由重建網絡輸出圖片。
對于重建網絡,我們要求它是盡可能地從特征中重建回原始圖片。對于 SA-Module 來說,其任務就是重建任務。同時,對于Backbone來說,Backbone 其實不是重建任務,因為它的目標不能讓重建網絡重建圖片。
因此,圖中下側流程圖的結構其實類似于重建的結構,但是會對它分配不同的損失,一個是重建損失,一個是阻止重建損失。
這樣,兩個網絡結構就會進行相互的對抗。即 Backbone 是盡可能的讓它重建不出圖片,而如果 Backbone 有一絲松懈,比如漏了圖片信息出來,這時 SA-Module,因為其任務一絲不茍地從特征重建圖片;通過這種對抗達到去除圖片信息的效果。
而對于任務一和任務二,其實這兩個 Backbone 相當于要同時實現兩個工作,一個是視線估計。另一個是實現對抗,即阻止重建,這樣兩個任務本身會對特征進行純化。圖中的意思即:對于上側的視線估計網絡,它盡可能地想多包含一些視線的相關特征。
另一方面對于 Backbone、對下側的流程圖來說,它實際上就整個的特征盡可能減少,這樣在特征上進行對抗,來實現特征純化。
上圖右側是損失函數的設計組成,函數里的前面三個:一個是 Gaze 損失。
在這里用 L1 的損失,即把兩個 Gaze 值相減,然后做絕對值;另外一個重建的損失,會把它重建出來的圖片和原始的圖片進行求 MSE 的損失。
其中還有對抗損失,即 1 減重建損失。
對于每個部件來說,每個部件里包含三個部件,第一個 backbone,我們讓它實現兩個任務,第一階段是視線估計的任務,同時還有阻止重建的任務,在這里給了兩個權重讓其自己權衡;而 MLP 就是從其特征中恢復出原始的視線;對于 SA-Model,就是從特征中間重建出原始的圖片,這三個部分的特征是這樣設定的。
除此之外,也加了其他的一些損失對原始損失進行修改。
第一個損失叫做局部純化的損失,對于圖片來說,其關注點更多要在眼睛,因此要讓整個網絡結構去純化眼睛區域的特征,這個想法也很簡單,可以通過直接加 attention map,使用其對于阻止重建任務進行約束。
另外是截斷對抗損失,因為對于對抗重建任務來說,SA-Module 是要重建出圖片,而 Backbone 是一減重建損失,很明顯,要使重建的損失達到最小值,就是當恢復出來的圖片和原始的圖片是一模一樣,這時候它才達到最小點。對于 Backbone 來說,這個時候則會出來一個完全相反的圖片。簡單來說,就是讓整個的網絡結構不恢復出原始的圖片,并不是讓它恢復出跟它相反的圖片,它只要能夠不恢復圖片就行了,對 SA-Module 從 Backbone 中提取特征,它不包含任何信息,SA-Module 恢復出一張全白的圖片,也是可以的。這樣就說明了特征中是不包含所有的圖片信息的。
對于損失進行一個階段,我們只要讓它阻止兩個圖片的相像程度能達到一定效果就可以了。它并不是說完全相反,而是從重建出來的結果完全一樣和到完全相反,這中間的損失是從小到大的過程,我們只需要其損失達到一定地步時截斷它,讓它將來保持穩定的結果即可。
實驗結果
上圖是和 sota 方法的比較,目前是分為兩部分的比較,第一部分是使用 adaption 跟沒有使用 adaption 的方法進行比較。
可以看到,在不使用 adaption 的情況下,對于在 Baseline 上每個數據都是有提升的。其中,G 其實是 Gaze360 數據集;M 相當于是 MPII Gaze 數據集;G→M 表示在 Gaze360 上進行訓練,同時在 MPII 上測試;D 是 EyeDiap 數據集;E 是 ETH-XGaze。需要注意的是,在 G→M、G→D 這兩個任務,其實只訓練了一個模型,就是在 Gaze360 上面訓練了同一個模型進行測試,雖然分了兩欄表示,但是總體來說它只是一個模型。
另一方面,因為是跟使用 adaption 的方法進行比較,雖然在新數據上都是有一些優勢的,但是也有一部分是不如此方法的。因為對于使用 adaption 來說,其會使用很多的目標的圖片,而不使用 adaption 是不使用這些圖片的。
另外,對微調后的結果來看,Fine-tuned Baseline 比 Fine-tuned PureGaze 的結果還是要高一點的,這說明了我們的方法,并不是只學習了一個比較好的通用模型,而是能夠真正地學習到特征的表示,這種特征表示在進行微調過后,也保持了比較好的效果。
另一方面,這整個網絡結構的 Framework 是包含兩個任務的,一個是視線估計任務,一個是對抗重建任務。
對于這兩個任務來說,視線估計的網絡是并沒有做明確要求的,我們把 Baseline 換成了在實現估計任務里的一些通用的算術方法,我們的網絡結構直接應用到其他的方法上,也能達到比較好的效果提升。
上圖是特征可視化的結果。因為在這個方法中,對于重建任務,它是相當于重建出原始的圖像,如上圖圖片中的第一行是原始圖像,第二行是原始特征,原始特征其實就是不加對抗中間結構的特征。
第三行的 Purified Feature 就是特征純化的結果,但是重建出來的圖片能夠明顯看出,對于每個人來說,其實提取到特征中間,每個人看起來都已經是學習到類似于平均臉的模型。
同時,圖中的小白框里面標記的是在采集數據的時候,實驗者會在頭部后面墊一個架子,保持頭部盡量地固定好。這就相當于這些噪聲也是不小心被捕捉進去了。但是模型其實也能夠把無關的東西它有一定程度的消除。
對于右邊這張圖,就是代表對于明暗的程度上的變化,在原始的圖片上,會有明暗的交界,這個交界稱其為陰陽臉,對原始的特征來說,恢復出來的圖片跟原始的圖片差不多,但對暗處就恢復不清楚,而對于這個方法結果可以看出,它能夠把總體的光照程度變得差不多,即把光照的因素消除,在消除的同時,還能捕捉出原始的視線信息。
而最下面的一行圖片,其實是對于每張原始圖進行對比度亮度的調節,可以看出就跟重建出來的圖片來比較,視線方向是比較類似的。即我們的方法的確是從暗處把眼睛的特征捕捉出來,同時還能夠把那些光照信息消除。
如上圖也可以看出,在圖片亮度達到最暗(純黑)的情況下,模型依然可以消除一些光照的因素,把非常黑暗的部分中間的特征恢復出來,而且眼睛也感覺是看的比較好的結果。
上圖是進行具體測試的結果。把 PureGaze 和 Baseline 兩個方法在每個光照強度上進行測試,把純化特征帶來的提升把它可視化出來。
可以看得出來,我們的方法它能夠對于暗處以及比較偏亮的這兩個區域來說,其整體的性能是有很大的提升。同時對于中間區域的提升不是說很大,但是中間特征是比較平均,比其他區域會少一點。這就說明該方法能夠對光照強度有一定的處理效果。
特別鳴謝
感謝 TCCI 天橋腦科學研究院對于 PaperWeekly 的支持。TCCI 關注大腦探知、大腦功能和大腦健康。
更多閱讀
#投 稿?通 道#
?讓你的文字被更多人看到?
如何才能讓更多的優質內容以更短路徑到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。
總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。?
PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學術熱點剖析、科研心得或競賽經驗講解等。我們的目的只有一個,讓知識真正流動起來。
📝?稿件基本要求:
? 文章確系個人原創作品,未曾在公開渠道發表,如為其他平臺已發表或待發表的文章,請明確標注?
? 稿件建議以?markdown?格式撰寫,文中配圖以附件形式發送,要求圖片清晰,無版權問題
? PaperWeekly 尊重原作者署名權,并將為每篇被采納的原創首發稿件,提供業內具有競爭力稿酬,具體依據文章閱讀量和文章質量階梯制結算
📬?投稿通道:
? 投稿郵箱:hr@paperweekly.site?
? 來稿請備注即時聯系方式(微信),以便我們在稿件選用的第一時間聯系作者
? 您也可以直接添加小編微信(pwbot02)快速投稿,備注:姓名-投稿
△長按添加PaperWeekly小編
🔍
現在,在「知乎」也能找到我們了
進入知乎首頁搜索「PaperWeekly」
點擊「關注」訂閱我們的專欄吧
·
總結
以上是生活随笔為你收集整理的AAAI 2022 | 北航提出基于特征纯化的视线估计算法,让机器更好地“看见”的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 上柴4.3发动机怠速抖动怎么回事呀?
- 下一篇: 埃安新能源车如何关闭倒车影像功能