将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路徑
(2)主要還是路徑的修改,和num_classes數量的修改
(3)修改num_test_image的數量
2、訓練SSD網絡及其結果
在caffe_SSD_root根目錄下運作:
python examples/ssd/ssd_pascal_caltech.py
運作結果不收斂:
解決辦法:不收斂的原因主要是學習率太高了,降低學習率為base_lr=0.000004,經過120000次疊代後的結果是: