这里的YOLO是指YOLO v1算法。
一、YOLO
主要思想(key idea):
-
将物体检测这个问题定义为bounding box和分类置信度的回归问题。
-
将整张图像作为输入,划分成SxS grid(7×7网格),每个cell(格子)预测B个bounding box(x, y, w, h)及对应的分类置信度(class-specific confidence score)。分类置信度是bounding box是物体的概率及其与真实值IOU相乘的结果。
优点:
-
速度快,YOLO模型可以达到45FPS。
-
YOLO使用图像的全局信息做预测,因而对背景的误识别率比Fast R-CNN低。
-
YOLO学习到的特征更加通用,在艺术品的检测上准确率高于DPM和R-CNN(YOLO泛化能力强)。
缺点:
-
每个cell(格子)只能拥有一个label和两个bounding box,这个空间局限性,使得对小物体检测效果不好(尤其是密集的小物体)。
-
对于物体长宽比的泛化能力较弱,当一类物体新的长宽比出现时,检测准确率减低。
-
损失函数的设计,导致定位误差是影响检测效果的主要原因,在小的物体上,检测准确率较低。
二、SSD
主要思想(key idea):
-
将物体检测这个问题的解空间,抽象为一组预先设定好(尺度,长宽比)的bounding box。
-
在每个bounding box,预测分类label,以及box offset来更好的框出物体。
-
对一张图片,结合多个大小不同的feature map的预测结果,以期能够处理大小不同的物体。
优点:
- 运行速度可以和YOLO媲美,检测精度可以和Faster R-CNN媲美。
缺点:
- 需要人工设置prior box的min_size,max_size和aspect_ratio值。网络中prior box的基础大小和形状不能直接通过学习获得,而是需要手工设置。而网络中每一层feature使用的prior box大小和形状恰好都不一样,导致调试过程非常依赖经验。
- 虽然采用了pyramdial feature hierarchy的思路,但是对小目标的recall依然一般,并没有达到碾压Faster R-CNN的级别。作者认为,这是由于SSD使用conv4_3低级feature去检测小目标,而低级特征卷积层数少,存在特征提取不充分的问题。
三、区别
- YOLO在卷积层后接全连接层,即检测时只利用了最高层Feature maps(包括Faster
RCNN也是如此)而SSD采用金字塔结构,即利用了conv4-3/fc7/conv6-2/conv7-2/conv8_2/conv9_2这些大小不同的feature maps,在多个feature maps上同时进行softmax分类和位置回归。 - SSD加入了Prior box。
参考:
https://zhuanlan.zhihu.com/p/89200261