YOLOV1和Faster-R-CNN的区别

抽空总结一下Yolov1和Faster-r-cnn的区别。

首先要知道 Yolov1:anchor-free的one-stage 目标检测算法;Faster:anchor-base的two-stage 目标检测算法。

YOLOV1可以去看下我之前的博客 Yolov1细节解读

1. Yolov1并没有预先设置anchor,而是选择直接预测bounding box,并且仅对每一个特征点(模型最后的特征图是一张7 * 7 * 30)只预测2个候选框;Faster为feature map上的特征点预先设置了9种尺寸的anchor,之后引入了RPN网络,基于预先设置的anchor预测候选框的偏移(使预设的anchor在偏移后能更接近Groud Truth)。总的来说,yolo的bounding box和faster的anchor本质不同。

2. 在yolov1中一个object只能由一个grid cell负责(具体去看看我的博客中第4章节细节讨论);Faster直接在特征图的每一个特征点上优先设置多个anchor,之后在RPN中初步计算这些anchor对于Groud Truth的偏移,再然后使用NMS算法筛选anchor,并没有object和grid cell这种强制对应关系。

3. yolov1中NMS算法仅在预测的时候使用;faster在训练rpn时候已经使用了NMS。总的来说,两个算法对于NMS的使用不同,这也和它们bounding box和anchor定义和使用有关系。

4. YOLO采取预测相对于当前grid cell左上角坐标的offset(偏移),宽和高也是相对于特征图大小的值,因此x,y,w,h都是[0,1]之间的值;faster就不同了,这里也体现了anchor-base,因为预设了9种不同尺寸的anchor,faster在预测中心点时是基于这些预设anchor的中心点,进而计算偏移得到的。

5. 损失函数区别很大,看过yolov1相关博客的应该知道,它的损失函数由五部分组成,每个部分都使用的均方差;而faster-r-cnn在坐标回归中使用的是smoothL1损失函数,在分类中使用交叉熵损失函数。

6. 在yolov1训练中,同时输出预测的bounding box有没有目标(其实就是前景和背景的区分),使用的是 预测值 * Iou(预测box和GT) 作为置信度得分的;在faster中,RPN网络负责区分预测的anchor中是否有目标,是直接预测出一个0到1的小数值,没有其他额外操作。

暂时能想到的就是这么多,等有以后有机会再补充吧。红的部分算是比较重要的区别。

你可能感兴趣的:(深度学习细节研讨)