精華文稿|用於無監督雙目立體匹配學習的視差注意力機制
1、雙目視覺的介紹
2、提出的視差注意力機制(PAM)
3、將PAM應用到雙目立體匹配中
4、將PAM應用到雙目超分辨中
雙目視覺的介紹
雙目視覺受仿生學的啟發。人的兩隻眼睛,由於位置不同,看到的物體景色也是有一定的差異,這種差異便可以在大腦中產生對物體景色的三維空間感知。雙目視覺則使用一對雙目相機,來仿生這種視覺感知機制。
雙目視覺的一個最基本的原理就是:不同深度的物體在在雙目相機中出現不同的相對位置上。
以下圖為例,三種形狀的物體在雙目相機中的成像位置是不同的,三角形成像基本相同,可以認為三角形處在無窮遠的位置,圓形的成像有一個較大的視差(Disparity),說明圓形在離相機較近的位置。
可以認為距離越近,視差越大,由此便可以通過視差來感知空間距離資訊。
值得注意的是,上面在雙目相機中的成像,只有橫向的位置變化,縱向是沒有變化的,即同一個點,在不同相機中,縱向坐標是一致的,這是矯正後的結果,下面的工作都是基於矯正後的雙目視覺影像展開的。
雙目視覺在很多領域有應用,最基礎的任務就是雙目立體匹配,即找到兩張雙目圖上的對應點。如下圖,以左目影像作為參考圖,在右目影像中搜索,計算匹配代價,找到最相似的點,即圖中直方圖的綠色點。
傳統的雙目立體匹配流程包括:匹配代價計算、代價聚合、視差計算、視差細化(refinement)。深度學習方法,則將由神經網路提取的特徵,使用cost volume來進行匹配代價的計算,使用正則化進行代價聚合。
同時,雙目視覺還可以應用到雙目視覺的風格轉換,雙目視覺的影像去霧、去噪、超分辨,雙目視覺的3D目標檢測等等。
提出的視覺差注意力機制PAM
視差注意力機制(Parallax-Attention Mechanism)提出的motivation是:同一個場景下,視差的範圍很大,不能確定。
如下圖在不同數據集上,視差的分布都有非常大的不同,有的最大到幾百,有的只在幾十範圍內分布。而之前的工作,均是預設了一個超參數,即最大的視差(往往設置192,作為視差搜索閾值),這就不具有一定的自適應的能力。
本文提出的視差注意力機制,去掉的這一個超參數,能夠更好的自適應不同的數據集和不同的現實使用場景。
之前的工作多採用cost volume的方法,來做匹配代價計算,但是這種直接基於像元之間的特徵匹配,將會帶來較大的記憶體佔有、較大的計算量以及無法自適應的設置視差搜索閾值,除此之外,cost volume還會帶來一定的匹配的歧義。
由此,提出視差注意力機制的目標有以下幾點:
整體的視差注意力機制模組如下圖所示:
同時也可以從視差注意力map上提煉出遮擋資訊,輸出遮擋mask。
整個視差注意力機制的核心,都在上面淡藍色的視差注意力map上,接下來講解這個視差注意力map的原理。
視差注意力map是由兩個特徵圖(H*W*C和H*C*W)矩陣乘得到,即為H*W*W。
我們可以這麼理解,由於工作是基於矯正後的影像,所以匹配只需要在同一條橫線上(縱坐標一致)進行匹配,所以我們將H作為矩陣相乘的batch,即有H對矩陣相乘,每對矩陣是W*C和C*W,即有W個點,每個點的特徵維度是C,將每個點做一個互相關,就是矩陣相乘,相乘結果是W*W,即互相關矩陣,互相關矩陣內的元素(j,k)表示在某一縱坐標下的左目影像的橫坐標為j的元素和右目影像的橫坐標為k的元素的匹配相關程度。
在整個圖上,再加上H維度,結果輸出就是H*W*W,即擴展了縱坐標維度。這一點需要讀者去細細揣摩理解,作者這樣做,直接用了一個batch矩陣相乘,來進行匹配代價計算,非常巧妙,且不僅降低了記憶體佔有,又減少了計算量。
同時由於做了一個互相關,相當於視差搜索範圍擴展到整個feature map上,去掉了這個超參數的設定,且設計很compact,即插即用。可以看到,優秀的方法,往往都是最簡單樸素和巧妙的!
在得到了視差注意力map之後,將其和某一目上的影像特徵進行矩陣相乘,可以實現該目影像與另一目影像的對齊。即H*W*W和H*W*C相乘,得到H*W*C。
我們可以這樣理解,由於視差注意力map是一個相關矩陣,這個矩陣可以理解為一目影像在另一目影像上像素級別的貢獻力(相關度),那麼將這兩個矩陣相乘,就相當於,用這個貢獻力矩陣對某一目影像做了一個attention,即加權平均。
可以發現,這種視差注意力機制,相比於cost volume方法,由於是對所有點都進行了互相關,所以不存在突變的情況,平滑性較好。
其次,這裡的視差注意力map是隱藏在整個視差注意力模組里的,不需要對其進行一個監督訓練,那麼在超分辨等任務中,我們便可以直接用這個無監督下產生的視差注意力map,而不需要相關的ground truth標註。
由於視差注意力map的設計,即其反應了左右目圖的對應關係,我們可以得到以下特性:
即:右到左圖的map可以通過相乘右圖對應到左圖,左到右圖的map可以通過相乘左圖對應到右圖,以及循環的一致性,讀者可以細品,不難理解。
除此之外,視差注意力map的設計還能提煉出遮擋資訊。我們可以這麼理解,當某一目影像中的一個點在另一目影像中被遮擋了,那麼被遮擋點就匹配不到了,在視差注意力map表現就是,對於該點,匹配度一直處於較低的水平,因此我們便可以根據此原理,輕鬆地提煉出遮擋資訊的mask,非常巧妙。
總結:視差注意力機制利用矩陣相乘的方法,進行匹配代價計算,無需設置搜索超參數;視差注意力機制對每個點都進行了匹配,降低了匹配的歧義性,有著更好的匹配分布曲線(瘦高型分布);視差注意力機制足夠compact,可以無監督地嵌入到很多任務中去,且記憶體佔有和計算量都很小。
將PAM應用到雙目立體匹配中
整體的網路結構如下圖:
雙目影像先進行特徵提取,此處採用的是沙漏網路,然後將提取的特徵送入一個級聯的視差注意力模組,級聯的視差注意力模組在不同解析度的feature map上進行提取特徵,然後級聯視差注意力模組後接一個視差細化模組,最後輸出視差圖。
在輸出模組中,利用了視差注意力模組的遮擋資訊,利用遮擋資訊,就可以將這些不可靠的遮擋點去除。
整體的loss如下,前兩項分別是常用的Photometric loss和smoothness loss。第三項是一個正則化的視差注意力圖的loss。
將PAM應用到雙目超分辨中
超分辨可以使用單目影像進行超分辨,但是如果引入雙目影像,往往能取得更好的效果,所以關鍵在於如何去融合兩目影像的特徵。整體框架如下圖: