网页就是一个网站的首页,怎么自己电脑做网站服务器,WordPress 看云,蓝韵网络专业网站建设怎么样目标检测最常用的三个模型#xff1a;Faster R-CNN、SSD和YOLO
Faster R-CNN架构
在Faster RCNN中#xff0c;候选框是经过RPN产生的#xff0c;然后再把各个“候选框”映射到特征图上#xff0c;得到RoIs。
Faster R-CNN步骤#xff1a; (1) 由输入图片产生的区域候选…目标检测最常用的三个模型Faster R-CNN、SSD和YOLO
Faster R-CNN架构
在Faster RCNN中候选框是经过RPN产生的然后再把各个“候选框”映射到特征图上得到RoIs。
Faster R-CNN步骤 (1) 由输入图片产生的区域候选 (2) 最后一层卷积输出的所有通道 (3) ROI pooling 注解ROI Pooling的意义 ROIs Pooling。顾名思义是Pooling层的一种而且是针对RoIs的Pooling他的特点是输入特征图尺寸不固定但是输出特征图尺寸固定
ROI pooling总结 1用于目标检测任务 2允许我们对CNN中的feature map进行reuse 3可以显著加速training和testing速度 4允许end-to-end的形式训练目标检测系统。
整个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层。
网络结构
可以清晰的看到该网络对于一副任意大小PxQ的图像首先缩放至固定大小MxN然后将MxN图像送入网络而Conv layers中包含了13个conv层13个relu层4个pooling层RPN网络首先经过3x3卷积再分别生成positive anchors和对应bounding box regression偏移量然后计算出proposals而Roi Pooling层则利用proposals从feature maps中提取proposal feature送入后续全连接和softmax网络作classification即分类proposal到底是什么object。
复现方式
SSD架构
一 介绍
SSD–single shot multibox detection是目标识别领域中对 不同类的物体汽车人。。。的识别识别的表示方式是对被识别的物体画bounding box包围框。除此之外还有其他种类的目标识别比如下图 SSD网络的特点是对不同尺度下的 feature map 中每一个点都设置一些 default box, 这些default box有不同的大小和横纵比例对这些default box进行分类和边框回归的操作。在预测阶段SSD会对每个default box 生成一个分类标签属于每一类的概率构成的向量以及位置坐标的调整
prior box二 SSD网络结构 SSD网络由两部分组成前部分是一些经典的特征提取网络在这里作为base network使用的是VGG16。后半部分是作者增加的网络提取成特征的基础之上处理得到不同尺度的feature map生成许多组default box进行预测分类和位置调整信息。 SSD除了在最终特征图上做目标检测之外还在之前选取的5个特特征图上进行预测。检测过程不仅在填加特征图(conv8_2, conv9_2, conv_10_2, pool_11)上进行为了保证网络对小目标有很好检测效果检测过程也在基础网络特征图(conv4_3, conv_7)上进行 SSD 方法的核心就是 predict object物体以及其归属类别的 score得分同时在feature map上使用小的卷积核去 predict 一系列 bounding boxes 的 box offsets为了得到高精度的检测结果在不同层次的 feature maps 上去 predict object、box offsets同时还得到不同 aspect ratio 的 predictions。 这里简单介绍一下default map cell以及 feature box 1、feature map cell就是将feature map切分成n*n的格子。 2、default box就是每一个格子上生成一系列固定大小的 box即图中虚线所形成的一系列 boxes。
算法流程 首先来看一下SSD的基本步骤
1、输入一幅图片让图片经过卷积神经网络CNN提取特征并生成 feature map 2、抽取其中六层的feature map然后再 feature map 的每个点上生成 default box各层的个数不同但每个点都有 3、将生成的所有 default box 都集合起来全部丢到 NMS极大值抑制中输出筛选后的 default box并输出
算法框架
YOLO架构
YOLOYou Only Look Once是一种基于深度神经网络的对象识别和定位算法其最大的特点是运行速度很快可以用于实时系统。 输入一张图片要求输出其中所包含的对象以及每个对象的位置包含该对象的矩形框。
对象识别和定位可以看成两个任务找到图片中某个存在对象的区域然后识别出该区域中具体是哪个对象。对象识别这件事一张图片仅包含一个对象且基本占据图片的整个范围最近几年基于CNN卷积神经网络的各种方法已经能达到不错的效果了。所以主要需要解决的问题是对象在哪里。
最简单的想法就是遍历图片中所有可能的位置地毯式搜索不同大小不同宽高比不同位置的每个区域逐一检测其中是否存在某个对象挑选其中概率最大的结果作为输出。显然这种方法效率太低。
RCNN/Fast RCNN/Faster RCNN
RCNN开创性的提出了候选区(Region Proposals)的方法先从图片中搜索出一些可能存在对象的候选区Selective Search大概2000个左右然后对每个候选区进行对象识别。大幅提升了对象识别和定位的效率。不过RCNN的速度依然很慢其处理一张图片大概需要49秒。因此又有了后续的Fast RCNN 和 Faster RCNN针对RCNN的神经网络结构和候选区的算法不断改进Faster RCNN已经可以达到一张图片约0.2秒的处理速度。
YOLO创造性的将候选区和对象识别这两个阶段合二为一看一眼图片就能知道有哪些对象以及它们的位置。实际上YOLO并没有真正去掉候选区而是采用了预定义的候选区准确说应该是预测区并不是Faster RCNN所采用的Anchor。也就是将图片划分为 7*749 个网格grid每个网格允许预测出2个边框bounding box包含某个对象的矩形框总共 49*298 个bounding box。可以理解为98个候选区它们很粗略的覆盖了图片的整个区域。
YOLO结构 去掉候选区这个步骤以后YOLO的结构非常简单就是单纯的卷积、池化最后加了两层全连接。最大的差异是最后输出层用线性函数做激活函数因为需要预测bounding box的位置数值型而不仅仅是对象的概率。YOLO网络结构由24个卷积层与2个全连接层构成网络入口为448x448(v2为416x416)图片进入网络先经过resize网络的输出结果为一个张量维度为 其中S为划分网格数B为每个网格负责的边框个数C为类别个数。每个小格会对应B个边界框边界框的宽高范围为全图表示以该小格为中心寻找物体的边界框位置。每个边界框对应一个分值代表该处是否有物体及定位准确度每个小格会对应C个概率值找出最大概率对应的类别P(Class|object)并认为小格中包含该物体或者该物体的一部分。
输入和输出的映射关系
输入
输入就是原始图像唯一的要求是缩放到448*448的大小。主要是因为YOLO的网络中卷积层最后接了两个全连接层全连接层是要求固定大小的向量作为输入所以倒推回去也就要求原始图像有固定的尺寸。那么YOLO设计的尺寸就是448*448。
输出是一个 7*7*30 的张量tensor。
输入图像被划分为 7*7 的网格grid输出张量中的 7*7 就对应着输入图像的 7*7 网格。或者我们把 7*7*30 的张量看作49个30维的向量也就是输入图像中的每个网格对应输出一个30维的向量。参考上图比如输入图像左上角的网格对应到输出张量中左上角的向量。
要注意的是并不是说仅仅网格内的信息被映射到一个30维向量。经过神经网络对输入图像信息的提取和变换网格周边的信息也会被识别和整理最后编码到那个30维向量中。具体来看每个网格对应的30维向量中包含了哪些信息 网络结构
网络方面主要采用GoogLeNet卷积层主要用来提取特征全连接层主要用来预测类别概率和坐标。最后的输出是7*7*307*7是grid cell的数量。
YOLO存在的优点是
1.速度快处理速度可以达到45fps其快速版本网络较小甚至可以达到155fps。这得益于其识别和定位合二为一的网络设计而且这种统一的设计也使得训练和预测可以端到端的进行非常简便。
2.泛化能力强 可以广泛适用于其他测试集。
3.背景预测错误率低因为是整张图片放到网络里面进行预测。
YOLO存在的缺点是
精度低小目标和邻近目标检测效果差小对象检测效果不太好尤其是一些聚集在一起的小对象对边框的预测准确度不是很高总体预测精度略低于Fast RCNN。主要是因为网格设置比较稀疏而且每个网格只预测两个边框另外Pooling层会丢失一些细节信息对定位存在影响。
YOLOv2架构
V1 缺陷之处
1、输入尺寸固定由于输出层为全连接层因此在检测时YOLO 训练模型只支持与训练图像相同的输入分辨率。其它分辨率需要缩放成此固定分辨率 2、占比小的目标检测效果不好虽然每个格子可以预测 B 个 bounding box但是最终只选择只选择 IOU 最高的bbox作为物体检测输出即每个格子最多只预测出一个物体。当物体占画面比例较小如图像中包含畜群或鸟群时每个格子包含多个物体但却只能检测出其中一个。
YOLOv2的结构示意图如下
YOLOv2 引入了 faster rcnn 中 anchor box 的思想对网络结构的设计进行了改进使得模型更易学习。
YOLOv2提出了一种新的分类模型Darknet-19。主要使用3x3卷积并在pooling之后channel数加倍(VGG);global average pooling替代全连接做预测分类,并在3x3卷积之间使用1x1卷积压缩特征表示(Network in Network);使用 batch normalization 来提高稳定性,加速收敛,对模型正则化。Darknet-19的结构如下表:
包含 19 conv 5 maxpooling.用 1x1 卷积层替代 YOLOv1 的全连接层。1x1 卷积层 为了跨通道信息整合如上图的红色矩形框部分。
升级版YOLO v3
YOLO的V1和V2都不如SSD的算法主要原因是V1的448尺寸和V2版本的416尺寸都不如SSD的300以上结论都是实验测试的V3版本的416跟SSD512差不多好但速度快很多。yolov2有个毛病就是对小物体的检测不敏感而增加了多尺度预测之后yolov3在对小物体检测方便有了好转但是现在的毛病是对中、大size的物体表现的不是那么好。 YOLO V2是一个纵向自上而下的网络架构随着通道数目的不断增加FLOPS是不断增加的而V3网络架构是横纵交叉的看着卷积层多其实很多通道的卷积层没有继承性另外虽然V3增加了anchor centroid但是对GT的估计变得更加简单每个GT只匹配一个先验框而且每个尺度只预测3个框V2预测5个框这样的话也降低了复杂度。
Mask R-CNN
Mask R-CNN像素级目标检测不仅给出其边界框并且对边界框内的各个像素是否属于该物体进行标记。 可以看出MaskRCNN在有效检测目标的同时输出高质量的实例分割mask 可以看出MaskRCNN的网络结构作为FasterRCNN的扩展
1)用RolAlign代替了RoIPoolingRoIPooling使用取整量化导致特征图RoI映射回原图RoI时空间不对齐明显造成误差RolAlign不使用取整量化而是采用双线性插值完成像素级的对齐
2)FasterRcnn为每个候选对象ROI提供两个输出一个类标签一个边界框偏移量为此MaskRCNN并行添加了第三个分割mask的分支mask分支是应用到每一个ROI上的一个小的FCNFully Convolutional Network以pix2pix的方式预测分割mask。
分割
分割模型一般DeepLabv3U-net
U-net U-net网络非常简单前半部分作用是特征提取后半部分是上采样。在一些文献中也把这样的结构叫做编码器-解码器结构。由于此网络整体结构类似于大写的英文字母U故得名U-net。
1、特征提取部分每经过一个池化层就一个尺度包括原图尺度一共有5个尺度。 2、上采样部分每上采样一次就和特征提取部分对应的通道数相同尺度融合但是融合之前要将其crop。这里的融合也是拼接。
U-net与其他常见的分割网络有一点非常不同的地方U-net采用了完全不同的特征融合方式拼接U-net采用将特征在channel维度拼接在一起形成更厚的特征。
代码复现