1. 程式人生 > >faster rcnn訓練測試+單獨測試預訓練好的模型

faster rcnn訓練測試+單獨測試預訓練好的模型

這裡主要講兩個方面內容,一方面是從無到有如何成功執行demo(假設你的Caffe已經可以用),另一方面是如何自己訓練模型,可以用自己的資料,也可以是本文的VOC資料集。

一、執行demo
直接按照git上的readme進行安裝和編譯即可,由於git上的說明較為簡單,所以接下來詳細介紹:

1、Clone the faster r-cnn
注意引數–recursive(遞迴),要不caffe-fast-rcnn資料夾就是空的,看看git的目錄就知道為什麼了。另外假設你下載下來的檔名字叫py-faster-rcnn,接下來所有的操作都是在這個資料夾下面進行,所以請記住這個名字。

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

2、拷貝Makefile.config

cd $FRCN_ROOT/caffe-fast-rcnn
cp Makefile.config.example Makefile.config
  • 1
  • 2

這裡要修改Makefile.config兩處地方:

2.1、將makefile.config裡面的以下兩行:

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib
  • 1
  • 2

換成這兩行:其實就是加上了hdf5的路徑

INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial/
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu/hdf5/serial/
  • 1
  • 2

否則在編譯caffe的時候遇到這樣的錯誤

這裡寫圖片描述

2.2、將makefile.config裡面的 WITH_PYTHON_LAYER :=1前面的註釋去掉,這是因為faster R-CNN是要Python介面的,所以這一項要有,不能註釋。

否則會在執行demo.py的時候遇到這樣的錯誤:

這裡寫圖片描述

3、build the Cython modules

cd py-faster-rcnn/lib
make
  • 1
  • 2

4、build Caffe and pycaffe

cd py-faster-rcnn/caffe-fast-rcnn
make -j32 && make pycaffe
  • 1
  • 2

前面一個是編譯Caffe,後面一個是編譯python介面,&&表示在前面執行成功的前提下執行後面

5、下載Faster R-CNN的預訓練模型

cd py-faster-rcnn
./data/scripts/fetch_faster_rcnn_models.sh
  • 1
  • 2

6、執行demo.py

cd py-faster-rcnn
./tools/demo.py
  • 1
  • 2

二、自己訓練模型

1、先下載資料
假設用VOC資料集來訓練,如何下載請參考另一篇博文:YOLO演算法的Caffe實現。下載好了以後把該資料夾放在/py-faster-rcnn/data/目錄下,並改名為VOCdevkit2007,為什麼一定要改成這個名字是因為psacal_voc.py裡面預設dataset的名字是這樣命名,所以你也可以修改pascal_voc.py內容,但是相比之下改資料夾名字更簡單。這裡面主要包含三個資料夾:Annotations資料夾裡面是.xml檔案,放的是對應圖片的座標和尺寸資訊。JOEGImage資料夾裡面放的就是圖片。ImageSets資料夾下的Main資料夾放的train.txt,text.txt主要是訓練和測試的影象名稱及路徑。

2、下載預訓練模型
因為faster R-CNN的訓練是在一個已訓練的模型上fine-tuning的,所以需要先下載一個預訓練模型。下載地址:https://pan.baidu.com/s/1hsxx8OW,下載的壓縮檔案叫imagenet_models.rar,下載好了以後把它解壓到/py-faster-rcnn/data/ 下面,這個imagenet_models資料夾下面包含3個caffemodel:

這裡寫圖片描述

3、修改檔案
這一步主要是當你需要針對自己的資料集進行訓練時候,你需要自己製作資料並且修改檔案中的類別資訊。如果你還是用pascal VOC資料集來訓練,那麼這一步可以跳過。一方面是製作資料:自己製作的資料替換原來VOCdevkit2007資料夾下面的三個資料夾:Annotations,JOEGImage和ImageSets。另一方面是修改檔案:主要是solver.prototxt,train.prototxt,text.prototxt等,這些檔案都在/py-faster-rcnn/models/下面,根據不同資料集和不同模型以及不同訓練方式分門別類地放在不同目錄下。以/py-faster-rcnn/models/pascal_voc/ZF/faster_rcnn_end2end/train.prototxt的修改為例,如下圖的資料層,這裡因為pascal voc資料集包含20個類別,然後模型中需要用到這20個類別和一個背景類,所以最後一個引數num_classes是21。

這裡寫圖片描述

還有如下的全連線層:前面一個是classification的輸出,21(20+1)個類別,後面一個是regression的輸出,84(21*4)個座標。所以如果你實際的物體類別是5個,那麼相應的這些類別要改成6(加上背景),座標的話就是24。

這裡寫圖片描述

4、訓練模型
首先看下py-faster-rcnn/experiments/scripts/資料夾下面主要包含三個指令碼,分別是faster RCNN的交替訓練版本,faster RCNN的端到端訓練版本,fast RCNN訓練版本。

這裡寫圖片描述

以faster RCNN交替訓練版本為例,進到py-faster-rcnn資料夾,然後執行
./experiments/scripts/faster_rcnn_alt_opt.sh 0 ZF pascal_voc
這個命令的意思是執行faster_rcnn_alt_opt.sh這個指令碼,後面的0表示GPU的ID,ZF表示網路的名字,pascal_voc表示dataset,這三個引數都是在這個.sh指令碼的開頭定義好了,如下截圖:

這裡寫圖片描述

看一下faster_rcnn_alt_opt.sh裡面的主要內容,如下圖:上面一半是train用,下面一半是test用。在train中指明瞭訓練的.py指令碼,GPU的id,網路的名字,預訓練的模型,資料等。

這裡寫圖片描述

錯誤:執行./experiments/scripts/faster_rcnn_alt_opt.sh 0 ZF pascal_voc出錯:

這裡寫圖片描述

解決:很明顯是找不到text_format,所以在/py-faster-rcnn/tools/下面找到對應的train_****.py。比如你是用faster rcnn的交替訓練,那麼開啟train_faster_rcnn_alt_opt.py,在開頭新增一句:import google.protobuf.text_format。然後再執行./experiments/scripts/faster_rcnn_alt_opt.sh 0 ZF pascal_voc 就可以成功運行了,如下圖:

這裡寫圖片描述

5、測試模型

如第4步中的第二個圖,在訓練結束後會在訓練好的模型上測試結果,如下圖:用test_net.py指令碼來測試,def表示測試的網路結構test.prototxt,net表示已經訓練好的Faster RCNN模型,imdb表示測試資料,cfg表示配置檔案。

這裡寫圖片描述

也可以直接在命令列中直接執行如下命令(在專案的根目錄下執行):

time ./tools/test_net.py --gpu 0 --def models/pascal_voc/VGG16/faster_rcnn_end2end/test.prototxt --net output/faster_rcnn_end2end/voc_2007_trainval/vgg16_faster_rcnn_iter_70000.caffemodel --imdb voc_2007_test --cfg experimets/cfgs/faster_rcnn_end2end.yml
  • 1

如下圖表示在依次測試測試集中的影象,4952表示測試集中的影象數量,0.136表示測試一張影象所用的時間。畢竟是VGG網路,測試時間比較長。

這裡寫圖片描述

測試時候遇到過類似這樣的錯誤,本來測試的結果應該寫到相應的txt檔案中,但是這個錯誤表示找不到測試結果的txt檔案。

這裡寫圖片描述

解決的辦法一方面可以手動在data目錄下新建一個檔案目錄~/data/VOCdevkit2007/results/VOC2017/Main/
或者在~/lib/datasets/pascal_voc.py指令碼中新增這兩行:表示如果目錄不存在,則新建目錄。

這裡寫圖片描述

最後的測試結果如下,AP表示評價指標mAP,這裡列出了每個類別的mAP值以及最後的均值

這裡寫圖片描述

並且會在你的資料集目錄下生成一個annotations_cache資料夾(比如在我這邊就是~/py-faster-rcnn/data/VOCdevkit2007/annotations_cache/annots.pkl),裡面有個annots.pkl檔案詳細記錄了每個測試影象的檢測結果資訊。

相關推薦

faster rcnn訓練測試+單獨測試訓練模型

這裡主要講兩個方面內容,一方面是從無到有如何成功執行demo(假設你的Caffe已經可以用),另一方面是如何自己訓練模型,可以用自己的資料,也可以是本文的VOC資料集。 一、執行demo 直接按照git上的readme進行安裝和編譯即可,由於git上的說明較為簡單,所以接下來詳細介紹: 1、Clone

Faster RCNN程式碼理解(Python) ---訓練過程

最近開始學習深度學習,看了下Faster RCNN的程式碼,在學習的過程中也查閱了很多其他人寫的部落格,得到了很大的幫助,所以也打算把自己一些粗淺的理解記錄下來,一是記錄下自己的菜鳥學習之路,方便自己過後查閱,二來可以回饋網路。目前程式設計能力有限,且是第一次寫部落格,中間可能會有一些錯誤。 目錄 第一步

faster-rcnn之caffe下利用vgg16訓練及預測

工作中經常用到py-faster-rcnn做圖片的檢測與識別,訓練過程有必要記錄一下,下面是參照網上的一些資料整理實踐後的總結: py-faster-rcnn的github地址:https://github.com/rbgirshick/py-faster-r

py-faster-rcnn + ZF 實現自己的資料訓練與檢測(一)

0.前言 最近兩個星期,一直在看faster rcnn物體檢測,在一段折騰之後,總算能夠訓練自己的資料並進行物體檢測了。這篇部落格就當作是對最近整個實驗過程的記錄吧。首先先從最開始如何配置py-fas

caffe學習(四):py-faster-rcnn配置,執行測試程式(Ubuntu)

