雙目測距系列(三)monodepth2模型的測試

前言

基於張正友標定方法的雙目測距在遠距離尤其是室外環境複雜,光照影響強烈的場景下會出現準確度,穩定性以及魯棒性明顯下降的缺點。所以個人認爲,雙目測距未來的發展趨勢還是深度學習技術的引入。 

就雙目測距而言,深度學習有兩大分支:一個是監督學習,即樣本圖片本身帶有深度信息;另外一個是無監督和自監督學習,即樣本圖片還是需要的,但不需要標註深度信息了。 由於對樣本圖片進行深度信息的標註是一個非常有難度和非常耗時費力的工作,所以第二種無需標註的深度學習方法會慢慢成爲主流。 

基於無監督和自監督的深度學習算法模型有好幾種,未來也會越來越多。我們這裏主要介紹monodepth2。它是自監督;而它的前身monodepth是無監督。 個人覺得自監督和無監督本質差不多,叫法不同而已。它們原理大體上都是通過雙目測距的一個攝像頭,比如左攝像頭所拍得的圖片來學習到與之對應右攝像頭圖片,並生成視差圖,然後再通過視差圖又反推出左攝像頭圖片,並和Ground Truth的左圖片形成delta。隨着學習的迭代進行,這個delta會慢慢變小。 當然這個原理只是我目前的理解,其表述很粗糙,也不一定對,後續隨着學習的深入會對原理部分進行補充和更正。

模型測試

Monodepth2的github地址如下:

https://github.com/nianticlabs/monodepth2

其對應的paper爲《Digging into self-supervised monocular depth estimation.pdf》大家可自行下載。

該開源項目已經提供訓練好的各個類型的模型,如下圖紅框所示。

大家可以按照自己的喜好下載好一個或數個模型,當然圖片測距測試時只需要一個模型即可。 我這裏下載了兩個模型(mono_1024x320和stereo_1024x320),來分別對 圖片進行測距。

注意,下載後模型文件是zip格式,需要解壓縮到同名的目錄下面。因爲monodepth包括了2個網絡:unet和pose,前者是求深度圖的,後者是求雙目間姿態的,所以一般模型訓練出來後,至少有2個pth。下面是mono_1024x320所包含的pth文件:

 有了模型後,就可以開始對於某張圖片來測距了。其對應命令爲:

python3 test_simple.py --image_path assets/test_image.jpg --model_name mono+stereo_640x192

大家感興趣可以看看test_simple.py,非常簡單的一個python測試腳本,其後面帶兩個參數,第一個爲待測距的圖片,“asserts/test_image.jpg”爲測試圖片的路徑和名稱,大家可以根據自己應用來進行更改;第二個爲模型,如果你下載的是mono_1024x320,那麼後面的模型名字就應該由"mono+stereo_640x192“改爲”mono_1024x320“。 當然,爲了能找到模型文件,還必須該項目根目錄下面創建models子目錄,然後把前面下載並已經解壓縮的模型目錄置於其下面。

運行結果 

該github項目的運行環境如下所示:

PyTorch 0.4.1/1.0, CUDA 9.1, Python 3.6.6/2.7 and Ubuntu 18.04

剛好我的ubuntu18.0.4平臺已經安裝好gpu版本pytorch, CUDA,python3.6以及opencv3.x。所以該圖片測距的測試腳本就直接運行成功了。

原始圖片如下:

彩色化後的深度圖如下所示:

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章