Fast RCNN 訓練自己數據集 (1編譯配置)


FastRCNN 訓練自己數據集 (1編譯配置)

轉載請注明出處,樓燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/

https://github.com/YihangLou/fast-rcnn-train-another-dataset 這是我在github上修改的幾個文件的鏈接,求星星啊,求星星啊(原諒我那么不要臉~~)

FastRCNN是Ross Girshick在RCNN的基礎上增加了Multi task training整個的訓練過程和測試過程比RCNN快了許多。別的一些細節不展開,過幾天會上傳Fast RCNN的論文筆記。FastRCNN mAP性能上略有上升。Fast RCNN中,提取OP的過程和訓練過程仍然是分離的。因此我們在訓練過程中,需要用OP的方法先把圖像OP提取好,再送入Fast RCNN中訓練,在檢測過程中也是如此需要先把相應的測試圖像的OP提取出來送入檢測。

首先我要說的是如何安裝Fast RCNN環境,具體的流程在Ross Girshick的Github上有,他里面主要是講解了如何安裝和使用。我會稍微提到這一部分內容,主要講解,如果要訓練自己的數據,應該修改那些地方,並把我自己訓練的過程跟大家分享一下。

1.當然是Git clone一下Ross的工程啦

這里給出Github的鏈接https://github.com/rbgirshick/fast-rcnn
首先根據他的提示

Make sure to clone with --recursive
git clone --recursive https://github.com/rbgirshick/fast-rcnn.git

這里不要忘了加--recursive

2.在這里簡單介紹一下工程目錄

首先工程的根目錄簡單的稱為 FRCN_ROOT,可以看到根目錄下有以下幾個文件夾

  • caffe-fast-rcnn

    這里是caffe框架目錄

  • data

    用來存放pretrained模型 比如imagenet上的,以及讀取文件的cache緩存

  • experiments

    存放配置文件以及運行的log文件,另外這個目錄下有scripts 用來獲取imagenet的模型,以及作者訓練好的fast rcnn模型,以及相應的pascal-voc數據集

  • lib

    用來存放一些python接口文件,如其下的datasets主要負責數據庫讀取 config負責cnn一些訓練的配置選項

  • matlab

    放置matlab與python的接口,用matlab來調用實現detection

  • models

    里面存放了三個模型文件,小型網絡的CaffeNet 大型網絡VGG16 中型網絡VGG_CNN_M_1024

  • output

    這里存放的是訓練完成后的輸出目錄,默認會在default文件夾下

  • tools

    里面存放的是訓練和測試的Python文件

3.編譯Cython module

cd $FRCN_ROOT/lib
make

進入lib目錄直接make就可以了

4.編譯Caffe and pycaffe

cd $FRCN_ROOT/caffe-fast-rcnn
make -j8 && make pycaffe

這里需要注意的是你直接make -j8 && make pycaffe是會報錯的,

可以看到圖中是是沒有Makefile.config文件,但是作者有一個Makefile.config.example文件,你需要復制它一下然后重命名為Makefile.config

需要注意的是里面還有幾個配置需要添加

  • 打開 USE_CUDNN = 1,這個選項默認情況下時關閉的,讓CUDA支持DNN

  • 打開 WITH_PYTHON_LAYER = 1,這個在默認情況下也是關閉的,FastRCNN需要支持Python接口,因此需要打開

  • Fast RCNN需要hdf5的支持,這個根據自己的Linux里的庫文件安裝路徑添加,不清楚的可以find一下,不過一般情況下,INCLUDE_DIRS 應該添加上 /usr/include/hdf5/serial LIBRARY_DIRS 添加上 /usr/lib/x86_x64-linux-gnu/hdf5/serial

  • 另外把USE_PKG_CONFIG = 1 記得打開,要不然會找不到一些庫文件,PKG是linux用來管理庫文件

這幾個是需要在Makefile.config.example中修改的,最好直接copy一個再修改。
另外還有一個需要注意的地方是,當初樓主的linux版本太高,ubuntu這玩意更新太快了,boost庫的版本太高,Fast RCNN里面用的是1.55版本的boost庫,當時我電腦上是1.59,會出現接口不兼容,記得是廢棄了幾個接口,編譯報錯,裝回1.55的就可以了

5.下載相應的模型文件

Ross給出的操作是這樣的,其實我不推薦這么弄,因為直接用wget去下載的速度比較慢,我們可以打開里面的shell文件,把url粘貼出來,到迅雷里面下載,幾分鍾就好了

cd $FRCN_ROOT
./data/scripts/fetch_fast_rcnn_models.sh

這里以相應的 imagenet_model為例,你到目錄下可以看到3個shell文件,分別是fetch_fast_rcnn_models.s h,fetch_imagenet_models.sh,fetch_selective_search_data.sh,第一是作者訓練好的fast_rcnn模型,第二個是imagenet_model上預訓練好的模型,第三個對應着的是作者基於Pascal VOC數據集提取的selective_search預選框。如果想要看一下fast rcnn的效果,可以直接加載Ross訓練好的fast_rcnn模型,如果要自己訓練的話,記得加載imagenet模型

這里是imagenet_model的shell文件,看家里面的URL了沒,最后的URL鏈接就是這個鏈接再加上FILE變量,鏈接,你直接把它鏈接起來,復制到迅雷中下載就可以了,速度灰常快,直接下載的話炒雞慢啊。
下在之后記得放到data/目錄下去解壓哦,

6.運行網絡和加載模型文件

在tools下面有個demo.py文件

cd $FRCN_ROOT
./tools/demo.py

就可以直接運行,記得看一下里面的參數,這里對顯卡有一定的要求,Ross說必須是3G的顯存以上才可以跑的動哦,里面有3個大小的網絡caffenet是最小的,有顯卡應該就能跑起來,vgg_cnn_m_1024是一個中型網絡,vgg16是大型網絡,后兩個得看顯卡的顯存大小才能跑起,顯存不夠啟動會報錯的。

如果在cpu模式下的話速度是灰常慢的,GPU模式下大概0.2秒左右。

對了demo里面都是有顯示的函數的,如果你是在linux終端下沒有輸出設備運行是會報錯的

正確運行的結果如下
里面有兩個圖片檢測效果,這里放一張

7.關於訓練自己的數據樣本

請等待下一篇 過兩天就放上來 FastRCNN 訓練自己數據集 (2接口修改訓練)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM