感觉目标检测还是yolo相对最火?ssd有点老了可以更新下
SSD算法数学描述
SSD算法使用卷积神经网络(CNN)进行特征提取,并通过多尺度的特征图进行目标检测。设 ( C ) 为CNN输出的特征层数量,( F_i ) 为第 ( i ) 层特征图,其中 ( i \in {1, 2, …, C} )。每层特征图 ( F_i ) 经过一个3x3的卷积操作,生成预测特征图 ( P_i )。
对于每个预测特征图 ( P_i ),SSD使用预设的anchor boxes,记为 ( A_i ),每个anchor box对应多个(例如4或6个)预测框。每个预测框由类别概率和边界框(bounding box)坐标组成。对于第 ( i ) 层的第 ( j ) 个anchor box,预测可以表示为:
[ \hat{y}{ij} = f(P_i, A{ij}) ]
其中 ( f ) 表示SSD网络的预测函数,( \hat{y}_{ij} ) 包含了该anchor box属于各个类别的概率和调整后的边界框坐标。
SSD算法性能
SSD在VOC 2007测试集上的性能如下:
- 输入尺寸为 ( 300 \times 300 ) 时,SSD达到74.3% mAP(mean Average Precision)和59 FPS(Frames Per Second)。
- 输入尺寸为 ( 512 \times 512 ) 时,SSD达到76.9% mAP,超越了当时的Faster R-CNN(73.2% mAP)。
SSD算法分类
目标检测算法主要分为两类:
- Two-stage方法:例如R-CNN系列,先产生候选区域(Region Proposals),然后对这些候选框进行分类和边界框回归。
- One-stage方法:例如YOLO和SSD,直接通过主干网络预测类别和位置信息,无需区域生成步骤。
SSD作为one-stage方法,具有检测速度快和性能优异的特点。
SSD算法框架
SSD框架利用不同层级的CNN特征进行多尺度检测,浅层特征用于检测小目标,而深层特征用于检测大目标。通过在每个特征层上应用3x3卷积进行通道变换,并结合anchor boxes策略,SSD能够在单次前向传播中完成多尺度的目标检测。
具体SSD框架的图示可以参考文献[1]。
[1] Wei Liu, et al. “SSD: Single Shot MultiBox Detector.” ECCV 2016.