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
未完