caffe下SSD訓練與測試

SSD: Single Shot MultiBox Detector
從 Github 上面下載源工程代碼:caffe-SSD

配置Caffe-SSD

  • 進入caffe-ssd 主目錄:cp /home/xxx/.../caffe-ssd/

    cp Makefile.config.example Makefile.config
    
  • 編譯項目:(進入 caffe-ssd 主目錄)

       make -j8
       make py
       make test -j8
       make runtest -j8
    

    CUDA 版本比較高的需要注釋掉config里面最后一行內(nèi)容:

Makefile.config
  • 數(shù)據(jù)文件準備

    • 預訓練模型(VGG):VGG_ILSVRC_16_layers_fc_reduced.caffemodel
      (下載地址:密碼: t9ub

      下載完畢后將VGG模型放到caffe主目錄下 models\VGGNet 下面(如果沒有的話,models 下面沒有的話mkdir VGGNet)

    • VOC2007 和 VOC2012 數(shù)據(jù)集

      進入caffe主目錄下的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
    

    如果安裝失敗,請轉(zhuǎn)到:(VOC 2007 & 2012 Dataset 密碼:j3in

    緊接著解壓:

    tar -xvf VOCtrainval_11-May-2012.tar 
    tar -xvf VOCtrainval_06-Nov-2007.tar 
    tar -xvf VOCtest_06-Nov-2007.tar
    
    • 將數(shù)據(jù)轉(zhuǎn)換為caffe處理的數(shù)據(jù)類型(LMDB):

      cd caffe主目錄,執(zhí)行:

    ./data/VOC0712/create_list.sh
    ./data/VOC0712/create_data.sh
    

    注意在執(zhí)行 create_data.sh 如果提示no module caffe 的話,用如下指令:
    export PYTHONPATH=$PYTHONPATH:/home/xxx/.../caffe主目錄/python自行修改中間路徑

    • 訓練示例
      在caffe主目錄下面運行:
      python examples/ssd/ssd_pascal.py
    • 評估 & 檢測
    python examples/ssd/score_ssd_pascal.py
    python examples/ssd/ssd_detect.py
    

    這里注意指定使用的快照模型的路徑 & 在caffe主目錄下面運行程序

    ssd_detect.py

訓練

  • 訓練準備
    創(chuàng)建自己的數(shù)據(jù)目錄myData:
cd /data
mkdir myData

/data/VOC0712下面的create_list.sh,create_data.sh,labelmap_voc.protoxt這三個文件拷貝到'data/myData':

cp data/create* ./myData
cp data/label* ./myData

/data/VOCdevkit目錄按照VOC數(shù)據(jù)框架下面創(chuàng)建myData,用來存放自己的數(shù)據(jù)集

cd data/VOCdevikit
mkdir myData
cd myData
mkdir Annotations
mkdir ImageSets
mkdir JPEGImages
cd ImageSets
mkdir Layout
mkdir Main
mkdir Segmentation 

一般地,我們只需要關注 :
Annotations:XML描述文件
ImageSets: Main目錄下面放 train.txt, val.txt, trainval.txt, test.txt
JPEGImages:存放所有圖片

  • 制作VOC數(shù)據(jù)集
    按照VOC Dataset要求整理好數(shù)據(jù)集后,將之轉(zhuǎn)換為caffe的輸入數(shù)據(jù)。首先,根據(jù)自己數(shù)據(jù)集特點,修改labelmap_voc.protxt,注意保留item中background類,其余的類別可以按照自己的需要照葫蘆畫瓢,給一個簡單的示例:
    item.PNG

    然后,依次運行create_list.sh,create_data.sh.注意修改sh中的路徑到你自定義的數(shù)據(jù)集路徑。
    需要注意的參數(shù)有:
    create_data.sh: data_root_dir, data_name,mapfile
    create_list.sh: root_dir,
# create_list.sh 中應該注釋掉
#    if [[ $dataset == "test" && $name == "VOC2012" ]]
#    then
#      continue
#    fi
  • 訓練
    在python主目錄下運行命令:
    python examples/ssd/ssd_pascal.py
#需要指定的路徑與參數(shù)
...
train_data = xxx/xxx_test_lmdb
test_data = xxx/xxx_trainval_lmdb
...
model_name =
save_dir =
snapshot_dir =
job_dir = 
output_result_dir =
...
name_size_file =
pretrain_model =
label_map_file =
...
num_classes =
...
num_test_image =

Note: solver parameters中GPU的指定,個數(shù)不要超過可用個數(shù),可以用nvidia-smi來查看可用GPU情況;另外,也可以調(diào)整solver_param參數(shù),比如:iter_size, max_iter, etc.

檢測

  • score_pascal.py
    Note: 注意修改參數(shù)與ssd_pascal.py中的路徑相同

  • ssd_detect.py**
    Note: 檢測單張圖片,指定‘--gpu_id’, '--model_def', '--model_weights', '--image_file'.

  • 批量完成test images的可視化

    • 利用caffe主目錄下build/examples/ssd/ssd_detect.bin對test結(jié)果進行文本輸出,輸出的格式為 ( path,label,confidence,xmin,ymin,xmax,ymax )

    caffe root 下執(zhí)行:

    build/examples/ssd/ssd_detect.bin models/VGGNet/mydataset/SSD_300x300/deploy.prototxt   models/VGGNet/mydataset/SSD_300x300/mydataset_SSD_300x300_iter_100236.caffemodel    data/VOCdevkit/mydataset/test_img_path.txt --confidence_threshold 0.5 --out_file output.txt`
    
    • 利用plot_detections.py進行檢測結(jié)果的可視化

    output.txt 是 ssd_detect.bin 生成的檢測結(jié)果的txt文檔

    python examples/ssd/plot_detections.py output.txt /home/wxb/caffe-ssd --labelmap-file data/mydataset/labelmap_voc.prototxt --save-dir results/bbox_results/SSD_300x300/Main/img/
    
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容