本文介绍 从零实现一个单阶段检测器DSSD:一

从零实现一个单阶段检测器DSSD:一

This article was original written by Jin Tian, welcome re-post, first come with https://jinfagang.github.io . but please keep this copyright info, thanks, any question could be asked via wechat: jintianiloveu

单阶段检测算法比较简单,但是不建议从Yolo入门,因为yolo的loss比较复杂,但是SSD是很好的入门方式,实现之后可以更改任何想要优化的点,比如带孔卷积增加感受野,增加Receptive Field Block, 感受野结果,增加多尺度特征的融合等优化,采用MobileNetv2的网络进行卷积计算的优化,比如采用深度可分离结构对卷积进行参数与速度的优化。当然可以优化的点还很多,但根据经验来说,无非就是更加优化的特征,更加有用的loss。

最后我们将在SSD基础之上再增加一个回归量,比如再回归一个box的rotation angle,实现RBox的检测,这也是下一代检测框架的基础。

SSD Prior Box

关于Prior box,其实概念很简单,这个时候需要一个经典的图。图中,没一个featuremap的cell,都需要预测若干个default box,这里的default box值得其实就是实现设定好的anchor,注意还没有到prior box。SSD会在卷积提取之后,生成五个不同层次的卷积特征,每一层都进行defaltbox的抽取。

在prior box生成中,同时包含正例和反例,正例是与groud truth符合一定ovelap的prior box,反例子是完全没有相交的框,用这些框再来计算loss,反响传播更新网络。关于loss如下: