Ubuntu下跑通py
轉載自:https://blog.csdn.net/errors_in_life/article/details/70916583
在不同的伺服器不同的機器上做過很多次實驗,分別遇到各種不一樣的錯誤並且跑通Py-Faster-RCNN,因此,在這裡做一個流程的匯總:
一、下載文件:
首先,文件的下載可以有兩種途徑:
1、需要在官網上下載路徑:https://github.com/rbgirshick/py-faster-rcnn
該方法的下載之後文件夾:py-faster-rcnn/caffe-fast-rcnn/下可能是空白:這個時候你是需要繼續用命令行進行下載的
cdcaffe-fast-rcnn
git submodule update --init --recursive
2、在Ubuntu下直接進行命令行的下載:(個人更推薦這一方法:比較穩定)
gitclone--recursivehttps://github.com/rbgirshick/py-faster-rcnn.git
二、編譯CAFFE:
1、下載完成後我們進入py-faster-rcnn//lib 文件下編譯:
cd $FRCN_ROOT/libmake
2、在py-faster-rcnn/caffe-fast-rcnn/文件路徑下,下載Makefile.config文件:
鏈接網址:https://dl.dropboxusercontent.com/s/6joa55k64xo2h68/Makefile.config?dl=0
3、改變裡面兩個參數:(不改變的話後面的編譯可以進行,但是跑到後面的demo 的時候會發現一大堆的頭文件沒有包含進來,如下圖)
所以改變下面兩個參數非常有必要:
# In your Makefile.config, make sure to have this line uncommentedWITH_PYTHON_LAYER := 1# Unrelatedly, it"s also recommended that you use CUDNNUSE_CUDNN := 1
4、編譯caffe:
cd $FRCN_ROOT/caffe-fast-rcnn
make -j64
可能會出現錯誤,如下所示:
解決辦法:進入自己根目錄下原來的Caffe下面拷貝相應的文件進入caffe-fast-rcnn
1.將./include/caffe/util/cudnn.hpp 換成最新版的caffe里的cudnn的實現,即相應的cudnn.hpp.
2. 將./include/caffe/layers里的,所有以cudnn開頭的文件,例如cudnn_conv_layer.hpp。 都替換成最新版的caffe里的相應的同名文件。
3.將./src/caffe/layer里的,所有以cudnn開頭的文件,例如cudnn_lrn_layer.cu,cudnn_pooling_layer.cpp,cudnn_sigmoid_layer.cu。
都替換成最新版的caffe里的相應的同名文件。如下圖所示:
繼續上面工作:
編譯成功!繼續前面命令行的編譯 :
make pycaffe
編譯正確:繼續後面步驟;
三、下載訓練好的模型:
1、命令行下載:
cd $FRCN_ROOT./data/scripts/fetch_faster_rcnn_models.sh
2、從ImageNet訓練來的Caffe models (ZF, VGG16) pre-trained 模型下載命令(在SCRIPTS文件下包含下載的腳本,如果遇到錯誤一定是伺服器上翻牆的問題)
./data/scripts/fetch_imagenet_models.sh
3、從VOC 2007訓練來的Faster R-CNN models trained 模型下載命令(同上)
./data/scripts/fetch_faster_rcnn_models.sh
4、設置好以上下載之後,我們的./data目錄下會出現需要的模型:
四、跑通demo.py文件:
上面已經編譯好了caffe並且下載做好了訓練好的模型何必要數據:我們現在可以開始跑demo了:
cd $FRCN_ROOT./tools/demo.py
跑通之後我們可以看到自己預測的圖片的目標框:
五、我們不局限於跑通demo.py,我們需要了解demo.py文件裡面的原理:
首先我們來切割demo.py文件裡面的功能塊:無非是:def vis_detections( )、def demo( )、def parse_args()
先來看一張功能解析圖:
我們可以看到:demo.py文件的主流是黃色箭頭、def vis_detections( ) 是紫色箭頭、def demo( ) 是淺藍色箭頭、def parse_args() 是紅棕色箭頭。
隨著箭頭的延伸我們越來越深入了解裡面的函數轉換:其中:scores代表分數;boxes代表目標框對角兩個點四個坐標值;dets代表各個框坐標和分數組成的矩陣、inds超過閾值符合要求的窗口對應的下標。
六、具體代碼內容解釋:
Po出一些詳細的解釋的手稿:
推薦閱讀:
※Ubuntu 進軍移動市場可以在哪些方面取得優勢?
※Ubuntu如何優雅地使用cmake編寫C++程序?
※ubuntu配置eclipse
※Ubuntu17.10/Ubuntu18.04配置以及美化
TAG:Ubuntu |