作者:lzmhezy198344 | 来源:互联网 | 2023-10-11 14:40
参考博客:https://blog.csdn.net/samylee/article/details/51822832
将kitti_detec数据转化成VOC格式:比例为8:1:1(原始训练集)
它由7481个训练图像(有标签)和7518个测试图像(无标签)组成。 该基准使用二D边界框重叠来计算用于检测的精确召回曲线,并计算定位相似性以评估鸟瞰视图中的定位估计。
训练阶段:
预训练模型: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
实验结果:
实验总结:
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路径下的临时文件,不然会从中断点继续执行。