天天看點

目标檢測算法SSD用于行人檢測(二):訓練和測試SSD網絡前言一、訓練和測試SSD網絡所需的檔案二、修改SSD網絡的檔案用于訓練Caltech資料集

将Caltech資料集轉化為caffe的輸入資料格式LMDB請參考上一篇文章:https://blog.csdn.net/sunshine_zkf/article/details/86173247

前言

修改SSD代碼,将其适用于隻有一類行人的Caltech資料集上。平台Ubuntu16.04+caffe+SSD+python2.7

一、訓練和測試SSD網絡所需的檔案

在caffe_SSD_root/examples/ssd目錄下:

ssd_pascal.py :用于訓練VOC資料集,訓練自己的資料集基本都是改這個檔案。

通過分析ssd_pascal.py的源碼,可以知道訓練ssd模型需要幾個檔案輸入,分别是

train_data = "examples/VOC0712/VOC0712_trainval_lmdb"
test_data = "examples/VOC0712/VOC0712_test_lmdb"
name_size_file = "data/VOC0712/test_name_size.txt"
pretrain_model = "models/VGGNet/VGG_ILSVRC_16_layers_fc_reduced.caffemodel"  //是base network部分(VGG_16的卷積層)的預訓練參數。
label_map_file = "data/VOC0712/labelmap_voc.prototxt"  //儲存的是物體的name和label的映射檔案,用于訓練和測試

下面的四個檔案由ssd_pascal.py腳本中根據模型定義和訓練政策參數自動生成的
train_net_file = "models/VGGNet/VOC0712/SSD_300x300/train.prototxt"
test_net_file = "models/VGGNet/VOC0712/SSD_300x300/test.prototxt"
deploy_net_file = "models/VGGNet/VOC0712/SSD_300x300/deploy.prototxt"
solver_file = "models/VGGNet/VOC0712/SSD_300x300/solver.prototxt"
           

二、修改SSD網絡的檔案用于訓練Caltech資料集

1、修改ssd_pascal.py

複制ssd_pascal.py,重命名為ssd_pascal_caltech.py

主要就是路徑的修改,修改如下:

(1)修改train_data和test_data路徑

目标檢測算法SSD用于行人檢測(二):訓練和測試SSD網絡前言一、訓練和測試SSD網絡所需的檔案二、修改SSD網絡的檔案用于訓練Caltech資料集

(2)主要還是路徑的修改,和num_classes數量的修改

目标檢測算法SSD用于行人檢測(二):訓練和測試SSD網絡前言一、訓練和測試SSD網絡所需的檔案二、修改SSD網絡的檔案用于訓練Caltech資料集
目标檢測算法SSD用于行人檢測(二):訓練和測試SSD網絡前言一、訓練和測試SSD網絡所需的檔案二、修改SSD網絡的檔案用于訓練Caltech資料集

(3)修改num_test_image的數量

目标檢測算法SSD用于行人檢測(二):訓練和測試SSD網絡前言一、訓練和測試SSD網絡所需的檔案二、修改SSD網絡的檔案用于訓練Caltech資料集

2、訓練SSD網絡及其結果

在caffe_SSD_root根目錄下運作:

python examples/ssd/ssd_pascal_caltech.py
           

運作結果不收斂:

目标檢測算法SSD用于行人檢測(二):訓練和測試SSD網絡前言一、訓練和測試SSD網絡所需的檔案二、修改SSD網絡的檔案用于訓練Caltech資料集

解決辦法:不收斂的原因主要是學習率太高了,降低學習率為base_lr=0.000004,經過120000次疊代後的結果是:

目标檢測算法SSD用于行人檢測(二):訓練和測試SSD網絡前言一、訓練和測試SSD網絡所需的檔案二、修改SSD網絡的檔案用于訓練Caltech資料集

繼續閱讀