開源|MultiNet模型解決自動駕駛中的道路分割、車輛檢測和街道分類(附源代碼)
文章來源:GitHub 作者:Marvin Teichmann 翻譯:張妮娜
MultiNet模型分析
MultiNet能夠同時完成道路分割、汽車檢測和道路分類的任務。MultiNet模型的實時存檔速度和分割性能都處於最先進水平。詳細的模型描述請查閱我們的論文。
優化後的MultiNet模型在實時速度下表現良好,其要素KittiSeg在道路分割方面設置了一項新的最先進技術,而另一要素KittiBox在推理速度和檢測性能上對基線Faster-RCNN進行了改進。
該模型被設計為encoder-decoder架構,在每項任務中使用一個VGG編碼器和幾個獨立解碼器。此存儲庫包括允許在一張網路中將幾個tensorflow模型的通用代碼組合在一起,不可視任務的代碼由KittiSeg、KittiBox和KittiClass存儲庫提供,這些存儲庫在該項目中作為子模塊。該項目的構建旨在與TensorVision後端兼容,後端能夠以十分簡潔的方式組織實驗。
要求
代碼需要Tensorflow 1.0版本以及以下python庫:
matplotlib
numpy
Pillow
scipy
runcython
這些模塊可以通過以下代碼進行安裝:
pip install numpy scipy pillowmatplotlib runcython or pip install -r requirements.txt。
建立
1、克隆該存儲庫:MarvinTeichmann/MultiNet
2、將所有子模塊初始化:git submodule update--init --recursive
3、通過 cd submodules / KittiBox /submodules / utils / && make構建cython代碼
4、[可選]下載KittiRoad數據:
ⅰ. 這裡檢索 kitti 數據url網址: Download
ⅱ.指令python download_data.py --kitti_url URL_YOU_RETRIEVED
5、[可選]運行cdsubmodulesn / KittiBox / submodules / KittiObjective2 / && nmake構建Kitti評估代碼(更多詳細信息請參閱子模塊/ KittiBox /submodules / KittiObjective2 / nREADME.md)
使用demo.py運行模型只需要完成步驟1至3。只有當您想使用train.py訓練模型時,才需要步驟4和5。需要注意的是,我建議使用download_data.py,而不是自行下載數據。該腳本還將提取並準備相應的數據。如果您想控制數據的存儲位置,請參閱「管理數據存儲」這部分內容。
教程
入門
運行:python demo.py --gpus 0 --inputdata / demo / um_000005.png使用demo.png作為輸入指令以獲取預測信息。
運行:python evaluate.py對一個訓練模型進行評估。
運行:python train.py --hypes hypes /multinet2.json訓練一個multinet2模型
如果您想理解這些代碼,我建議先查看demo.py。我已經在文件中儘可能地記錄下每個步驟。
只有MultiNet3(同時完成檢測和分割任務)的訓練是開箱即用的。用於訓練分類模型的數據是不公開的,不能用於訓練完整的MultiNet3(用於檢測、分割和分類任務)模式。完整的代碼已在此提供,因此,如果您有自己的數據,您仍然可以訓練MultiNet3模型。
管理數據存儲
MultiNet允許將數據存儲與代碼分離。這在許多伺服器環境中非常受用。默認情況下,數據存儲在MultiNetn / DATA文件夾和MultiNet / RUNS中運行輸出。可以通過設置bash環境變數$ TV_DIR_DATA和$ nTV_DIR_RUNS來更改此行為。
在.profile中,包括導出TV_DIR_DATAn =「/ MY / LARGE / HDD / DATA」在內,所有數據將被下載到/ MY / LARGE / HDD / DATA n/。在您的.profile中包括導出TV_DIR_RUNS =「/ MY / LARGE / HDD / RUNS」,所有運行將保存到/ MY /n LARGE / HDD / RUNS / MultiNet
修改模型並在您自己的數據上進行訓練
該模型由文件hypesn / nmultinet3.json控制。此文件將代碼指向對子模型的實現過程中。使用MultiNet代碼,將已提供的所有模型進行載入,並將解碼器集成到一個神經元網路中。要在您自己的數據上進行訓練,足以修改子模型的hype文件。從KittiSeg入手將是最佳選擇,KittiSeg是有據可查的。
RUNDIR和實驗組織
MultiNet可幫助您組織大量實驗。為此,每次運行的輸出都存儲在MultiNet的rundir中。每個rundir包含:
output.log 列印到屏幕上的一個訓練輸出副本
tensorflowevents可在rundir中運行
tensorflow checkpoints,訓練模型可從rundir中載入
[dir]images一個包含示例輸出圖像的文件夾。 image_iter控制整個驗證集的轉儲頻率
[dir] model_files為構建模型所需的所有源代碼的副本。如您有很多版本的模型,此項操作對您是很有幫助的。
為跟蹤所有實驗,您可以以—name為flag,為每個rundir建立獨特的名稱。--projectn flag將運行存儲在單獨的子文件夾中,可以運行不同系列的實驗。例如,運行python train.py --project nbatch_size_bench --name size_5將使用dir作為rundir:$ TV_DIR_RUNS/ KittiSeg / nbatch_size_bench / size_5_KittiSeg_2017_02_08_13.12。
使用flag--nosave非常有用,而非在rundir中插入垃圾信息。
有用的Flag&Variabels
以下Flag在使用KittiSeg和TensorVision時將會起到幫助,所有Flag可用於所有腳本。
--hypes:指定hype文件的使用
--logdir:指定logdir的使用
--gpus:指定在哪些GPU上運行代碼
--name:為運行程序分配一個名稱
--project:將項目分配給運行程序
--nosave:調試運行,logdir將被設置為debug
此外,以下TensorVision環境中的Variables將非常有用:
$ TV_DIR_DATA:指定數據的元目錄
$ TV_DIR_RUNS:指定輸出的元目錄
$ TV_USE_GPUS:指定默認GPU行為
在集群上,設置$ TV_USE_GPUS = force是有用的。這將使flag—gpus變為強制性操作,並確保在正確的GPU上運行。
論文地址:https://arxiv.org/pdf/1612.07695.pdf
GitHub資源:MarvinTeichmann/MultiNet
兼職翻譯 招聘
《全球人工智慧》面向全球招聘多名海外:圖像技術、語音技術、自然語言、機器學習、數據挖掘等專業技術領域的兼職翻譯,工作內容及待遇請在公眾號內回復「兼職+個人微信號」聯繫工作人員。
熱門文章推薦活動|12位AI大佬齊聚ACM TURC 2017-中國(已開始報名)
恐怖|50 億條用戶隱私信息泄露,嫌犯竟是互聯網名企工程師
乾貨|周志華揭開機器學習本質的57張PPT
重磅|百度PaddlePaddle發布最新API 從三大方面優化了性能
重磅|NVIDIA發布兩款"深度神經網路訓練"開發者產品:DIGITS 5 和 TensorRT
重磅|「薩德」——不怕!我國的人工智慧巡航導彈可破解
重磅|MIT發布腦控機器人:用腦電波(10毫秒分類)糾正機器人錯誤
重磅|谷歌預言:2029年通過納米機器人和器官再造 或將實現人類永生
重磅|Messenger bot錯誤率高達70% Facebook被迫削減AI投資
招聘|騰訊大規模招聘AI開發工程師 年薪30-80W
推薦閱讀: