首页 > 编程语言 > 详细

目标检测算法--Faster R-CNN、SSD、YOLO

时间:2020-09-15 18:12:20      阅读:97      评论:0      收藏:0      [点我收藏+]

注:本博客截取自多篇文章,只为学习交流

技术分享图片

     表1.coco2017模型性能对比[1]

一、faster RCNN

这个算法是一个系列,是RBG大神最初从RCNN发展而来,RCNN->fast RCNN->faster RCNN,那么简单的介绍下前两种算法。

首先RCNN,在这个算法中神经网络实际上就是一个特征提取器,作者用selective search的方法提取了一定数量(2000个)region proposal,然后对region proposal做卷积操作,将fc7这一层的特征提取出来用于分类和坐标回归,这里分类用的还不是softmax而是SVM。这个算法的贡献主要是提出了一种有效的特征利用方式,后续很多人在工程实践中都是用的fc7层的特征来做基于faster RCNN的应用。

到fast RCNN,fast RCNN将除了region proposal提取以外的部分都用一个网络来实现,与RCNN不同的是,1)他的分类和坐标回归的loss一起通过反向传播来更新网络参数;2)它在提取feature时并不会把每个region proposal都放入提取,而是将整幅图提取特征后,用坐标映射的方式提取feature,这样有两个好处a)快,因为一张图片只走一次网络;b)feature的特征受感受野的影响,能融合相邻的背景的特征,这样“看”得更远一些。

最后是faster RCNN,作者发现selective search的方法导致算法没有实时性的可能,因此,作者尝试用region proposal network来取代selective search的方法,并且与fast RCNN的分类和回归网络共用特征提取层,因此这样并不会带来太多额外的计算量,而实验结果也表明了,作者这样做确实提高的速度,并且还提高了准确率。因此,综上所述,region proposal network是faster RCNN的精华所在,也是精度高于以及速度慢于后续YOLO和SSD算法的原因。

  Train

  整个Faster RCNN训练过程可分为4步:

  第一步:用在ImageNet数据集上训练好的model初始化模型,训练一个RPN网络;

  第二步:用在ImageNet数据集上训练好的model初始化模型,同时用第一步中训练好的RPN网络生成的region proposal作为输入,训练一个Fast RCNN;

  第三步:用第二步训练好的Fast RCNN的网络参数初始化RPN网络,但是将RPN与Fast RCNN共享的网络层的learning rate设置为0,仅微调RPN独有的网络层。

  第四步:固定共享的网络层,仅微调Fast RCNN所独有的fc层

 

二、SSD

  SSD使用VGG-16-Atrous作为基础网络,SSD 方法的核心就是 predict(预测) object(物体),SSD与yolo不同之处是除了在最终特征图上做目标检测之外,还在之前选取的5个特特征图上进行预测。

  同时,SSD算法也是三种方法中检测速度最快的

  Result

    SSD模型对bounding box的size非常的敏感。也就是说,SSD对小物体目标较为敏感,在检测小物体目标上表现较差。其实这也算情理之中,因为对于小目标而言,经过多层卷积之后,就没剩多少信息了。

    虽然提高输入图像的size可以提高对小目标的检测效果,但是对于小目标检测问题,还是有很多提升空间的,同时,积极的看,SSD 对大目标检测效果非常好,SSD对小目标检测效果不好,但也比YOLO要好。

 

三大目标检测方法中,虽然Faster R-CNN已经出来两年了,但它对小目标的检测效果还是最好,SSD检测的速度是最快的,尤其是SSD mobilenet,YOLO v3吸取了前两者的一些优点,比Faster R-CNN快、比SSD检测小目标准,效果中规中矩。

目标检测算法--Faster R-CNN、SSD、YOLO

原文:https://www.cnblogs.com/leafchen/p/13674297.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!