日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Ubuntu >内容正文

Ubuntu

caffe学习(四):py-faster-rcnn配置,运行测试程序(Ubuntu)

發布時間:2025/3/21 Ubuntu 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 caffe学习(四):py-faster-rcnn配置,运行测试程序(Ubuntu) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

上一篇博客中講了在Ubuntu下安裝caffe的經驗總結(各種問題,簡直懷疑人生了)。博客鏈接:點我打開
faster-rcnn有兩個版本,分別是python的和MATLAB的。這里介紹python版本的faster-rcnn的配置。
網上有很多相關的教程,起初我在配置時也被一些博客坑了,這里分享一下調試和解決問題的過程。

下載工程

輸入指令:

git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git

由于git的速度有點慢,所以可以選擇直接訪問他的網址,在github上直接下載。鏈接:點我打開

我是直接在github上下載的,下載完后發現了caffe-faster-rcnn文件夾中是空的。所以還需要另外下載caffe-faster-rcnn文件夾,可以選擇使用指令:

cd caffe-fast-rcnn git submodule update --init --recursive

或者直接點擊,進入caffe-faster-rcnn,進行下載。下載后拷貝到py-faster-rcnn目錄下即可。

安裝Caffe依賴包

安裝一些要用的依賴包,否則編譯時會報錯。

sudo apt-get install python-pip sudo pip install cython sudo pip install easydict sudo apt-get install python-opencv

每個人裝的都不一樣,少了哪個就裝哪個吧。我編譯的時候少了easydict和python-opencv,這塊問題不多,全部都會自動配置完成。
補充:有一個朋友安裝easydict時發現輸入指令后安裝成功,但是在python shell下import easydict報錯。這種情況可以重啟一下,再試試能不能正常import easydict。有可能是配置還沒立即生效。

編譯caffe

默認用$RCNN_ROOT表示下載下來的py-faster-rcnn目錄所在的路徑。

cd $RCNN_ROOT/lib make -j8

-j8是使用多核編譯,這樣編譯速度快一點。

輸入指令:

先進入到caffe-fast-rcnn目錄下:

cd $RCNN_ROOT/caffe-fast-rcnn

復制Makefile.config.example為Makefile.config。

cp Makefile.config.example Makefile.config

編輯Makefile.config。

sudo gedit Makefile.config

在Makefile.config中有兩處要改。

# In your Makefile.config, make sure to have this line uncommented WITH_PYTHON_LAYER := 1 # Unrelatedly, it's also recommended that you use CUDNN USE_CUDNN := 1

把前面的注釋去掉即可。
WITH_PYTHON_LAYER必須開,否則會報錯。
USE_CUDNN建議開,但是由于代碼提供者的caffe版本是老版本的,沒有”與時俱進“,所以只兼容CUDNN 較老版本的。我裝的是v5.0版本的,開了它就會報錯。
解決辦法有兩種:一、更換CUDNN的版本為老版本的v3.0或是v4.0的;二、注釋掉CUDNN那句代碼,我是直接注釋掉了,使用也不影響。
推薦使用cuDNN,由于不想重新折騰CUDNN,我就沒有更換為老版本的。暫時還沒找到相對好的解決辦法,如果找到了其他會再補充。


—————————————————2017.7.30 補充————————————————-

我使用的是cuDNN v5版本,不能支持py-faster-rcnn。今天找到了一個不需要更換cuDNN,就能使cuDNN v5也能兼容py-faster-rcnn。
參考鏈接:faster rcnn +cudnn V5
其中給出了兩種方法:
一種是到github去下載新版的caffe并將它與py-faster-rcnn中的caffe-faster-rcnn合并,更換成新版的caffe,使其支持cuDNN v5版本;
另一種是自己手動更改一些文件,更改caffe的一些配置使其兼容cuDNN v5。
第一種方法較簡單,但是一旦工程被修改過就很容易出錯,不推薦;所以我采用了第二種方法。

1、用最新版本的caffe源碼目錄中的如下文件替換py-faster-rcnn/caffe-fast-rcnn中的對應文件。

include/caffe/layers/cudnn_relu_layer.hpp,
src/caffe/layers/cudnn_relu_layer.cpp,
src/caffe/layers/cudnn_relu_layer.cu

include/caffe/layers/cudnn_sigmoid_layer.hpp,
src/caffe/layers/cudnn_sigmoid_layer.cpp,
src/caffe/layers/cudnn_sigmoid_layer.cu

include/caffe/layers/cudnn_tanh_layer.hpp,
src/caffe/layers/cudnn_tanh_layer.cpp,
src/caffe/layers/cudnn_tanh_layer.cu

2、用caffe源碼中的這個文件替換掉faster rcnn 對應文件

include/caffe/util/cudnn.hpp

3、打開 py-faster-rcnn/caffe-fast-rcnn 中的 src/caffe/layers/cudnn_conv_layer.cu文件,并將:

cudnnConvolutionBackwardData_v3
替換為
cudnnConvolutionBackwardData

cudnnConvolutionBackwardFilter_v3
替換為
cudnnConvolutionBackwardFilter

修改之后,即使不注釋USE_CUDNN := 1,在編譯時也不會報錯了。


修改完成之后就可以編譯了:

make -j8 make pycaffe -j8

編譯caffe工程和caffe的python支持,要等一會兒。
make完的結果:

make pycaff完的結果:

獲取faster_rcnn_models

輸入指令:

cd $RCNN_ROOT ./data/scripts/fetch_faster_rcnn_models.sh

執行腳本,實質是訪問http://www.cs.berkeley.edu/%7Erbg/faster-rcnn-data/faster_rcnn_models.tgz 下載文件,但是我們這邊訪問總是被拒絕。

好了,這里給出一個翻墻下載的方法,速度也還可以。
用https://mm.ww.rrjs.pw/翻墻下載,這是一個網頁代理,在網頁輸入你想要訪問的地址,它會幫你跳轉到國外的網站去。
在網頁下輸入:
https://dl.dropboxusercontent.com/s/o6ii098bu51d139/faster_rcnn_models.tgz?dl=0
這個url可以在fetch_faster_rcnn_models.sh中查到。

點擊開始瀏覽,即可進行下載了。我下載下來有728.6MB。

把這個文件移到$RCNN_ROOT/data下,將其解壓。
指令和結果截圖:

獲取imagenet_models

方法同faster_rcnn_models。
網上通用的方法是:

cd $RCNN_ROOT ./data/scripts/fetch_imagenet_models.sh

很有可能,你看到的是半天沒反應。

所以還是使用https://mm.ww.rrjs.pw/翻墻下載。
輸入網址:
https://dl.dropbox.com/s/gstw7122padlf0l/imagenet_models.tgz?dl=0
此URL可以在fetch_imagenet_models.sh中找到。
這種方法翻墻的網速還算挺快的。

如果有別的較快的翻墻手段的,或者自己買了vpn的,都可以直接輸入指令下載。

文件有1.1GB。把它復制到$RCNN_ROOT/data下,解壓。
指令和結果截圖:

測試demo.py文件

先直接運行demo.py看看吧:

cd $RCNN_ROOT ./tools/demo.py

我運行后出現了錯誤:

Loaded network /home/xhb/Study/Caffe_Study/py-faster-rcnn-master/data/faster_rcnn_models/VGG16_faster_rcnn_final.caffemodel F0726 11:58:39.877975 3897 syncedmem.cpp:56] Check failed: error == cudaSuccess (2 vs. 0) out of memory *** Check failure stack trace: *** 已放棄

意思是,在載入VGG16_faster_rcnn_final.caffemodel時出錯。查閱資料,發現這是因為gpu的顯存不夠。
如果是自己訓練和測試模型,可以去更改配置文件中的batch_size,將test和train的batch_size都改為1。我們只是測試別人訓練的模型也沒法更改了。
起初我也很困惑,明明我的gpu顯存有4G,而這個要求的應該是3G,應該是可以的。試了很多方法,但是還是會報錯。

下面是官方給出的說明:

  • For training smaller networks (ZF, VGG_CNN_M_1024) a good GPU (e.g., Titan, K20, K40, …) with at least 3G of memory suffices
  • For training Fast R-CNN with VGG16, you’ll need a K40 (~11G of memory)
  • For training the end-to-end version of Faster R-CNN with VGG16, 3G of GPU memory is sufficient (using CUDNN)

退一步考慮,我們下載下來的faster_rcnn_models模型中有兩個:

VGG16_faster_rcnn_final.caffemodel ZF_faster_rcnn_final.caffemodel

VGG16是大型模型,而ZF模型則是較小的模型。
所以我們換成使用ZF模型進行測試。
方法一:
使用如下指令:

./tools/demo.py --net zf

方法二:
由于默認使用VGG16模型,所以修改為使用ZF模型。
打開demo.py:

定義了一個字典,有兩個模型,VGG16和ZF。

修改vgg16為zf,這樣默認載入的就是zf的模型而不是vgg16的了。

保存一下,可以開始測試了。
輸入指令:

cd $RCNN_ROOT ./tools/demo.py

測試結果:
自動載入圖片進行測試,識別出的東西會用紅框標出。

這次只是跑了一個faste-rcnn,依然還有很多問題,后面解決了還會補上解決方案。
我使用的是gpu版本的caffe,如果要使用CPU版本的caffe,可以參考這篇博客:ubuntu16.04+py-faster-rcnn+ZF運行demo.py 。 修改一些東西,使用步驟大致一樣。

下面這幾篇博客給出了一些常見報錯及解決辦法:
為了caffe(四)學習人家的文章
caffe跑試驗遇到錯誤:Check failed: error == cudaSuccess (2 vs. 0) out of memory


—————————————————2017.7.30 補充————————————————-

今天我在文章中補充了cuDNN v5不兼容的解決辦法。
之前我跑vgg16的模型總是說顯存不夠,最后選擇了使用zf模型,在我今天開啟了cuDNN后重新編譯了caffe,重新運行發現能夠正常使用vgg16的模型了。
總結一下:
我的筆記本帶的gpu內存是4G。
只有開啟了cuDNN支持后,要求gpu至少有3G的顯存,可以正常使用vgg16、zf等模型;
若不開啟cuDNN支持,編譯也可以正常通過,但是只有zf可以使用,使用vgg16模型會報錯,提示顯存不夠。
運行VGG16模型的結果:


總結

以上是生活随笔為你收集整理的caffe学习(四):py-faster-rcnn配置,运行测试程序(Ubuntu)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。