DSSD算法从名字上就可以看出来,是对SSD算法的改进。
1)初衷
首先这篇文章想解决的问题是SSD在小目标上不佳的表现,原来的SSD想要用浅层特征,也就是神经网络的最初几层来检测小目标,用神经网络的后几层,也就是语义特征来检测大目标。但是即使是做了这样的处理,由于浅层特征缺少语义信息仍旧在小目标上表现的不佳。在open image很多类别上,小目标的检测率都接近0,作者想要通过类似于fpn上采样的方法来解决ssd的这个问题,因此提出了DSSD算法。
2)Top Down的融合方法
TDM是先对whchannel 尺寸的图像上采样,之后跟前面层2w2hchannel做concat来融合高低层特征
FPN与TDM的不同之处在于,用broadcast add代替concat操作。
DSSD方法用反卷积代替上采样,令whchannel变为2w2hchannel,用broadcast product代替broadcast add和concat
并且DSSD与SSD的不同之处在于,原来是直接取6层特征做预测,现在会用反卷积和broadcast product做融合。
3)预测模型
与SSD不同的是,作者在反卷积模型后,分类任务之前加入了类似resnet的残差单元,改动之处在于前一层的feature不直接加下来,而是先经过1*1卷积。
4)模型训练
作者对pascal voc做聚类,得到了7类default box。另外用两阶段训练的方法训练DSSD,首先,用SSD初始化DSSD网络,冻结SSD网络参数,不添加预测模型,只训练反卷积模型。第二阶段,训练所有参数。