上一篇部落格中講了在Ubuntu下安裝caffe的經驗總結(各種問題,簡直懷疑人生了)。部落格連結:點我開啟 faster-rcnn有兩個版本,分別是Python的和MATLAB的。這裡介紹python版本的faster-rcnn的配置。 網上有很多相關的教程,起初我在配置

faster RCNN(keras版本)程式碼講解(3)-訓練流程詳情

一.整體流程概述 1.輸入引數,其實輸入1個就行了(D:\tempFile\VOCdevkit),另外一個resnet權重只是為了加快訓練,如圖: 2.從VOC2007資料集中讀取資料,變成想要的資料格式 3.定義生成資料的迭代器 4.定義3個網

py-faster-rcnn在Windows下的end2end訓練

一、製作資料集1. 關於訓練的圖片不論你是網上找的圖片或者你用別人的資料集,記住一點你的圖片不能太小,width和height最好不要小於150。需要是jpeg的圖片。2.製作xml檔案1)LabelImg如果你的資料集比較小的話,你可以考慮用LabelImg手工打框http

faster-rcnn tensorflow windows demo測試

重點參考連結: 第1步:將原始碼和需要用到的資料集先下載下來 the training, validation, test data and VOCdevkit資料集: http://host.robots.ox.ac.uk/pascal/VOC/voc

Faster-RCNN-tf使用訓練模型驗證測試集 test_net.py

對應原始碼地址:https://github.com/endernewton/tf-faster-rcnn 1、開啟tools目錄下的test_net.py檔案 修改(1): parser.add_argument('--model', dest='model', help='mo

faster rcnn end2end 訓練測試

除了前面講過的rpn與fast rcnn交替訓練外,faster rcnn還提供了一種近乎聯合的訓練,姑且稱為end2end訓練。 根據論文所講,end2end的訓練一氣呵成,對於前向傳播,rpn可以作為預設的網路提供proposal.而在後向傳播中,rpn,與fast r

深度學習Caffe實戰筆記(21)Windows平臺 Faster-RCNN 訓練模型測試資料

前一篇部落格介紹瞭如何利用Faster-RCNN訓練自己的資料集,訓練好會得到一個模型,這篇部落格介紹如何利用訓練好的模型進行測試資料。 1、訓練好的模型存放位置 訓練好的模型存放在faster_rcnn-master\output\faster_rcnn_

Faster rcnn 安裝、訓練測試、除錯

 先上個檢測效果: (1)圖片人臉檢測+關鍵點                                        (2)攝像頭實時人臉+關鍵點 **********************************************************

faster-rcnn訓練測試自己的資料(VGG/ResNet)以及遇到的問題

http://www.cnblogs.com/caffeaoto/p/6536482.html主要參照這個教程改的需要準備的檔案:Annotation檔案,圖片,用來訓練的圖片名稱list.txt訓練:需要改的檔案:lib/datasets/下的pascal_voc.py,f

Faster R-CNN-MXNet框架下的訓練測試

(Mxnet官方版本中對Faster R-CNN的實現)1 下載預訓練模型和資料集進入example/rcnn資料夾1) 安裝附加依賴的環境,其中會因為超時多次中斷example/rcnn$:bash script/additional_deps.sh2) 下載VOC資料集e

SiameseFC-TensorFlow 程式碼詳細註解(一):訓練模型下載轉換測試以及結果視覺化(轉載)

這篇部落格主要的目的就是簡單地跑一下實驗,讓下載的程式碼能用預訓練的模型去測試單個視訊,並對結果視覺化,從視覺上感受一下這個跟蹤演算法的效果,至於如果要自己訓練自己的模型該如何準備訓練資料,如何設計自己的模型,如何訓練自己的模型,以及如何評估自己的模型等,這些問題都將在後面的

【轉載】 Faster-RCNN+ZF用自己的數據集訓練模型(Matlab版本)

cmp fin ont -m lac tails ram pos 識別 說明:本博文假設你已經做好了自己的數據集,該數據集格式和VOC2007相同。下面是訓練前的一些修改。 (做數據集的過程可以看http://blog.csdn.net/sinat_30071459/art

隨機切分csv訓練集和測試

ont mas set pytho ice random 設置 open write 使用numpy切分訓練集和測試集 覺得有用的話,歡迎一起討論相互學習~Follow Me 序言 在機器學習的任務中,時常需要將一個完整的數據集切分為訓練集和測試集。此處我們使用numpy完

sklearn獲得某個引數的不同取值在訓練集和測試集上的表現的曲線刻畫

from sklearn.svm import SVC from sklearn.datasets import make_classification import numpy as np X,y = make_classification() def plot_validation_curve

sklearn獲得某個參數的不同取值在訓練集和測試集上的表現的曲線刻畫

cati from ssi plot tor atp test scores pyplot from sklearn.svm import SVC from sklearn.datasets import make_classification import numpy

python 把資料分成訓練集和測試

from sklearn.model_selection import train_test_split import pandas as pd f1=pd.read_excel('aaa.xlsx') f1.columns #Index(['X', 'Y'], dtype='object')