复现内容
SSD论文在PASCAL VOC2007 test detection results的SSD300的前两行
不过在论文SSD用的是VGG作为backbone,而我所用代码的backbone则是resnet50,其他方便我尽量与论文一致
SSD框架结构
1 SSD代码采用resnet50(论文中是VGG),到conv4_x后面都丢弃 2 且在conv4_x中block1讲步距改为1,后面的block没有改动 3 在后面的添加层中加了bn层 4 利用nvidia的DALI包,来将图像预处理过程移至GPU中 5 利用混合精度可以加快训练,float16代替float32
复现结果
1 total param num 2 backbone: Resnet50 3 优化器:optimizer = torch.optim.SGD(params, lr=0.001, momentum=0.9, weight_decay=1e-4) 4 学习率每几epoch更新一次lr-step-size=5,每次为上次的几倍,gamma=0.3 5 损失函数=类别损失:nn.CrossEntropyLoss()+边界框损失nn.SmoothL1Loss() 6 batch=8/多GPU每块batch=2 7 加载完整预训练权重使用nvidia官方训练的
8 epoch = 30 9 每epoch,train:1m24s,test:,total:1h4m30s | 多GPU,train:1m53s,test:50s,total:1h28m37s
10 数据集:PASCALVOC-2007trainval(5012)/2007trainval+2012trainval(16551)
11 测试集:PASCALVOC-2007test(4952)
12 GPU: NVIDIA GeForce RTX 3070ti(8G) | 4 x Tesla V100(32G)
07
训练集:PASCALVOC-2007trainval(5012)
测试集:PASCALVOC-2007test(4952)
loss,lr随epoch变化图
IOU为0.5的map,大概在76%左右
加载训练后的权重,在测试集(2007test)上对模型进行验证
空
07+12
训练集:2007trainval+2012trainval(16551)
测试集:PASCALVOC-2007test(4952)
loss,lr随epoch变化图
IOU为0.5的map,大概在79.6%左右
加载训练后的权重,在测试集(2007test)上对模型进行验证
空
07与07+12对比
利用wandb记录模型的训练过程,不同数据集的loss、mAP(IOU=0.5)对比
可以得出结论:更多的训练集,可以让模型达到更好的效果,相比论文的VGGbackbone,能看出resnet50作为backbone的效果更好
标签:训练,epoch,lr,2007test,PASCALVOC,SSD,复现 From: https://www.cnblogs.com/zhangjie123/p/17365229.html