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

