参考博客:https://blog.csdn.net/samylee/article/details/51822832

将kitti_detec数据转化成VOC格式:比例为8:1:1(原始训练集)

它由7481个训练图像(有标签)和7518个测试图像(无标签)组成。 该基准使用二D边界框重叠来计算用于检测的精确召回曲线,并计算定位相似性以评估鸟瞰视图中的定位估计。

SSD-caffe 实验


训练阶段:

预训练模型:VGG_ILSVRC_16_layers_fc_reduced.caffemodel

初始学习率:   0.0006 
base_lr:      0.00024
发现:loss值震荡下降得很快,迭代400次,loss值从17下降到5.07
最大迭代次数:12万次
最终Loss值:  1.5左右

detect_eval:   0.689 mAp

SSD-caffe 实验

实验结果:

SSD-caffe 实验

SSD-caffe 实验

实验总结:

1.需要删除/home/.../caffe/models/VGGNet/KITTI/SSD_300x300路径下的临时文件,不然会从中断点继续执行。

2.模型:ssd相当于vgg+detector,预训练的基底模型就是去掉了后几层的VGG,这个网络在imagenet上训练过,有分类能力,在ssd中主要用于提取特征。
3.detection_eval:每10000次迭代测一次test的精度mAp。
4.ssd_detect.py:替换prototxt文件,caffemodel文件和图片的路径,然后终端运行python ssd_detect.py就可以看到图片了。如果想进一步提高,可以考虑增加一些行人或自行车样本,平衡数据集

遇到的错误:

I0216 10:16:31.513517 16036 sgd_solver.cpp:138] Iteration 50, lr = 0.001

I0216 10:16:50.461427 16036 solver.cpp:243] Iteration 60, loss = nan
I0216 10:16:50.461556 16036 solver.cpp:259]     Train net output #0: mbox_loss = nan (* 1 = nan loss)
I0216 10:16:51.435171 16036 sgd_solver.cpp:138] Iteration 60, lr = 0.001
I0216 10:17:10.880903 16036 solver.cpp:243] Iteration 70, loss = nan
I0216 10:17:10.880944 16036 solver.cpp:259]     Train net output #0: mbox_loss = nan (* 1 = nan loss)
I0216 10:17:10.881077 16036 sgd_solver.cpp:138] Iteration 70, lr = 0.001

损失值溢出,从网上找来的意见是修改base_lr,乘以0.1,改为0.0001

只是修改solver.prototxt中的参数,重新执行后base_lr没有改变,但是mbox_loss没有再出现=nan的情况

ctrl+c中断程序后,再重新执行,需要删除/home/idc/deep/gjj/caffe/models/VGGNet/VOC0712/SSD_300x300路径下的临时文件,不然会从中断点继续执行。