Windows上利用Caffe-SSD进行训练和测试

       本文利用SSD: Single Shot MultiBoxDetector这种目标检测方法对视频目标检测数据集VOC2007和VOC2012进行处理.
首先在Windows上配置Caffe-SSD, 然后按照以下步骤进行.
       1. 下载预训练模型:
       链接: http://pan.baidu.com/s/1miDE9h2; 密码: 0hf2.
       将预训练模型放到\models\VGGNet\VOC0712下.
       2. 下载数据集
       链接:
        http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar,
        http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar,
        http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar.
       解压数据集, 将两个VOC2007进行合并; 并将VOC2007和VOC2012放在\data\VOC0712下. 利用\data\VOC0712下的create_list.sh建立trainval.txt和test.txt, 即训练, 验证和测试时的列表文件(可以在Linux虚拟机上执行或者再Cygwin上执行, 另外注释掉”generate image name and size infomation”代码).
       Tranval.txt一共16551个样本, test.txt一共有4952个样本.
       3. 生成MAPFILE.
       在\data\VOC0712下新建label_map.txt, 内容如下:

aeroplane 1
bicycle 2
bird 3
boat 4
bottle 5
bus 6
car 7
cat 8
chair 9
cow 10
diningtable 11
dog 12
horse 13
motorbike 14
person 15
pottedplant 16
sheep 17
sofa 18
train 19
tvmonitor 20

       在\data\VOC0712下新建create_label_nap.bat, 内容如下:

cd 
.\Build\x64\Release\create_label_map.exe --delimiter=" " --include_background=true .\data\VOC0712\label_map.txt .\data\VOC0712\labelmap_voc.prototxt
pause

       得到的labelmap_voc.prototxt即所需的MAPFILE.
       4. 获取测试集图片的尺寸
       在\data\VOC0712下新建get_image_size.bat, 内容如下:

cd 
.\Build\x64\Release\get_image_size.exe .\data\VOC0712 .\data\test.txt .\data\test_name_size.txt
pause

       得到的test_name_size.txt即测试集图片的尺寸.
       5. 生成训练集和测试集
       在\data\VOC0712下新建create_data.bat, 内容如下:

set root_dir=
cd %root_dir%

set redo=1
set data_root_dir=.\data\VOC0712
set mapfile=%data_root_dir%\labelmap_voc.prototxt
set anno_type=detection
set db=lmdb
set min_dim=0
set max_dim=0
set width=0
set height=0

set "extra_cmd=--encode-type=jpg --encoded"

if %redo%==1 (
    set "extra_cmd=%extra_cmd% --redo"
)

for %%s in (trainval test) do (
echo Creating %%s lmdb...

python %root_dir%\scripts\create_annoset.py ^
    --anno-type=%anno_type% ^
    --label-map-file=%mapfile% ^
    --min-dim=%min_dim% ^
    --max-dim=%max_dim% ^
    --resize-width=%width% ^
    --resize-height=%height% ^
    --check-label %extra_cmd% ^
    --shuffle ^
    %data_root_dir% ^
    %data_root_dir%\%%s.txt ^
    %data_root_dir%\%%s_%db%
)
pause 

       在\data\VOC0712得到lmdb格式的训练集和测试集: trainval_lmdb, test_lmdb(也可以采用create_annoset.exe生成训练集和测试集).
       6. 准备MODEL
        将train.prototxt, test.prototxt, deploy.prtotxt, solver.prototxt拷贝到\models\VGGNet\VOC0712\SSD_300x300下. 并根据需求修改solver.prototxt.
       7. 训练模型
       在\examples\ssd\VOC0712下新建ssd_pascal_VOC0712.bat, 内容如下:

cd 
.\Build\x64\Release\caffe.exe train --solver=.\models\VGGNet\VOC0712\SSD_300x300\solver.prototxt 
pause

       这里可以从头开始训练, 也可以借助已经训练好的模型进行微调. 只需在ssd_pascal_VOC0712.bat中指定–model或–snapshot即可. 将训练好的模型存放在\models\VGGNet\VOC0712\SSD_300x300下.
       8. 测试模型
       在\examples\ssd\VOC0712下新建ssd_detect_VOC0712.bat, 内容如下:

cd 
.\Build\x64\Release\ssd_detect.exe --confidence_threshold=0.75 .\models\VGGNet\VOC0712\SSD_300x300\deploy.prototxt .\models\VGGNet\VOC0712\SSD_300x300\VGG_VOC0712_SSD_300x300_iter_60000.caffemodel .\examples\ssd\VOC0712\testex.txt
pause

       VGG_VOC0712_SSD_300x300_iter_60000.caffemodel是已经训练好的模型; testex.txt是测试集图片列表, 其中为测试集图片的绝对路径.
       9. 注
       从准备模型开始到测试模型\examples\ssd下的Python程序实现:
       cd
       训练模型: python examples\ssd\ssd_pascal.py
       在图片上进行测试: python examples\ssd\score_ssd_pascal.py
       在视频上进行测试: python examples\ssd\ssd_pascal_video.py
       在摄像头上进行测试: python examples\ssd\ssd_pascal_webcam.py

你可能感兴趣的:(caffe,caffe-ssd)