標籤:

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 |