1. 程式人生 > >基於深度學習的單目影象深度估計

基於深度學習的單目影象深度估計

基於深度學習的單目深度估計算近年比較火的方向

之前蒐集過相關的論文,嘗試回答一下。

NIPS2014,第一篇CNN-based來做單目深度估計的文章。

基本思想用的是一個Multi-scale的網路,這裡的Multi-scale不是現在網路中Multi-scale features的做法,而是分為兩個scale的網路來做DepthMap的估計,分別是Global Coarse-Scale Network和Local Fine-Scale Network。前者其實就是AlexNet,來得到一個低解析度的Coarse的Depth Map,再用後者去refine前者的輸出得到最後的refined depth map.

ICCV2015,也是上一篇作者David Eigen發的,號稱是multi-task的一個network.

網路結構上做了一些改進,從兩個scale增加到了三個scale,scale1考慮了用VGG替換AlexNet,這篇沒細看,有錯請指出~

掛在Arxiv1607上的,在上一篇的基礎上做了一些改進。

主要的contributions:

1.在ICCV2015的基礎上加入了multi-scale之間的skip connections,號稱可以加速網路的收斂。

2.考慮了在做Data Augmentation的時候,相同的資料生成的train data之間的相關性,其恢復得到的深度要儘可能接近,因此構建了基於set of transformed images的loss的約束。

Arxiv1604,分割和單目深度估計Joint的文章。。。然而。

IEEE 3D Vision 2016的文章,用ResNet的結構來做了。

Deconv部分提出了幾個版本,如下圖.

1. up-convolution:基本的unpooling+convolution

2. up-projection: 引入了殘差的up-convolution單元

3. 兩者的fast版本,基本思想就是unpooling+5*5的conv可以用4個更小的conv來實現,從而加速,如下圖

CVPR2017也有3篇。

這篇沒細看,思想應該是loss不是直接用的depth的loss.

而是用估計出來的depthmap來做左右圖的匹配,利用匹配後rgb影象的強度的偏差來構建loss,所以說是unsupervised.

這篇是semi-supervised,網路結構基本用的是上面的FCRN,主要在loss上做了手腳。

loss一共分為Supervised loss,Unsupervised loss,Regularization loss

1.Unsupervised loss

和上一篇unsupervised的一樣,用的也是網路inference得到depthmap後做左右rgb影象匹配構建的loss.

2.Supervised loss

同時因為用的是kitti的資料,有雷達影象資料配準後的sparse的深度值圖,將這些sparse的depth values作為seed點,也引入了loss中。

3.Regularization loss

還添加了gradient的Regularization loss作為約束。

所以個人感覺是,這篇文章是上兩篇文章的結合。

xiaogang wang他們的成果,這篇主要是CNN和Graphical Model的結合。

主要的motivation:

1.在CNN解決pixel級的classification/regression問題時,引入multi-scale的資訊可以更好的結合low-level和high-level的feature。

2.在semantic segmentation問題中,CRFasRNN中將CRF的mean-field解法展開用RNN網路的結構實現,使得CNN+CRF可以進行end-to-end的優化,這是針對discrete domain的問題,而對於continuous domain的regression問題,還沒有這樣翻譯成網路的CRF層的存在。

3.以及圖模型有很好的表達能力,可以與CNN模型的特徵表達結合,得到更好的效果。

因此作者提出了Multi-scale CRFs和Cascade CRFs兩個模組。

具體推導不展開,有興趣的可以看論文,兩個CRFs的最小單元可以用一個C-MF block來實現。