rcnn全称 rcnn百度百科
的英文全称是什么
top layer 生成的top-ll attention(A),维度为(K×M×M)是美国有线电视网--Cable News Network的英文缩写,由特纳广播公司(TBS)特德·特纳于1980年6月创办,通过卫星向有线电视网和用户提供全天候的节目,总部设在美国佐治的亚特兰大。
rcnn全称 rcnn百度百科
rcnn全称 rcnn百度百科
Cable News Network ,美国有线电视网,以提供即时电视报导而闻名。
视网
Ca由于top-ll attention是三维的,因此可以学习到一些instance-ll的信息,例如大致的形状和姿态。具体的实现为output channel为 的卷积。ble News Network ,美国有线电视网
Cable News Network
目标检测算法---faster rcnn 知识简要回顾(测试篇)
Faster R检测部分主要可以分为四个模块:
1.特征抽取:用于抽取图像特征,一般可以使用vgg、resnet和mobilenet等图像分割和分类哪个吃资源?图像分类吃资源。图像分割:应用于像素级分类,softmax应用于特征通道方向,上采样后对每个像素进行像素级的分类,常用FCN等 zhege_Deep Learning...backbone;
2.RPN(Region Proal Network):用于产生候选框,主要做一些粗糙的分类和回归作;
3.RoI Po全称:Cable News Network ,美国有线电视网,以提供即时电视报导而闻名。oling:主要是为了解决全连接层需要固定尺寸输入,而实际输入大小不一的问题;
4.Classification and Regression:精细化分类和回归。
彩色图像通过backbone进行特征提取,输出一层的feature map。接着将这些feature map进一步做基于3x3卷积核的特征提取,该目的是增强模型的鲁棒性。将输出送入两个分支,个分支跟类别有关,这里主要是用于简单分类,区分是背景还是物体,这是针对anchor而言的;第二个分支则是用于初步预测候选框的偏移量,这个也是基于anchor而言的;再将前两个分支的结果送入图中的proal中,首先会根据itive类的score筛选前6000个候选框,再将anchor的坐标和得到的偏移进行整合,得到初步候选框坐标,接着在做NMS,除去重叠的框,再经过了NMS后的框中,根据类别score取前300个框。然后将结果送入roi pooing层,用于生成固定尺寸的特征区域,以方便后边的全连接层接受信息;全连接层用于提取特征,得到精细的类别和框的偏移量。
R + CTC 文本识别原理
图中将自行车的位置放在bounding box1,但实际上是在训练过程中等网络输出以后,比较两个bounding box与自行车实际位置的IOU,自行车的位置(实际bounding box)放置在IOU比较大的那个bounding box(图中设是bounding box1),且该bounding box的置信度设为1目前研究主要集中在文字检测和文字识别两个任务,本文只介绍文字识别任务中的一种模型,即 CRNN+CTC Loss 方案;另外一种方案是基于 Attention 机制。主要区别在于(后续重点介绍 CTC):
CRNN 网络结构如图 2-1 所示,输入为经过文字检测的文本框(小图),输出为具体的文字内容 “state”,从下往上的结构依次为:卷积层、循环层和翻译层。
卷积层:使用深度 进行图像的局部特征提取。如图 2-2 所示,整个 CRNN 网络的层级以及参数设置。
注意: 卷积核的大小是 3x3,步长 s 和 padding 都为 1,则证明卷积层在不改变图像的尺寸大小情况下进行特征提取;池化层有四个,大小分别为 2x2、2x2、1x2、1x2,则对于图像的高度减半 16 倍,宽度减半 4 倍。然后再经过的 Conv 层,例如:图像的输入尺寸为 (channel, height, width) = (1, 32, 160), 的输出尺寸为 (512,1,40)。
经过 层的特征图(512,1,40)是不能直接送给 LSTM 进行训练的,通过对特征图中的 40 作为特征向量的序列数,每列包含 512 维特征,构成了 40x512 大小的维度矩阵,输入到 LSTM 网络中。论文 [5] 中提到:
使用双向的 LSTM 进行时序特征的提取,通过上一步,输入到 LSTM 的特征大小为(40x512),每个 LSTM 的时间步为 40,每个时间点的特征维度为 512。LSTM 网络的目标:预测每个时间步的字符内容,即输出为所有字符的 softmax 概率分布,然后将这个后验概率矩阵传入 CTC 层。
总结为:
对于 LSTM,正常使用多分类的交叉熵进行训练,完成参数更新,则每一时间步的输出对应一个字符,也就意味着训练时候每张样本都需要标记出每个字符在中的位置。但是实际上是不可能实现的,所以 CTC 提出一种对不需要对齐的 Loss 计算方法,用于训练网络,被广泛应用于文本行识别和语音识别中。
对于输入 X 和 输出标签 Y 长度都不一致且变换的情况,CTC 提供解决方案为:对于一个给定的输入序列 X ,CTC 给出所有可能的输出分布 Y。根据这个分布,我们可以输出最可能的结果或者给出某个输出的概率。
RNN 进行时序分类时,不可避免出现冗余信息,如图 3-1 所示,5 个时间步分别被识别为 [a,a,a,b,b],然后将重复的字符合并为 “ab”,但是对于如 book 等字符,合并字符后变成了 bok ,显然不行,所以 CTC 使用 blank 机制解决这个问题。
定义一条路径 的输出概率为:
其中, 代表 时间步为 t 时刻的输出概率,使用连乘的方式得出整条路径的概率值。但是存在多条路径经过上一步的合并冗余机制得到相同的路径结果,如(“a-a-a-b-b”和“aa-aa-a-b-b-”通过合并序列之后都为“bb”),所以定义:
其中, 代表合并之后的路径,由所有合并之后的相同路径求和所得。常规解法是将所有的合法路径输出概率,然后进行求和,但是实际上路径组合数量非常大,无法逐条求和直接计算 。
借用概率图 HMM 的 “向前-向后” 算法计算:
训练的目的在于化概率 ,使用对数似然法定义损失函数为:
对于递推公式的解释说明,可以看到 X 轴代表时间步,z 轴代表输出的目标检测算法是计算机视觉领域的一种重要技术,它能够自动地从图像或视频中检测出特定的目标,并给出它们在图像中的位置和大小等信息。目标检测算法的应用非常广泛,例如安防、自动驾驶、智能物流等领域都需要使用目标检测算法。字符串,输出标签为“ZOO”:
上图主要分为以下两种情况:
递推公式为,解释见前向:
得到了前向和后向概率,将其概率相乘再经过转化,就可以计算 的概率,公式如下:
对于 来说,可以表示为每个时间步输出 label 的概率之和,因为上面的公式都是在 这一点进行前向和后向概率的计算。
为计算每个时刻每个因素的梯度: 观察公式 7 中右端求各项, 的项包含 ,其他项的偏导都为 0,不用考虑,于是有:
公式 8 中,分子项是因为 中包含为两个 乘积项(即 ),其他均为与 无关的常数。 中可能包含多个 字符,它们计算的梯度要进行累加,因此,的梯度计算结果为:
通过对对数似然进行求导,梯度计算如下:
其中, 通过前向计算可得,就是输出为 "-" 或者一个 的前向概率值: 。其中,由于某时刻某因素的前向和后向概率都已经求出,都为常数,故此梯度计算完成,通过优化算法进行参数调整即可。
预测就是找到概率值的路径,目前存在两种方案:一是 Greedy Search,二是 Beam Search。
目标检测算法是什么?
递推公式为:基于传统机器学习方法的目标检测算法,如Haar特征、HOG特征和SIFT特征等。
基于深度学习的目标检测算法,如R系列、以上是FPN各部分的专有名称,作者详细对比了top-down pathway带来的增益,lateral connection带来的增益,YOLO系列和SSD等。
其中,R系列算法包括R、Fast-R、Faster-R和Mask-R等。它们采用了候选区域提取和分类的两阶段策略,先通过区域提取方法选出可能包含目标的候选区域,然后再对这些区域进行分类和回归等作。YOLO系列算法包括YOLO、YOLOv2、YOLOv3和YOLOv4等。它们采用了单阶段的检测策略,将图像划分为若干个网格,每个网格预测出固定数量和类别的目标,并预测它们的位置和大小。SSD算法是基于锚点的单阶段检测算法,它采用了多尺度特征图进行目标检测,并对每个特征图的每个位置设置多个锚点来检测不同大小和形状的目标。
fasterrcnn程序大小
=Cable News Network 美国有线电几百KB到几十MB之间。
实现一个基本的Faster R-算法所需的程序大小可能在几百KB到几十MB之间。如果考虑到训练和测试数据集的大小,以及各种依赖库和工具,程序的总大小可能更大。
Faster R-faster rcnn算法大致流程如下:程序指的是实现Faster R-算法所需的计算机程序,通常使用深度学习框架(如TensorFlow、PyTorch、Caffe等)进行开发和实现。
Faster R-:使用RPN实时目标检测
论文: Faster R-: Towards Real-Time Object Detection with Region Proal Networks
目标检测网络大多依靠 区域生成 (region proal)算法来设目标的位置。 R- 是采用 Selective Search 算法来提取(proe)可能的 RoIs(regions of interest) 区域,然后对每个提取区域采用标准 进行分类。选择性搜索(Selective Search )方法就是在目标对象周围设定2000个形状大小位置不一的候选区域,目标物体在候选区域的可能性还是比较大的。然后对这些区域卷积,找到目标物体,虽然大多数区域都是无用的。与寻找几乎个区域比起来,这种方法要高效的多。
Fast R- ,不在原始图像生成备选区域,而是先整张通过卷积网络得到特征图,然后在特征图上使用备选区域算法得到感兴趣的区域在特征图的映射,之后使用 Rol Pool将所有区域变成同样尺寸,大大减少了这些目标检测网络的运行时间,但是区域生成的计算成为整个检测网络的瓶颈。
Faster R- 引入了一个 区域生成网络(Region Proal Network,RPN) ,该网络与检测网络共享输入图像的卷积特征,从而使接近零时间成本的区域生成成为可能。 RPN是一个全卷积网络,可以同时在每个位置预测目标边界和目标分数。RPN经过端到端的训练,可以生成高质量的区域候选框,然后提供给Fast R-用于检测。
Faster R- 由两个模块组成:个模块是区域生成的深度全卷积网络,第二个模块是使用备选区域的Fast R-检测器。整个系统是一个单个的,统一的目标检测网络。使用最近流行的“注意力”机制的神经网络术语,RPN模块告诉Fast R-模块在哪里寻找目标。
针对一张,需要获得的输出有:
Faster R- 最早是采用在 ImageNet 训练的 ZF 和 VGG ,其后出现了很多其它权重不同的网络.。如 MobileNet 是一种小型效率高的网络结构, 3.3M 参数;而ResNet-152 的参数量达到了 60M;新网络结构,如 DenseNet 在提高了结果的同时,降低了参数数量。
VGG16 分类时,输入为 224×224×3 的张量(即,一张 224×224 像素的 RGB )。网络结构采用 FC 层(而不是 Conv 层)得到固定长度的向量,以进行分类.。对一个卷积层的输出拉伸为1维的向量,然后送入 FC 层。实现中是采用的卷积层 conv5/conv5_1 的输出。
在深度上,卷积特征图对的所有信息进行了编码,同时保持相对于原始所编码 “things” 的位置。例如,如果在的左上角存在一个红色正方形,而且卷积层有激活响应,那么该红色正方形的信息被卷积层编码后,仍在卷积特征图的左上角。因此利用特征图检测目标所在的位置是可行的。
下面解释 k, 2k, 4k 的含义。
基于深度学习的目标检测中,可能最难的问题就是生成长度不定(variable-length)的边界框列表(bounding-boxes),边界框是具有不同尺寸(sizes)和长宽比(aspect ratios )的矩形。在构建深度神经网络时,的网络输出一般是固定尺寸的张量输出(采用RNN的除外)。例如,在分类中,网络输出是 (C, ) 的张量,C是类别标签数,张量的每个位置的标量值表示是类别的概率值。
在 RPN 中,通过采用 anchors(锚) 来解决边界框列表长度不定的问题,即在原始图像中统一放置固定大小的参考边界框。上面说到RPN对特征图做3x3的卷积,设每一次卷积需要预测 k 个候选区域,因此,reg层具有 4k 个输出,编码 k 个边界框的坐标,cls层输出 2k 个分数,估计每个区域是目标或是背景的概率。这 k 个区域就是 被 k 个参考边界框初始化, k 个参考框就是 k 个锚点,作为次预测目标位置的参考 boxes。锚点的中心位于卷积核滑动窗口的中心。默认情况下每个滑动位置使用3个不同尺度(128 2 , 256 2 , 512 2 )3个不同长宽比(1:2, 1:1, 2:1)的锚点,k=9。对于大小为W×H(通常约为2400)的卷积特征图,总共有 W×H×k 个锚点。对于RPN的两个全连接层,参数的个数为 512×(4+2)×k.
不同于直接检测目标的位置,这里将问题转化为两部分。对每一个 anchor 而言:
虽然 anchors 是基于卷积特征图定义的,但最终的 anchos 是相对于原始的.
由于只有卷积层和 pooling 层,特征图的维度是与原始的尺寸成比例关系的. 即,数学地表述,如果尺寸 w×h,特征图的尺寸则是w/r×h/r. 其中,r 是下采样率(subsampling ratio). 如果在卷积特征图空间位置定义 anchor,则最终的会是由 r 像素划分的 anchors 集。在 VGG 中, r=16。
RPN 利用所有的参考边界框(anchors),输出一系列目标的良好的 proals。针对每个 anchor,都有两个不同的输出:
RPN是全卷积网络。
对于分类层,每个 anchor 输出两个预测值:anchor 是背景(background,非object)的 score 和 anchor 是前景(foreground,object) 的 score.
对于回归层,也可以叫边界框调整层,每个 anchor 输出 4 个预测值:
(Δxcenter,Δycenter,Δwidth,Δheight),用于 anchors 来得到最终的 proals。根据最终的 proal 坐标和其对应的 objectness score,即可得到良好的 objects proals.
RPN 有两种类型的预测值输出:二值分类和边界框回归调整。
为了训练RPN,我们为每个锚点分配一个二值类别标签(是目标或不是目标)。我们给两种锚点分配一个正标签:(i)具有与实际边界框的重叠交并比(IoU)的锚点,或者(ii)具有与实际边界框的重叠超过0.7 IoU的锚点。注意,单个真实边界框可以为多个锚点分配正标签。通常第二个条件足以确定正样本;但我们仍然采用个条件,因为在一些极少数情况下,第二个条件可能找不到正样本。对于所有的真实边界框,如果一个锚点的IoU比率低于0.3,我们给非正面的锚点分配一个负标签。既不正面也不负面的锚点不会有助于训练目标函数。
然后,随机采样 anchors 来生成batchsize=256 的 mini-batch,尽可能的保持 foreground 和 background anchors 的比例平衡。
RPN 对 mini-batch 内的所有 anchors 采用二分类交叉熵来计算分类 loss。然后,只对 mini-batch 内标记为 foreground 的 anchros 计算回归 loss。为了计算回归的目标targets,根据 foreground anchor 和其最接近的 groundtruth object,计算将 anchor 变换到 object groundtruth 的偏移值 Δ。
Faster R-没有采用简单的 L1 或 L2 loss 用于回归误,而是采用 Smooth L1 loss. Smooth L1 和 L1 基本相同,但是,当 L1 误值非常小时,表示为一个确定值即认为是接近正确的,loss 就会以更快的速度消失.
由于 Anchors 一般是有重叠,因此,相同目标的候选区域也存在重叠。
为了解决重叠 proals 问题,采用 NMS 算法处理,丢弃与一个 score 更高的 proal 间 IoU 大于预设阈值的 proals.
虽然 NMS 看起来比较简单,但 IoU 阈值的预设需要谨慎处理. 如果 IoU 值太小,可能丢失 objetcs 的一些 proals;如果 IoU 值过大,可能会导致 objects 出现很多 proals。IoU 典型值为 0.7。
NMS 处理后,根据 sore 对topN 个 proals 排序. 在 Faster R- 论文中 N=2000,其值也可以小一点,如 50,仍然能的高好的结果.
当获得了可能的相关目标和其在原始图像中的对应位置之后,问题就更加直接了,采用 提取的特征和包含相关目标的边界框,采用 RoI Pooling 处理,并提取相关目标的特征,得到一个新的向量。
RPN 处理后,可以得到一堆没有分类得分的目标 proals。待处理问题为,如何利用这些边界框并分类。
目标检测中,包括 Faster R-,常用一种更简单的方法,即:采用每个 proal 来对卷积特征图裁剪crop,然后利用插值算法(一般为双线性插值 bilinear)将每个 crop resize 到固定尺寸14×14×ConvDepth. 裁剪后,利用 2×2 kernel 的 Max Pooling 得到每个 proal 的最终7×7×ConvDepth 特征图.
之所以选择该形状,与其在下面的模块(R-)中的应用有关。
R-利用RoI Pooling提取的特征进行分类,采用全连接层来输出每个可能的 目标类别的分类得分,是Faster R-框架中的一个步骤。
R- 有两个不同的输出:
R- 对每个 proal 的特征图,拉平后采用 ReLU 和两个大小为 4096 维的全连接层进行处理。然后,对每个不同目标采用两个不同的全连接层处理:一个全连接层有 N+1 个神经单元,其中 N 是类别 class 的总数,包括 background class;一个全连接层有 4N 个神经单元,是回归预测输出,得到 N 个可能的类别分别预测 Δcenterx,Δcentery,Δwidth,Δheight。
根据 proals 和 ground-truth boxes,计算其 IoU。与任何一个 ground-truth box 的 IoU 大于 0.5 的 proals 被设为正确的 boxes。IoU 在 0.1 到 0.5 之间时设为 background。这里忽略没有任何交叉的 proals。这是因为,在此阶段,设已经获得良好的 proals。当然,所有的这些超参数都是可以用于调整以更好的拟合 objects。
边界框回归的目标计算的是 proal 与其对应的 ground-truth间的偏移量,只对基于 IoU 阈值设定类别后的 proals 进行计算。随机采用一个平衡化的 mini-batch=64,其中,25% 的 foreground proals(具有类别class) 和 75% 的background proals.
类似于 RPNs 的 losses,对于选定的 proals,分类 loss 采用 multiclass entropy loss;对于 25% 的 foreground proals 采用 SmoothL1 loss 计算其与 groundtruth box 的匹配。
由于 R-全连接网络对每个类别仅输出一个预测值,当计算边框回归loss 时需谨慎,只需考虑正确的类别。
类似于 RPN,R- 最终输出一堆带有类别分类的objects,在返回结果前,再进一步进行处理。
为了调整边界框,需要考虑概率的类别的 proals. 忽略概率值为 background class 的proals.
当得到最终的 objects 时,并忽略被预测为 background 的结果,采用 class-based NMS. 主要是通过对 objects 根据类别class 分组,然后根据概率排序,并对每个的分组采用 NMS 处理,再放在一起.
最终得到的 objects 列表,仍可继续通过设定概率阈值的方式,来限制每个类的 objects 数量.
Faster R-在论文中是采用分步方法,对每个模块分别训练再合并训练的权重. 自此,End-to-end 的联合训练被发现能够得到更好的结果.
当将完整的模型合并后,得到 4 个不同的 losses,2 个用于 RPN,2 个用于 R-。4 种不同的 lo这里也贴一张网上流行的RoIPool的示意图,帮助理解,sses 以加权和的形式组织. 可以根据需要对分类 loss 和回归 loss 设置权重,或者对 R- 和 RPNs 设ResNet 结构逐渐取代 VGG 作为基础网络,用于提取特征。ResNet 相对于 VGG 的明显优势是,网络更大,因此具有更强的学习能力.。这对于分类任务是重要的,在目标检测中也应该如此。另外,ResNet 采用残连接(residual connection) 和 BN (batch normalization) 使得深度模型的训练比较容易。置不同权重.
采用 SGD 训练,momentum=0.9. 学习率初始值为 0.001,50K 次迭代后衰减为 0.0001. 这是一组常用参数设置。
目标检测算法经典论文回顾(一)
目前,主要的目标检测算法包括:论文名称:Rich然后,RPN(Region Proe Network) 对提取的卷积特征图进行处理,寻找可能包含 目标的 预定义数量的区域(regions,边界框) 。为了生成候选区域,在的共享卷积层输出的卷积特征图上做 3x3 卷积,卷积核共有512个(VGG),后面是ReLU,这样每个 3x3 区域会得到一个512维的特征向量。然后这个特征向量被输入到两个全连接层——一个边界框回归层(reg)和一个边界框分类层(cls)。 feature hierarchies for accurate object detection and semantic segmentation
【CV中的特征金字塔】Feature Pyramid Network
为R- 的目标基本上是与 RPN 目标的计算是一致的,但需要考虑不同的可能的 object 类别 classes.了方便说明,做出以下规定:在深度学习兴起以前,很多传统方法都会使用到 图像金字塔 。图像金字塔如上图所示,就是将resize到不同的大小,然后分别得到对应大小的特征,然后进行预测。这种方法虽然可以一定程度上解决多尺度的问题,但是很明显,带来的计算量也非常大。
上图是使用单个feature map进行检测,这种结构在17年的时候是很多人在使用的结构,比如YOLOv1、YOLOv2、Faster R-中使用的就是这种架构。直接使用这种架构导致预测层的特征尺度比较单一,对小目标检测效果比较。ps: YOLOv2中使用了multi-scale training的方式一定程度上缓解了尺度单一的问题,能够让模型适应更多输入尺度。
上图进行了在不同大小的feature map上分别进行预测,具有了多尺度预测的能力,但是特征与特征之间没有融合,遵从这种架构的经典的目标检测架构就是SSD, SSD用了非常多的尺度来进行检测。
然后就是非常经典的FPN架构,FPN可以非常方便地应用到两阶段网络如Faster R-等或者一阶段网络YOLO、SSD等。FPN通过构造一种独特的特征金字塔来避免图像金字塔中计算量过高的问题,同时能够较好地处理目标检测中的多尺度变化问题,效果能够达到当时的STOA。SSD的一个改进版DSSD就是使用了FPN,取得了比SSD更好的效果。
这里展开描述一下FPN的细节:
设当前层为第三层 , 要与 的特征进行融合,那么 先通过 卷积约束通道数和 层达到一致;来自 通过2倍上采样得到的feature map大小和 一致,最终 是通过 上采样结果和 进行element wise add得到结果。
那么 为什么FPN采用融合以后效果要比使用pyramidal feature hierarchy这种方式要好 呢?有以下几个原因:
黑色的框是理论感受野,中心呈高斯分布的亮点是实际感受野,FPN中的top-down之路通过融合不同感受野, 两个高斯分布的实际感受野进行融合,能够让高层加强低层所对应的感受野 。(ps:这一部分是笔者的理解,若有不同见解,欢迎讨论交流)
关于感受野这个观点,FPN论文有一张图,跟之前发表的那篇文章很像,如下图所示:
这张图讲的是FPN应用在DeepMask中做实例分割,其中使用了一个5×5的多层感知机来生成一个14×14的分割结果。对应的浅橙色的区域代表的是对应到原图的区域(与理论感受野相似),深橙域对应的是典型的目标区域(与实际感受野类似),观察这个图我们可以得到几个结论:
以上这点很多讲解FPN网络的作者们都忽略了,如果对这个部分感兴趣,可以到FPN中的附录中找到详细解读。
消融实验
上表中的实验中能得到几个结论:
文章中还有几个实验将FPN添加到RPN网络、DeepMask结构中,都带来不错的效果,FPN确实是一个比较好的feature fusion方法,在此之后,有很多架构的网络也不断地被提出来,都带来了一定的提升。
总结
之前和一个群友在讨论的时候聊到了 FPN的设计 ,当时灵感迸发,产生以下想法:
其实看论文比较多的读者可能已经想到了,ASFF, BiFPN,BiSeNet,TderNet等,这都是比较好解决这个问题的方法。之后会继续解读这几个网络中关于FPN的设计,也欢迎大家交流自己的想法。
特征融合方式总结
图像分割和分类哪个吃资源
在检测金字塔的每一层后面都加了一层卷积,用来预测 top-ll attentions (A)。这里与YOLACT相似,但有所区别:图像分割和分类哪个吃资源如果输入图像中有两个相同类别的对象,以 VGG16 为例:则分割图本身并不一定将它们区分为单独的对象.存在另外一类不同的模型,称为实例,总而言之当然是分类吃资源。
分割吧,分类就那样,没啥好做的。分割可以从两个方面入手,比如你有一个好的项目,拿模型去解决这个项目的问题,得到一个好的结果。或者是是从算法层面,做一些模型设计的改进,提升精度或者效率。
0点赞·1095人阅读
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。