1. 程式人生 > >caffe-ssd編譯以及訓練自己的資料集

caffe-ssd編譯以及訓練自己的資料集

編譯caffe之前首先要配置好cuda8.0+cuDNN5.1+opencv3.x的環境

編譯caffe

1.獲取SSD程式碼。在終端開啟想要安裝ssd程式碼的目錄,然後在終端下輸入:

git clone https://github.com/weiliu89/caffe.git
cd caffe
git checkout ssd

2.修改配置檔案。在終端下輸入:

cp Makefile.config.example Makefile.config

如果你用的是Anaconda版的Python,需要修改依賴庫的路徑,配置檔案中預設是Python標準版

3.編譯caffe。在終端下輸入:

mkdir
build cd build ccmake .. # 視覺化配置 make all -j8 # “-j8”是使用CPU的多核進行編譯,可以極大地增加編譯的速度 make install make pycaffe

至此,caffe 的編譯工作已經完成,可以在Python編譯器輸入import caffe下進行驗證,如果沒有報錯,證明編譯完成。

下載資料檔案

1.預訓練模型下載 SSD使用VGGNet進行預訓練,github上作者給的連結打不開,可以到VGGNet 下載,密碼:fucx,並且將該模型放到$CAFFE_ROOT/models/VGGNet/路徑下 2.下載VOC2007和VOC2012資料集 進入到使用者主目錄$HOME下,在終端輸入:

mkdir data
cd data
# Download the data
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar
# Extract the data.
tar -xvf VOCtrainval_11-May-2012.tar
tar
-xvf VOCtrainval_06-Nov-2007.tar tar -xvf VOCtest_06-Nov-2007.tar

3.生成LMDB檔案

cd $CAFFE_ROOT
# Create the trainval.txt, test.txt, and test_name_size.txt in data/VOC0712/
./data/VOC0712/create_list.sh
# You can modify the parameters in create_data.sh if needed.
# It will create lmdb files for trainval and test with encoded original image:
#   - $HOME/data/VOCdevkit/VOC0712/lmdb/VOC0712_trainval_lmdb
#   - $HOME/data/VOCdevkit/VOC0712/lmdb/VOC0712_test_lmdb
# and make soft links at examples/VOC0712/
./data/VOC0712/create_data.sh

如果執行過程中出現報錯:no module named caffe

這是由於caffe的Python環境變數未配置好,可按照下面方法解決:

vim ~/.bashrc 
export PYTHONPATH=/$CAFFE_ROOT/caffe/python 
source ~/.bashrc

訓練和評價demo

1.在$CAFFE_ROOT目錄下執行以下命令進行訓練

# It will create model definition files and save snapshot models in:
#   - $CAFFE_ROOT/models/VGGNet/VOC0712/SSD_300x300/
# and job file, log file, and the python script in:
#   - $CAFFE_ROOT/jobs/VGGNet/VOC0712/SSD_300x300/
# and save temporary evaluation results in:
#   - $HOME/data/VOCdevkit/results/VOC2007/SSD_300x300/
# It should reach 77.* mAP at 120k iterations.
python examples/ssd/ssd_pascal.py

2.執行以下命令可以檢視最近的快照的評分:

python examples/ssd/score_ssd_pascal.py

訓練自己的資料集

以上的部分是利用SSD訓練標準資料集,很多時候我們需要訓練自己的資料集。 1.生成訓練和測試資料 我們自己的資料基本是jpeg或者其他圖片格式的,而caffe輸入的一般是LMDB的資料,所以我們要進行轉換。我們轉換的方法是:

  • 將影象用工具進行標註(工具這裡先不介紹),得到txt標註檔案
  • 將txt檔案和圖片轉換成VOC格式(用指令碼)
  • 將VOC格式轉換為LMDB格式,利用SSD示例程式碼提供的轉換指令碼。

(1) 在 $caffe_root/data/VOCdevkit目錄下建立MyDataSet目錄,該目錄中存放自己轉換完成的VOC資料集; (2) $CAFFE_ROOT/examples目錄下建立MyDataSet目錄; (3) $CAFFE_ROOT/data目錄下建立ljy_test目錄,同時將data/VOC0712下的create_list.sh,create_data.sh,labelmap_voc.prototxt 這三個檔案copy到MyDataSet目錄下 (4) 對上面新生成的兩個create檔案進行修改,主要修改是將VOC0712相關的資訊替換成MyDataSet

未完