Ⅰ 如何使用ssd訓練自己的數據
可以參照前一篇文章配置下的ssd,本文假設ssd已經通過windows下的編譯。
1.准備數據
需要根據PASCAL VOC格式 准備對應的數據,推薦一個好用的貼標簽軟體(https://github.com/tzutalin/labelImg)
拿VOC2012為例,VOC2012目錄下需要Annotations、ImageSets、JPEGImages文件夾,Annotations存儲對應的標簽xml信息,JPEGImages存儲圖片數據,ImageSets 主要使用Main文件夾下的數據,Main文件夾保存了對應的訓練、驗證數據集的txt文本
然後使用caffe-ssd-microsoft\data\VOC0712目錄下create_data.bat來生成所需要的lmdb文件(create_data.bat根據實際情況修改內容)
caffe-ssd-microsoft\data\VOC0712目錄下get_image_size.bat用於生成test.txt中對應圖片的大小映射,生成的結果寫入test_name_size.txt
對於後面的訓練需要准備以下文件:
test.txt 用於測試的文件集定義
labelmap_voc.prototxt 標簽定義文件
test_name_size.txt 測試圖片大小定義文件(可通過get_image_size.bat生成)
trainval.txt 訓練驗證集文件定義(數據排列為亂序,可根據實際情況設定)
train.prototxt 訓練網路定義文件
test.prototxt 測試網路定義文件
deploy.prototxt 部署定義文件
solver.prototxt 訓練配置文件
2.修改訓練文件
caffe-ssd-microsoft\examples\ssd下的ssd_pascal.bat是用來訓練數據用的程序(它是調用ssd_pascal.py運行的,ssd_pascal.py用來配置整個的訓練環境),因為windows下的對 路徑和Linux的不同,所以對應的windows下需要找到ssd_pascal.py對應的內容進行修改:
train_data = "{}/data/VOC0712/trainval_lmdb".format(caffe_root)
test_data = "{}/data/VOC0712/test_lmdb".format(caffe_root)
save_dir = "{}/models/VGGNet/VOC0712/{}".format(caffe_root,job_name)
snapshot_dir = "{}/models/VGGNet/VOC0712/{}".format(caffe_root,job_name)
job_dir = "{}/jobs/VGGNet/VOC0712/{}".format(caffe_root,job_name)
output_result_dir = "{}/data/VOC0712/results/{}/Main".format(caffe_root,job_name)
name_size_file = "{}/data/VOC0712/test_name_size.txt".format(caffe_root)
pretrain_model = "{}/models/VGGNet/VGG_ILSVRC_16_layers_fc_reced.caffemodel".format(caffe_root)
label_map_file = "{}/data/VOC0712/labelmap_voc.prototxt".format(caffe_root)
f.write('{}\Build\{}\Debug\caffe train ^\n'.format(caffe_root,'x64'))
Ⅱ 如何用matlab+caffe訓練數據
建議使用已有model進行finetune,新手從頭開始做經常會不收斂。進一步的話可以在現有的比較好的網路結構上進行修改,使之符合自己的需求。最難的就是從零開始設計訓練網路模型。題主可以體驗一下從零開始設計訓練模型,但是不要陷太深。
1.把數據轉化成leveldb或者是lmdb格式
2.編寫好net和solver的prototxt文件
3.在命令行下輸入caffe.exe train -solver XX.prototxt(solver的文件)或者在bat文件里輸入那個指令並運行
基本是這樣,不是很難,自己參照example裡面的文件多試幾次就好