單目視覺深度估計(jì)測距的前生今世
點(diǎn)擊上方“小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)
計(jì)算機(jī)視覺(CV)|機(jī)器學(xué)習(xí)|深度學(xué)習(xí)|圖像處理
編者薦語
最近通過深度學(xué)習(xí)直接從單目攝像頭的圖像預(yù)測/估計(jì)深度圖的方法成為一個(gè)應(yīng)用的熱點(diǎn),惹來不少爭議。
轉(zhuǎn)載自丨黃浴@知乎
鏈接丨h(huán)ttps://zhuanlan.zhihu.com/p/56263560
深度學(xué)習(xí)直接通過大數(shù)據(jù)的訓(xùn)練得到/調(diào)整一個(gè)深度NN模型的參數(shù),在當(dāng)今計(jì)算能力日新月異的平臺(tái)(GPU/FPGA/ASIC/Muli-core)上實(shí)現(xiàn)了計(jì)算機(jī)視覺/語音識(shí)別/自然語言處理(NLP)等領(lǐng)域一些應(yīng)用的突破。但是專家們還是對(duì)今后深度學(xué)習(xí)的發(fā)展有些期待和展望,比如
-
非監(jiān)督學(xué)習(xí)方法的引入減輕大數(shù)據(jù)標(biāo)注的負(fù)擔(dān),比如GAN; -
NN模型的壓縮和精簡以普及深度學(xué)習(xí)在移動(dòng)終端甚至物聯(lián)網(wǎng)終端的廣泛應(yīng)用; -
還有深度學(xué)習(xí)能夠更多的引入人類知識(shí)和簡單可靠的推理,以減少“暴力“學(xué)習(xí)的誤差和錯(cuò)誤,比如貝葉斯理論,知識(shí)圖譜,邏輯推理,符號(hào)學(xué)習(xí),多任務(wù)聯(lián)合訓(xùn)練和遷移學(xué)習(xí)等等。
這里從單目深度估計(jì)在計(jì)算機(jī)視覺中的發(fā)展歷程,特別是最近在采用深度學(xué)習(xí)NN模型的實(shí)驗(yàn)中,總結(jié)一下如何通過深度學(xué)習(xí)求解傳統(tǒng)視覺問題,并從中發(fā)現(xiàn)可借鑒的地方。
深度估計(jì)問題在計(jì)算機(jī)視覺領(lǐng)域?qū)儆?-D重建的一部分,即Shape from X。這個(gè)X包括stereo, multiple view stereo, silhouette, motion (SfM, SLAM), focusing, hazing, shading, occlusion, texture, vanishing points, ...前面5個(gè)都是多圖像的輸入,從空間幾何,時(shí)域變換和焦距變化的關(guān)系推導(dǎo)深度距離。剩下的都是單目的輸入。
如果把圖像模糊度建模,下圖是圖像邊緣模糊的響應(yīng)模型,那么單目圖像也能估算深度,即shape from defocusing。
另外一個(gè)現(xiàn)象是大氣散射 (Atmosphere scattering ) 造成的霾 (haze)提供了深度信息,即depth from haze,一般有天空被拍攝下來的圖像,通過散射模型能夠推斷像素深度。這里給出的是圖像亮度C和深度z之間計(jì)算的公式:C0是沒有散射情況下的圖像亮度值,S是天空的圖像亮度值。
以上兩個(gè)任務(wù)可認(rèn)為是deconvolution問題,blind或者non-blind。
物體表面陰影的變化可以提供深度的信息,利用圖像亮度和其中物體表面的形狀之間的關(guān)系,即Shape from shading。和SFM一樣,這是一個(gè)病態(tài)問題,需要附加約束條件,如物體表面的特性。SFS一般假設(shè)四種表面模型:純Lambertian,純鏡面,混合和更復(fù)雜的模型。大部分情況下都是Lambertian,即均勻照明的表面從任何一個(gè)方向觀察其亮度不變。其目標(biāo)函數(shù)是一個(gè)積分,求解的算法比較復(fù)雜,類似有限元之類。
紋理的變形提供了該紋理表面形狀的線索。下圖是一個(gè)示意流程圖:
中間第三圖是表面法向圖,第四個(gè)才是深度圖。紋理分割是必備的基礎(chǔ)(估計(jì)是很難的一部分),此外求解這個(gè)shape from texture的優(yōu)化問題,必須加上幾個(gè)紋理元素(textels)約束條件:homogeneity,isotropy,stationary。
遮擋(occlusion)也是深度的一個(gè)線索,曲率(curvature)是其中的一個(gè)體現(xiàn),即shape from curvature。isophote這個(gè)詞指一種封閉的物體外輪廓,一般通過對(duì)圖像灰度設(shè)門限可以得到,而它的曲率用來推導(dǎo)對(duì)應(yīng)該門限的深度,見下圖所示。門限在【0,255】范圍變化就能得到最終疊加平均的深度圖。分割仍然是一個(gè)求解遮擋的基礎(chǔ),要知道當(dāng)時(shí)分割算法是計(jì)算機(jī)視覺很頭疼的難題,俗稱“chicken-and-egg"。
最后再說消失點(diǎn),即某平面的一組平行線在透視投影下會(huì)聚的點(diǎn)。那么,它相應(yīng)的平面就能得到深度圖,如下圖所示,在人工(特別室內(nèi))環(huán)境下可以推導(dǎo)深度圖,沿著平行線的平面,靠近消失點(diǎn)的賦予大的深度值。該方法叫depth from geometrical perspective。
順便提一下,在3維電視熱的時(shí)期(2008-2010年左右)大家希望把以前拍攝的單目視頻變成立體視頻,給3-D電視提供更多的內(nèi)容,包括3-D顯示技術(shù)的普及(比如紅綠眼鏡)大家也想在家里share一些3-D的UGC。這個(gè)技術(shù)被稱為2D-to-3D,通過深度圖估計(jì)和虛擬立體視覺假設(shè)可以生成立體視頻,其繪制技術(shù)稱為DIBR,如下圖:
以上是典型的傳統(tǒng)計(jì)算機(jī)視覺,需要加約束求解病態(tài)的優(yōu)化問題。下面談?wù)剻C(jī)器學(xué)習(xí)如何解決這個(gè)視覺問題:
最早看到用機(jī)器學(xué)習(xí)的方法是基于MRF的,把各種約束關(guān)系放在模型的data term和connectivity term求解。這是我看到Andrew Ng在計(jì)算機(jī)視覺方面的第一篇論文,發(fā)表在NIPS 2005年,當(dāng)時(shí)他剛剛在斯坦福大學(xué)建立自己的研究組。
如果采用圖像分割得到的super-pixels,可以得到更平滑的結(jié)果,該系統(tǒng)叫做Make3D。
值得一提的是,當(dāng)時(shí)CMU的博士生Derek Hoiem(后來UIUC教授)也在研究如何從單目圖像中提取出景物的3-D結(jié)構(gòu),只是他采用機(jī)器學(xué)習(xí)方法在圖像分割基礎(chǔ)上做了一個(gè)簡單的語義分割,即“ground”, “sky”, 和 “vertical”標(biāo)注像素,然后采用簡單的平面billboard做紋理映射后變成“pop-up”的3-D景物:
還有一種方法是把深度圖估計(jì)變成一個(gè)搜索問題,即假設(shè)相似圖像具有相似深度圖:論文“2d-to-3d image conversion by learning depth from examples“
針對(duì)視頻,可以利用optic flow做motion segmentation,那么修正上面的方法得到:微軟論文“Depth Extraction from Video Using Non-parametric Sampling“
另外一種改進(jìn)是利用dictionary learning優(yōu)化整個(gè)搜索過程:EBAY論文”Im2Depth: Scalable Exemplar Based Depth Transfer“
下面我們看看深度學(xué)習(xí)是如何做的。
首先就是“暴力”方法直接喂數(shù)據(jù)訓(xùn)練模型:2篇論文
有些方法開始考慮傳統(tǒng)方法的結(jié)合,比如CRF:
隨后,雙目立體視覺的空間約束被用作無監(jiān)督學(xué)習(xí)單目的深度估計(jì):三篇論文
自然地采用幀間運(yùn)動(dòng)為單目視頻的深度估計(jì)提供幫助,實(shí)際上是雙任務(wù)聯(lián)合訓(xùn)練的例子:
這是結(jié)合表面法向圖的聯(lián)合訓(xùn)練例子:GeoNet,Geometric Neural Network
結(jié)合view synthesis也是利用幾何約束和成像特性的工作:之前已經(jīng)有文章直接通過Deep3D模型做單目到雙目的合成,這里的工作只是最終結(jié)果是深度估計(jì)而不是圖像。
這是結(jié)合運(yùn)動(dòng)和邊緣信息的聯(lián)合訓(xùn)練例子:
這個(gè)工作延續(xù)了以前利用分割提高深度估計(jì)的想法,只是假設(shè)上attention機(jī)制:
CVPR18 商湯科技的工作:“GeoNet--Unsupervised Learning of Dense Depth, Optical Flow and Camera Pose”,和光流,姿態(tài)一起估計(jì)了,還是無監(jiān)督學(xué)習(xí)方法。
谷歌最近的工作延續(xù)了camera motion的結(jié)合,同時(shí)加上了其中物體各自運(yùn)動(dòng)的信息:可以認(rèn)為是將optic flow分成了camera ego motion和object motion的工作,和加入語義分割有類似的思路吧,文章發(fā)表在AAAI‘19.
總之,深度學(xué)習(xí)在這個(gè)計(jì)算機(jī)視覺的傳統(tǒng)問題上一開始是暴力的數(shù)據(jù)學(xué)習(xí)方法,慢慢地加入了傳統(tǒng)方法的約束和先驗(yàn)知識(shí),一定程度上緩解了數(shù)據(jù)標(biāo)注的壓力(pixel級(jí)別的ground truth是個(gè)挑戰(zhàn)性的工作,structured light帶來的數(shù)據(jù)多半是室內(nèi)的,激光雷達(dá)的數(shù)據(jù)也存在“黑洞”現(xiàn)象),同時(shí)設(shè)計(jì)新的loss function同時(shí)多任務(wù)聯(lián)合訓(xùn)練都能提升模型算法的性能。
1參考文獻(xiàn)
-
“Predicting Depth, Surface Normals and Semantic Labels with a Common Multi-Scale Convolutional Architecture“, 15 -
“Depth Map Prediction from a Single Image using a Multi-Scale Deep Network“, 15 -
“Towards Unified Depth and Semantic Prediction From a Single Image“, CVPR 15 -
“Deep Convolutional Neural Fields for Depth Estimation from a Single Image“, 2015 CVPR -
“Deeper Depth Prediction with Fully Convolutional Residual Networks:, 3DV, 16 -
“SURGE: Surface Regularized Geometry Estimation from a Single Image“, NIPS 16 -
“Estimating Depth from Monocular Images as Classification Using Deep Fully Convolutional Residual Networks“,2016 -
“Single image depth estimation by dilated deep residual convolutional neural network and soft-weight-sum inference“,2017 -
“Depth and surface normal estimation from monocular images using regression on deep features and hierarchical CRFs“,2015 CVPR -
“Unsupervised CNN for Single View Depth Estimation: Geometry to the Rescue“,2016 ECCV -
“Unsupervised Monocular Depth Estimation with Left-Right Consistency“ 2017 CVPR -
“Semi-Supervised Deep Learning for Monocular Depth Map Prediction“ 2017 CVPR -
“Multi-Scale Continuous CRFs as Sequential Deep Networks for Monocular Depth Estimation “,2017 CVPR -
“Unsupervised Learning of Depth and Ego-Motion from Video“,CVPR 2017 -
“Single View Stereo Matching“,2018 -
“Deep Ordinal Regression Network for Monocular Depth Estimation“, CVPR18 -
“Look Deeper into Depth: Monocular Depth Estimation with Semantic Booster and Attention-Driven Loss“, ECCV‘18 -
”Learning Depth from Monocular Videos using Direct Methods“,CVPR 18 -
“Depth Prediction Without the Sensors: Leveraging Structure for Unsupervised Learning from Monocular Videos“, 2018 -
“GeoNet: Geometric Neural Network“, CVPR 18 -
“GeoNet--Unsupervised Learning of Dense Depth, Optical Flow and Camera Pose“, CVPR18 -
“LEGO: Learning Edge with Geometry all at Once by Watching Videos“, AAAI,19
下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
在「小白學(xué)視覺」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。
下載2:Python視覺實(shí)戰(zhàn)項(xiàng)目52講
在「小白學(xué)視覺」公眾號(hào)后臺(tái)回復(fù):Python視覺實(shí)戰(zhàn)項(xiàng)目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計(jì)數(shù)、添加眼線、車牌識(shí)別、字符識(shí)別、情緒檢測、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺。
下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
在「小白學(xué)視覺」公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講,即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。
交流群
歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請(qǐng)按照格式備注,否則不予通過。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~

