我是靠谱客的博主 会撒娇小海豚,最近开发中收集的这篇文章主要介绍目标检测方法-RCNN、fast RCNN、faster RCNN、mask RCNN、SSD、yolo,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

RCNN

image
RCNN主要步骤:
(1)生成候选框(select search)。在图像中确定2k个候选框,采用Felzenszwalbs‘s method、SLIC、quick shift等方法实现。
(2)将生成的候选框缩放至相同大小,输入CNN进行提取特征
(3)分类。对候选框中的特征进行判别,SVM
(4)回归。对某一特征的候选框,调整位置。
image

缺点:对生成的每个候选框都进行CNN特征提取,时间花费过多;候选框缩放,精度降低

SPPnet

SPP-Net是对rcnn的改进,spatial Pyramid Pooling,主要观点:
  (1)共用特征卷积图
  (2)空间金字塔池化,有效地解决了不同尺度的图片在全连接层输出不一致的问题。
RCNN存在的问题
  (1)RCNN通过对图像的裁剪crop或缩放warp,使得输入图片的信息缺失或变形,降低了图片识别的准确率。
  (2)对每个RP进行卷积计算,算力过大。
image

  下图上是RCNN的网络结构,下图下是SPP-net的网络结构。
image
SPP-net优势:
  只对原图进行卷积处理,引入SPP池化进行特征图候选框的维度统一。

fast RCNN

image

image
 RCNN主要步骤
(1)生成候选框(select search)。在图像中确定2k个候选框,采用Felzenszwalbs‘s method、SLIC、quick shift等方法实现。
(2)对整张图像进行卷积CNN特征提取
(3)通过将候选框映射在conv5输出的feature map上。输入ROI pooling层(单层sppNet)进行下采样。
(3)分类。对候选框中的特征进行判别,SVM
(4)回归。对某一特征的候选框,调整位置。
NOTE
SPPnet中金字塔模型的每一个刻度相当于一层,如插图(16(4 * 4)+4(2 * 2)+1(1 * 1)=21),相当于有3层金字塔,fast rcnn的ROI pooling,相当于是sppNet的单层金字塔。roi_pool层将每个候选区域均匀分成M×N块(对应候选区域的纵横比),(不是上面所讲的n * n,通过m * n进行尺度的缩放,如16 * 8,而固定大小为4 * 4,即均匀分成4 * 2块)。。。实现pooling后,即可将候选区域固定为大小一样的特征图

RCNN和fast RCNN:
  rcnn:

  SS候选框(2000个)—> 对每个候选框CNN特征提取---->分类+回归

  fast rcnn:

  一张图像---->CNN特征提取---->(SS候选框的特征进行对应提取)—>ROI pooling—>分类+回归

创新点:
  (1)fast RCNN实现了大幅度提速,原因:仅对整张图像做一次CNN特征提取,通过将候选框映射在conv5输出的feature map上。
  (2)fast rcnn使用ROI pooling使得尺寸保持一致。
  (3)将分类和回归统一,实现多任务学习。
**缺点:**候选框的生成仍使用Select Search方法,无法应用GPU。

候选框的选择使用非极大值抑制NMS(Non maximum Suppression),局部最大搜索方法。

faster RCNN

优化候选框选择算法
具体步骤为:
1、对整张图进行CNN特征提取,得到feature map
2、feature map输入RPN(region proposal network),快速生成候选区域;(anchor机制)
3、通过交替训练,使RPN和Fast-RCNN网络共享参数;
4、应用分类和回归。
image

mask RCNN

https://blog.csdn.net/xiao__run/article/details/81284094

Yolo

1、YOLOV1

下图是YOLOV1检测系统流程:
image
用了全连接层
输入的图片分成S x S网络,每个单元格需要预测(B*5+C)个值,因此最终的预测值为S x S x (B x 5 + C)大小的张量,在论文里给出的例子为S=7,B=2(每个框中的BBox个数),C指目标类别的个数(这里数据集的类别为20类)。 因此最终的张量大小为7 x 7 x 30。5是指(x,y,w,h,c),其中c表示当前C类别的置信度。

2、YOLOV2

模仿vgg和googlenet
输入416×416
针对yolov1对小尺寸目标的低效果性,提出以下改进:
image
(1)batch norm,一般在收敛很慢或梯度爆炸等无法训练的时候使用
googleNet首次提出,https://blog.csdn.net/qq_25737169/article/details/79048516
在这里插入图片描述
没有它之前,需要小心的调整学习率和权重初始化,但是有了BN可以放心的使用大学习率,但是使用了BN,就不用小心的调参了,较大的学习率极大的提高了学习速度,Batchnorm本身上也是一种正则的方式,可以代替其他正则方式如dropout等。batchnorm降低了数据之间的绝对差异,有一个去相关的性质,更多的考虑相对差异性,因此在分类任务上具有更好的效果。
(2)hi-res classifier 高分辨率分类,反卷积反池化,像素点间的相关性会更强,分辨率越高越好
(3)convolutional
(4)new network (darknet),没用alexnet vggnet
(5)维度先验:框的数值提前设入把经验值设定,如人的形状(竖着的)
(6)location prediction位置预测:先验、基于欧式的聚类、基于IOU的距离
代码中有加入1×1卷积层,减少计算量
(尺寸越来越小,滤波器越来越多)
(7)pass through
(8)多尺度, 可以实现大小目标的检测
alexnet的技术:数据增强、局部归一化LRN、dropout、relu
image

yolov3

主要模仿残差网络resnet,去掉了全连接层

SSD

1、多尺度检测,6个feature map获取BBox,对VGG-16进行改造,将全连接层换成卷积层,对特定的层如conv4_3、conv7、Conv8_2、Conv9_2、Conv10_2和Conv11_2的box数量设置为4、6、6、6、4、4,形成了8732个检测框,对这些框送入NMS模块,进行判断,得出检测结果。
提高精度的策略:
(1)数据增强,相对于faster RCNN,SSD算法使用了多种数据增强的方法,包括水平翻转、裁剪、放大和缩小等。论文明确指出,数据增强可以明显的提高算法的性能。主要的目的是为了使得该算法对输入的不同大小和不同形状的目标具有更好的鲁棒性。直观的理解是通过这个数据增强操作可以增加训练样本的个数,同时构造出更多的不同形状和大小的目标,将其输入到网络中,可以使得网络学习到更加鲁棒的特征。bbox的正负样本的比例控制在positive:negative=1:3,一个ground truth可能对应多个positive default box,atrous算法可以轻微提升算法性能,但是其主要的作用是用来提速,论文中表明它可以提速20%
在这里插入图片描述

SDD

1.多尺度的特征图用来检测
2.去掉了全连接层
3.设置先验框

最后

以上就是会撒娇小海豚为你收集整理的目标检测方法-RCNN、fast RCNN、faster RCNN、mask RCNN、SSD、yolo的全部内容,希望文章能够帮你解决目标检测方法-RCNN、fast RCNN、faster RCNN、mask RCNN、SSD、yolo所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部