1. 程式人生 > >【全網第一篇】Gibson Env 搭建復現和使用解讀

【全網第一篇】Gibson Env 搭建復現和使用解讀

專案網址:http://gibson.vision

論文:http://gibson.vision/Gibson_CVPR2018.pdf

官方github連結:https://github.com/StanfordVL/GibsonEnv

入選 CVPR2018 年的專案 Gibson Environment。這是一個主要適用於機器人導航任務的模擬平臺。我們在傳統的圖形學渲染管線基礎上進行了創新,使用神經網路作為渲染引擎 (neural network rendering engine),達到了近乎真實環境的渲染效果。通過和物理引擎的融合,我們可以做到在計算機裡1:1地模擬真實環境。

相關工作:

1.我們使用基於圖片的渲染 (IBR) 方法,接合神經網路,達到了高效和真實的渲染,可以做到在計算機裡1:1地模擬真實環境。

通過Gibson Environment,我們可以把真實的場景 (例如家庭住宅,學校,辦公室) 虛擬化,以節約大量在真實環境訓練機器人的資源。另一方面,我們可以把虛擬環境中訓練出來的機器人部署到真實環境。這為實現真實的強化學習提供了有力的基礎。

現階段很多研究者在虛擬環境中訓練機器人,如在計算機遊戲GTA5中訓練一個自動駕駛模型,但是放到現實中模型讀到的真實環境和計算機中的畫素呈現有各種色彩、光照等各種差異,這時候模型在現實中無法使用。在我們的工作中,我們使用基於圖片的渲染 (IBR) 方法,接合神經網路,達到了高效和真實的渲染。使得能夠在計算機中1:1的完全模擬現實世界,在這種環境下訓練的模型可遷移到現實中使用。我們的渲染方法是直接從真實環境中採集圖片,把渲染的問題定義為“視角合成”問題,即給定幾個從已有的視角採集的圖片,合成一個新的視角。

2.我們收集並開源了572個建築物(1440層)的掃描資料集。作為現有最大的資料集,我們比同類資料集(例如matterport3D)大一個數量級

近年來隨著實景掃描技術的進步,有大量的樓房,住宅,真實場所被掃描並儲存成了虛擬檔案。最初,這樣的檔案主要被應用於房地產網路銷售。Gibson Environment可以模擬任何被掃描過的真實環境,這是它的一個巨大優點。你完全可以掃描自己的房子,然後用Gibson Environment為之生成一個虛擬的環境,訓練你的掃地機器人。

 

B方式安裝gibson

1 環境檢查:

The minimum system requirements are the following:

For building from the source(B):

  • Ubuntu >= 14.04
  • Nvidia GPU with VRAM > 6.0GB
  • Nvidia driver >= 375
  • CUDA >= 8.0, CuDNN >= v5
nvidia-smi #檢視顯示卡驅動
cat /usr/local/cuda/version.txt  #檢視cuda版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

 筆記本環境配置:

NVIDIA-SMI 384.130

CUDA Version 8.0.61

CUDNN_VERSION 6.0.21

2 開始安裝

sudo apt-get update 
sudo apt-get install libglew-dev libglm-dev libassimp-dev xorg-dev libglu1-mesa-dev libboost-dev mesa-common-dev freeglut3-dev libopenmpi-dev cmake golang libjpeg-turbo8-dev wmctrl xdotool libzmq3-dev zlib1g-dev

需要預先安裝好anaconda3

conda create -n py35 python=3.5 anaconda 
source activate py35 # 剩下的命令要在啟用的conda python35中執行
conda install -c conda-forge opencv  #我在這一步安裝打confa-forge環境中生成了python36環境
pip install http://download.pytorch.org/whl/cu80/torch-0.3.1-cp36-cp36m-linux_x86_64.whl #這一步與官方不同,根據自己打cuda版本和檢視conda——forge中的python版本修改該命令。
pip install torchvision==0.2.0
pip install tensorflow==1.3
git clone https://github.com/StanfordVL/GibsonEnv.git
cd GibsonEnv
./download.sh # this script downloads assets data file and decompress it into gibson/assets folder
./build.sh build_local ### build C++ and CUDA files
pip install -e . ### 注意有空格和一個點,安裝已打包好的專案 Install python libraries

注意:

./download.sh 會下載10個G的資料,開啟檔案看到下載地址

迅雷下載會快很多。下載好了移動到tmp/gibson/

將./download.sh 裡面的 兩行wget 註釋掉,再次執行./download.sh 即可完成解壓

如果要執行訓練demo,則繼續安裝OpenAI baselines:

git clone https://github.com/fxia22/baselines.git
pip install -e baselines

至此,gibson env安裝完成。 

3 測試

如果採用B方式(原始碼安裝),則不需要docker,確認啟用py35環境後,直接輸入以下命令即可測試:

python examples/demo/play_husky_nonviz.py

能夠使用鍵盤WSAD控制一個小車在斯坦福的Gates大樓模型裡巡視,沒有合成視角的輸出

I7+1080顯示卡的筆記本上測試,幀率150 fps左右 

 

python examples/demo/play_husky_camera.py

能夠使用鍵盤WSAD控制一個小車在斯坦福的Gates大樓模型裡巡視,同時有來自原圖合成的RGB視角和depth視角

該視角與現實有細節的差別,但是基本滿足了物體形狀和景深與現實11,更容易實現移植到現實

I7+1080顯示卡的筆記本上測試,幀率在27 fps左右,稍微卡頓

 

類人機器人的測試(按鍵太多,極難控制,除了跌落無法正常操作):

 

其他的測試檔案:

 

4 訓練

python examples/train/train_ant_navigate_ppo1.py

訓練一個螞蟻機器人在斯坦福的Gates大樓模型裡巡視,同時有合成的RGB視角和depth視角的輸出

I7+1080顯示卡的筆記本上測試,每次迭代時間在13 s左右,時間太久,關閉視角輸出會得到提升

 

car機器人的訓練:

 

其他訓練檔案:

 

5 問題:

conda install -c conda-forge opencv 時發生:

inking packages ...
CondaOSError: OS error: failed to link (src='/home/thu/anaconda3/pkgs/icu-58.2-hfc679d8_0/lib/icu/current', dst='/home/thu/anaconda3/envs/py35/lib/icu/current', type=3, error=FileExistsError(17, 'File exists'))

解決:刪掉 home/thu/anaconda3/envs/py35/lib/icu/下的current檔案或資料夾,重試

 

 

通過A方法在伺服器上安裝gibson env:

1. install docker and nvidia-docker2.0 first.

暫時不裝了,但肯定比方式B要簡單。

 

GibsonE5-2697 + tesla v100平臺的基準幀率測試:

在有直觀的視角輸出時,解析度128要比512幀率提升3~6

 

自定義加入的環境場景檔案

每一個下載的環境(比如建築的掃描模型),都需要一個yaml檔案,配置了該環境的各種引數。

環境存放在gibson/core/envs

Gibson提供一組方法定義自己的環境動作:

 

完整的Gibson環境資料集

Gibson底層的空間資料庫包括572棟完整的建築,由1447層組成,總面積211k m2s。資料庫採用三維掃描重建的方法從真實的室內空間中採集。對於每個空間,我們提供:3D重構、RGB影象、深度、表面法線,以及一小部分空間的語義物件註釋。在這個頁面中,您可以看到每個空間的各種視覺化效果,包括3D解剖,使用隨機控制的husky代理進行探索,以及標準的點對點導航集。

可以下載各種場景模型用來訓練測試。

https://github.com/StanfordVL/GibsonEnv/blob/master/gibson/data/README.md