复现AVOD
復現過程主要參考https://zhuanlan.zhihu.com/p/87136172 這位博主
之前跟著官方github(https://github.com/kujason/avod)
環境一直配置不好,之后直接使用博主提供的yaml配置文件,之后進行略微調整即可
與博主不同的是,我使用的系統是CentOS。
我把博主的文章搬過來:
一、環境搭建
我使用的系統是ubuntu 16.04,用anaconda搭建的虛擬環境,至于anaconda在ubuntu上怎樣安裝,大家可以自己在網上查,教程很多。
安裝完anaconda以后,anaconda中搭建avod運行環境有兩種方法:
(注意,這兩種方法選擇一種就可以,別兩種全做了)
anaconda 可以把當前環境所裝的軟件導出到一個配置文件中,有了這個配置文件,就可以在別的電腦上通過導入配置文件的的方式讓ananconda自動安裝該環境中所有的軟件。
具體步驟為:
1)下載我導出的配置文件。
文件放在百度網盤里(鏈接:https://pan.baidu.com/s/1s5sUiz6XXlIa1WCJJ065uA, 提取碼:fciq),文件名稱是avod.yaml
2)導入配置文件,復制環境
在終端進入avod.yaml配置文件所在的文件夾,輸入下面的命令即可完成環境復制。復制過程中會下載和安裝軟件,耐心等它安裝完就行。
conda env create -f avod.yaml具體步驟為:
1)創建anaconda環境
在終端輸入如下指令
conda create -n avod python=3.52)按順序安裝軟件
按順序逐行執行以下命令就行
conda install tensorflow-gpu=1.3.0 conda install matplotlib conda install py-opencv conda install pandas conda install pillow conda install scipy conda install sklearn---------------重要的分割線---------------
最后別忘了進入創建好的環境,再執行后面的操作,進入環境的指令為
conda activate avod二、下載代碼并配置工程
代碼可以使用原作者的代碼,也可以使用我注釋的代碼,注釋內容暫時還不多,會持續更新。
1)使用原作者代碼
下載鏈接:https://github.com/kujason/avod
下載之后別忘了執行指令下載依賴庫,指令為:
git submodule update --init --recursive2)使用注釋版代碼
下載鏈接:https://github.com/Little-Potato-1990/avod_Re
(這里我依然使用原作者的代碼,沒有使用注釋版代碼,主要原因是下載不下來)
2. 編譯代碼
代碼中需要編譯的有兩項:
1)wavedata依賴庫
它的目錄在 wavedata/wavedata/tools/core/lib 中,在lib文件夾下按順序執行下列指令
cmake src make2)protobuf文件
protobuf是google的一個開源的用來做數據通信的庫,關于它的介紹大家有興趣可以去網上查。在avod/protos文件中有很多.proto文件,這些文件定義了通信用的數據內容和格式,但是想在程序中使用他們,得使用protobuf對他們進行編譯,給每個.proto文件生成一個python文件。編譯也很簡單,執行下面一條指令就行
protoc avod/protos/*.proto --python_out=.執行中之后會提示你有語法錯誤,不用管他,看avod/protos文件中是否生成了python文件,只要生成了,這一步就可以結束了。
工程是基于python編寫的,定義了很多模塊,這些模塊之間需要互相調用,但各個模塊又是相對獨立的,所以需要把各個模塊的路徑添加到python的環境變量中,以方便他們之間互相調用。
在終端輸入這條指令打開設置環境變量的文件
sudo gedit ~/.bashrc在文件的最后輸入添加下面兩行(注意,這里面的路徑是絕對路徑,這是我電腦里的路徑,大家要根據自己電腦的存放路徑來改)
export PYTHONPATH=$PYTHONPATH:'/home/rq/project/project_detect/avod_Re/wavedata' export PYTHONPATH=$PYTHONPATH:'/home/rq/project/project_detect/avod_Re'配置環境變量以后,為了讓它生效,需要重新打開終端,然后再使用如下指令重新進入anaconda環境
conda activate avod作者使用KITTI數據集來驗證算法,我們來看下具體的步驟
1)下載數據集
KITTI數據集的下載路徑為:http://www.cvlibs.net/datasets/kitti/eval_object.php?obj_benchmark=3d
數據不用全部下載,只需要下載下圖中框出的這些就可以
**
**
(這里的數據集,我也沒有在官網上下載,關鍵問題是,下載不下來 我直接用了另一個博主的網盤文件,我拷貝到自己網盤了,鏈接放下面鏈接:https://pan.baidu.com/s/1oI6pT6NVgKoMkpHh6XQxNQ 提取碼:1edi 自取)**
**
2)下載附加數據文件
這個附加數據文件包括兩部分:
trainval.txt、train.txt、val.txt:這三個文件幫助程序把訓練數據又重新分為訓練集和驗證集
planes:這個是作者自己生成的路面平面擬合參數,它的用處等我們后面講詳細代碼時再講
以上文件我放在了自己的百度網盤里,鏈接: https://pan.baidu.com/s/1s5sUiz6XXlIa1WCJJ065uA, 提取碼:fciq(細心的讀者可能已經發現了,和剛才anaconda環境配置文件的鏈接是一樣的,我把它們放在一起了)
3)整理存放目錄
程序讀取文件是按照一定的目錄結構讀取的,它們的目錄結構如下圖:
要注意的是,testing和training中都有image_2、velodyne兩個文件夾,但它們的內容是不同的,分別是測試集和訓練集中的內容,而它們都有的calib、label_2兩個文件夾中的內容是相同的。
object文件夾放在~/Kitti/文件夾中,這是程序默認的,如果不想放這個目錄里,得修改程序,所以我們先不找這個麻煩了,就先放這了。
(博主的數據集結構這個圖搞得特別好,有一點不同的是,我testing文件夾下沒有放label_2)
5. 生成Mini-batch
Mini-batch 是 RPN 所需要的東西,在終端中輸入如下指令即可生成
執行過程需要幾分鐘,等一等吧。
如果成功,會在avod/data目錄下生成label_clusters和mini_batches兩個文件夾。
一條指令啟動訓練
在我的電腦配置下需要執行24小時左右,我的電腦GPU型號是:GTX 1070Ti
(我的配置是RTX 2080,但是運行到一般服務器斷了,就不想再搞了,繼續下面的吧。)
去忙點別的吧,等訓練完了再過來。
執行如下指令
這時候會提示如下信息
INFO:tensorflow:No new checkpoints found in /home/avod/avod/data/outputs/pyramid_cars_with_aug_example/checkpoints. Will try again in 30 seconds
這是作者的問題,我們在程序里搜索pyramid_cars_with_aug_example,然后把它改成你自己outputs下的真實文件夾名字就行
在我的電腦配置下需要執行30小時左右
接著等吧
執行完以后使用下面的指令調用tensorboard畫出訓練過程中的各個指標的變化趨勢
cd avod/data/outputs/pyramid_cars_with_aug_example tensorboard --logdir logs注意,這只是調用了tensorboard,輸入指令以后終端會給出如下提示
這告訴我們,如果想看變化趨勢的曲線,需要在瀏覽器中打開終端提示的網址,我的曲線如下圖所示
我們可以看到,里面有rpn_loss、avod_loss等指標的變化趨勢(感覺跳動有點大)
(這里,我們還可以在本地的瀏覽器上進行瀏覽,服務器地址+6006即可。如192.168.a.b:6006,效果見下圖)
(后面的沒有做測試了,后續有時間再說…………)
8. Inference
執行run inference,執行這一步是干啥的,暫時還不清楚
這一步是生成帶預測框的2d圖片,輸入指令
會生成圖片,自動存放在文件夾avod/data/outputs/pyramid_cars_with_aug_example/predictions/images_2d/predictions/val/120000/0.1中
這里放幾張圖片看下效果吧
到這里,就完成網絡所有的訓練和使用流程了。
總結
- 上一篇: 软件设计师教程第5版和第4版内容对比
- 下一篇: 马尔萨斯人口模型