里程碑:基于CNN的两级探测器
2012年,世界见证了卷积神经网络的重生。由于深卷积网络能够学习图像的鲁棒和高层次的特征表示,一个自然的问题是我们能否将其应用于目标检测?R.Girshick等人。2014年,率先提出了具有CNN特征的区域(RCNN)用于物体检测,打破了僵局。从那时起,目标检测开始以前所未有的速度发展。
R-CNN:具有CNN特色的地区(2014)
原文:用于精确目标检测和语义分割的丰富特征层次Rich feature hierarchies for accurate object detection and semantic segmentation
概述
R-CNN(1)获取一幅输入图像,(2)提取大约2000个自下而上的区域建议,(3)使用大型卷积神经网络(CNN)计算每个建议的特征,然后(4)使用特定类别的线性支持向量机对每个区域进行分类。目标检测系统由三个模块组成:
- 第一种方法生成独立于类别的区域建议。这些建议定义了检测器可用的候选检测集合。
- 第二个模块是一个大型卷积神经网络,它从每个区域提取一个固定长度的特征向量。
- 第三个模块是一组特定于类的线性支持向量机。
虽然RCNN已经取得了很大的进步,但其缺点也是显而易见的:对大量重叠的方案(一幅图像超过2000个框)进行冗余的特征计算,导致检测速度极慢(使用GPU的每幅图像14s)。
区域建议书
有多种方法可以生成与类别无关的区域建议,包括客观性、选择性搜索、与类别无关的对象建议等。虽然R-CNN对特定的区域建议方法是不可知的,但我们使用选择性搜索来实现与先前检测工作的受控比较。
特征提取
我们使用AlexNet的Caffe实现从每个区域方案中提取一个4096维的特征向量。特征是通过前向传播平均减去227×227RGB图像通过五个卷积层和两个完全连通的层来计算的。无论候选区域的大小或长宽比如何,我们都会将其周围紧凑边界框中的所有像素扭曲为所需的大小。在扭曲之前,我们展开紧密边界框,以便在扭曲大小下,原始框周围恰好有p个像素的扭曲图像上下文(我们使用p=16)。
CNN培训
有监督的前期培训。我们在ImageNet数据集上仅使用图像级注释对CNN进行了有区别的预训练(此数据不提供边界框标签)。
特定于领域的微调。为了使我们的CNN适应新的任务(检测)和新的领域(扭曲的提案窗口),我们继续使用扭曲的区域提案来训练CNN。除了将CNN的特定于ImageNet的1000路分类层替换为随机初始化的(N+1)路分类层(其中N是对象类的数量,加1作为背景)之外,CNN架构没有改变。我们将所有带有≥0.5IOU与地面真相盒子重叠的区域提案视为该盒子类的积极因素,并将睡觉视为负面因素。在每次SGD迭代中,我们均匀采样32个正窗口(所有类别)和96个背景窗口,以构建大小为128的小批量。我们将采样偏向正窗口,因为与背景相比,它们非常罕见。
我们使用IOU重叠阈值来定义负片,低于该阈值的区域被定义为负片。重叠阈值0.3是通过在{0,0.1,.。。,0.5}。我们发现仔细选择这个门槛很重要。正例被简单地定义为每个类的地面真实边界框。一旦提取了特征并应用了训练标签,我们就采用标准的硬否定挖掘方法对每个类优化一个线性支持向量机。
测试时间检测
在测试时,我们对测试图像运行选择性搜索(“快速模式”),以提取大约2000个区域提案。我们扭曲每个提案,并通过CNN将其向前传播,以计算特征。然后,对于每个类别,我们使用为该类别训练的支持向量机对每个提取的特征向量进行评分。给定图像中的所有得分区域,我们应用贪婪的非最大值抑制(独立地针对每个类别),如果区域与大于学习阈值的得分较高的选定区域有交集-并集(IOU)重叠,则拒绝该区域。
空间金字塔汇集网络:SPPNet(2014)
原文:用于视觉识别的深卷积网络中的空间金字塔汇集Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition
概述
我们引入了空间金字塔池(SPP)层来消除网络的固定大小限制。我们在最后一卷积层之上增加一个SPP层。SPP层汇集要素并生成固定长度的输出,然后将其送入完全连接的层(或其他分类器)。
SPP-Net在目标检测方面表现出很强的能力。R-CNN中的特征计算非常耗时,因为它重复地将深卷积网络应用于每幅图像数千个扭曲区域的原始像素。我们表明,我们可以在整个图像上只运行一次卷积层(不考虑窗口数量),然后在特征地图上使用SPP-Net提取特征。
但是,虽然SPPNet有效地提高了检测速度,但仍然存在一些缺点:第一,训练仍然是多阶段的;第二,SPPNet只微调其完全连通的层,而简单地忽略了所有之前的层。
卷积图层和要素地图
我们注意到,固定输入大小的要求只是由于需要固定长度矢量作为输入的完全连接层。另一方面,卷积层接受任意大小的输入。卷积层使用滑动滤波器,其输出与输入的纵横比大致相同。这些输出被称为特征地图-它们不仅包括响应的强度,而且还包括它们的空间位置。
(A)PASCAL VOC 2007中的两幅图像。(B)某些cv5滤波器的特征映射。箭头表示最强烈的响应及其在图像中的相应位置。(C)ImageNet图像具有相应滤波器的最强响应。绿色的矩形标记出反应最强烈的接受区域。
空间金字塔池层
卷积层接受任意输入大小,但它们产生可变大小的输出。分类器(SVM/Softmax)或完全连接层需要固定长度的向量。这样的矢量可以通过将特征集合在一起的词袋(BOW)方法来生成。
空间金字塔池化改进了弓,因为它可以通过在局部空间箱中池化来维护空间信息。这些空间存储箱的大小与图像大小成正比,因此无论图像大小如何,存储箱的数量都是固定的。这与滑动窗口池形成对比,在滑动窗口池中,滑动窗口的数量取决于输入大小。
在每个空间bin中,我们汇集每个过滤的响应(在本文中,我们使用最大汇集)。空间金字塔汇集的输出是具有表示为M(k是最后卷积层中的滤波器数目)的仓数的km维向量。固定维向量是完全连接层的输入。
使用空间金字塔池,输入图像可以是任何大小。这不仅允许任意长宽比,还允许任意比例。我们可以将输入图像调整到任何比例(例如,MIN(w,h)=180224,…)并应用相同的深层网络。当输入图像处于不同尺度时,网络(具有相同过滤大小)将提取不同尺度的特征。
有趣的是,最粗糙的金字塔层有一个覆盖整个图像的垃圾箱。这实际上是一个“全球汇集”的行动。
一种用于目标检测的SPP网
R-CNN将深卷积网络重复应用于每幅图像约2000个窗口,非常耗时。特征提取是测试中的主要时间瓶颈。
使用SPP-Net,我们只从整个图像中提取一次特征地图(可能是在多个尺度上)。然后,我们将空间金字塔集合应用于特征地图的每个候选窗口,以集合该窗口的固定长度表示。因为耗时的卷积只应用一次,所以我们的方法可以快几个数量级。
我们使用选择性搜索的“快速”模式来为每幅图像生成大约2000个候选窗口。然后我们调整图像大小,使min(w,h)=s,并从整个图像中提取特征地图。我们暂时使用ZF-5(单尺寸训练)的SPP网模型。在每个候选窗口中,我们使用一个4级空间金字塔(1×1,2×2,3×3,6×6,共50个箱)来汇集特征。这将为每个窗口生成12,800-d(256×50)的表示。这些表示被提供给网络的完全连接层。然后,在实现R-CNN之后,我们针对这些特征为每个类别训练一个二进制线性支持向量机分类器。
我们的方法可以通过多尺度特征提取来改进。我们调整图像的大小,使得MIN(w,h)=s∈S={4805766888641200},并计算每个尺度的卷积5的特征映射。对于每个候选窗口,我们选择单个尺度的∈S,使得缩放的候选窗口具有最接近224×224的像素数。然后,我们只使用从该尺度提取的特征地图来计算该窗口的特征。
我们还关注R-CNN,微调我们预先训练好的电视网。由于我们的功能是从来自任何大小窗口的cv5功能地图汇集而来的,为简单起见,我们只微调完全连接的层。在这种情况下,数据层接受Conv5之后的固定长度的集合特征,随后是FC6、7层和新的21路(一个额外的负类别)FC8层。
检测复杂度和运行时间
尽管我们的方法具有相当的精确度,但它比R-CNN快得多。R-CNN的卷积特征计算复杂度为O(n·227.227),窗口数为n(∼2 0 0 0)。在s的尺度上,我们方法的复杂度是O(r·s·s),其中r是长宽比。假设r约为4/3,在单比例尺版本中,当s=688时,此复杂度约为R-CNN的1/160;在5比例尺版本中,此复杂度约为R-CNN的1/24。
Fast R-CNN(2015)
原文:Fast R-CNNFast R-CNN
概述
提出了一种新的训练算法,解决了R-CNN和SPPnet的不足,同时提高了它们的速度和准确率。快速R-CNN方法有几个优点:
- 检测质量(MAP)高于R-CNN、SPPnet。
- 训练是单阶段的,采用多任务失利。与R-CNN和SPPnet不同的是,训练是一个多阶段的管道,包括提取特征,用原木损失微调网络,训练支持向量机,最后拟合包围盒回归。
- 培训可以更新所有网络层。与SPPnet不同,微调算法不能更新空间金字塔池之前的卷积层,这限制了深层网络的精度。
- 功能缓存不需要磁盘存储。对于R-CNN和SPPnet,在SVM和包围盒回归训练阶段,提取特征并写入磁盘。这些功能需要数百GB的存储空间。
尽管Fast-RCNN成功地融合了R-CNN和SPPNet的优点,但其检测速度仍然受到提案检测的限制。然后,一个问题自然会出现:“我们能用CNN模型生成对象提案吗?”
快速R-CNN结构
将输入图像和多个感兴趣区域(ROI)输入到完全卷积网络中。每个ROI被汇集成固定大小的特征地图,然后通过全连通层(FCS)映射到特征向量。该网络的每个ROI具有两个输出向量:Softmax概率和每类边界盒回归偏移量。该体系结构是端到端训练的,但会丢失多个任务。
ROI池化层
ROI汇聚层使用最大汇聚将任何有效感兴趣区域内的特征转换成具有固定空间范围H×W(例如,7×7)的小特征地图,其中H和W是独立于任何特定ROI的层超参数。
每个ROI由四元组(r,c,h,w)定义,该四元组指定其左上角(r,c)以及其高度和宽度(h,w)。ROI最大合用的工作方式是将h×w ROI窗口划分为大约大小为h/H×w/W的子窗口的H×W网格,然后将每个子窗口中的值最大合用到相应的输出网格单元中。与标准最大池化一样,池化独立应用于每个要素贴图通道。
ROI层仅仅是SPPnet中使用的空间金字塔池层的特例,其中只有一个金字塔级别。
从预先训练的网络进行初始化
我们使用三个预先训练的ImageNet网络进行实验。当预先训练的网络初始化快速R-CNN网络时,它经历三次转换。
- 首先,通过将H和W设置为与网络的第一全连接层兼容(例如,对于VGG16,H=W=7)配置的ROI池化层来替换最后的最大池化层。
- 其次,网络的最后一个完全连接层和Softmax被替换为两个兄弟层(K+1类别上的完全连接层和Softmax和特定于类别的边界盒回归变量)。
- 第三,网络被修改为接受两个数据输入:图像列表和这些图像中的ROI列表。
多任务损失
FAST R-CNN使用带有一个微调阶段的简化训练过程,该阶段联合优化Softmax分类器和边界框回归变量,而不是分三个单独的阶段训练Softmax分类器、支持向量机和回归变量。每个训练ROI被标记有地面真实类u和地面真实包围盒回归目标v。我们在每个标记的ROI上使用多任务损失L来联合训练用于分类和包围盒回归:
- 第一个任务损失L_cls(p,u)=−logp_u是真类别u的对数损失。这里p=(p0,.。。Pk)是K+1个类别上的离散概率分布(每个ROI)。
- 第二个任务损失L_loc定义在类u的真实边界盒回归目标的元组上,v=(v_x,v_y,v_w,v_h),以及类u的预测元组t_u=(tu_x,tu_y,tu_w,tu_h)。当u≥为1时,艾弗森括号指示符函数[u≥1]的计算结果为1,否则为0。按照惯例,捕获所有背景类被标记为u=0。因此,对于背景ROI,L_loc被忽略。
对于包围盒回归,我们使用健壮的L1损失,它比R-CNN和SPPnet中使用的L2损失对异常值不那么敏感。当回归目标是无界的时,具有L2损失的训练可能需要仔细调整学习率,以防止梯度爆炸。
方程中的超参数λ。1控制两个任务丢失之间的平衡。我们将地面实况回归指标v_i归一化为零均值和单位方差。所有实验都使用λ=1。
小批量抽样
我们提出了一种更有效的训练方法,在训练过程中利用特征共享。在快速R-CNN训练中,随机梯度下降(SGD)小批量被分层采样,首先采样N幅图像,然后从每幅图像中采样R/N感兴趣区。重要的是,来自同一图像的感兴趣区域在正向和反向传递中共享计算和内存。将N设为较小会减少小批量计算。例如,当使用N=2和R=128时,所提出的训练方案比从128个不同图像(即,R-CNN和SPPnet策略)采样一个ROI大约快64倍。
该策略的一个问题是它可能会导致训练收敛缓慢,因为来自同一图像的ROI是相关的。这一问题似乎不是一个实际问题,在N=2和R=128的情况下,我们使用比R-CNN更少的SGD迭代获得了很好的结果。
具体地,每个SGD小批次由N=2个随机选择的图像构成。我们使用大小为R=128的小批次,从每个图像中抽样64个ROI。我们从对象提案中提取25%的ROI,这些对象提案的交集与并集(IOU)重叠,地面真实边界框至少为0.5。这些ROI包括用前景对象类标记的示例,即u≥1。剩余的ROI是从具有最大IOU值的对象提案中采样的,其中基本事实在区间[0.1,0.5]中。这些是背景示例,标记为u=0。较低的阈值0.1似乎可以作为硬示例挖掘的启发式方法。在训练期间,图像以0.5的概率水平翻转。不使用其他数据扩充。
通过ROI池层的反向传播
为清楚起见,我们假设每个小批次(N=1)只有一个图像。设x_i_∈R是ROI池化层的第i个激活输入,并且y_rj是来自第r个ROI的第j个层的输出。ROI池化层计算y_rj=x_i*(r,j),其中i*(r,j)=argmax(i‘∈R(r,j))x_i’。R(r,j)是输出单元y_rj max池在其上子窗口中的输入的索引集合。单个x_i可以被分配给几个不同的输出y_rj。ROI池化层的向后函数通过遵循argmax开关来计算损失函数相对于每个输入变量x_i的偏导数:
对于每个小批量ROIR和每个汇集输出单元y_Rj,如果i是通过最大汇集为y_Rj选择的∂_∂,则累加偏导数argmax L/argmax y_Rj。在反向传播中,偏导数∂L/∂y_Rj已经由ROI汇聚层顶部的层的向后函数计算。
标度不变性
我们探索了两种实现尺度不变目标检测的方法。
- “暴力”学习。在训练和测试期间,每个图像都以预定义的像素大小进行处理。网络必须直接从训练数据中学习尺度不变的目标检测。
- 使用图像金字塔。该方法通过图像金字塔为网络提供近似的尺度不变性。在测试时,使用图像金字塔对每个对象方案进行近似尺度归一化。在多尺度训练过程中,作为数据增强的一种形式,我们在每次采样图像时随机抽样一个金字塔尺度。
测试时间对象检测
在测试时,R通常在2000左右。当使用图像金字塔时,每个ROI被分配给该比例,使得缩放后的ROI最接近该区域中的224×224像素。对于每个测试ROIr,前向传递输出类别后验概率分布p和相对于r的一组预测的边界框偏移(K个类别中的每一个都获得其自己的精细化边界框预测)。我们使用估计的概率将检测置信度分配给每个对象类k的r:
然后,我们使用R-CNN的算法和设置为每个类别独立执行非最大值抑制。
用于更快检测的截断SVD
对于全图像分类,与卷积层相比,计算完全连通层所花费的时间较小。相反,对于检测,要处理的ROI的数量很大,并且几乎一半的前向通过时间花费在计算完全连接层上(在SVD之前,完全连接层FC6和FC7占用45%的时间)。通过截断奇异值分解(SVD)对大的完全连通的层进行压缩,可以很容易地对它们进行加速。在该技术中,由权重矩阵W(u×v)参数化的层被近似分解为
使用奇异值分解(SVD)。在该因式分解中,U是包含W的前t个左奇异向量的u×t矩阵,Σt是包含W的前t个奇异值的t×t对角矩阵,V是包含W的前t个右奇异向量的v×t矩阵,截断奇异值分解将参数计数从UV减少到t(u+v),如果t远远小于Min(u,v),这可能是显著的。
为了压缩网络,将对应于W的单个完全连接层替换为两个完全连接层,它们之间没有非线性。这些层中的第一层使用权重矩阵ΣTV_T(无偏移),第二层使用U(原始偏移与W关联)。这种简单的压缩方法在感兴趣区数目较大时有很好的加速比。
更快的R-CNN(2015)
原文:更快的R-CNN:基于区域建议网络的实时目标检测Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks
概述
区域建议是最先进的检测系统中测试时间计算的瓶颈。我们表明,使用深卷积神经网络计算方案可以得到一种优雅而有效的解决方案,其中方案计算在给定检测网络的计算量的情况下几乎是免费的。
我们观察到,像Fast R-CNN这样的基于区域的检测器所使用的卷积特征映射也可以用于生成区域提案。在这些卷积特征的基础上,我们通过添加几个额外的卷积层来构造RPN(区域建议网络),这些卷积层同时回归规则网格上每个位置的区域边界和客观性分数。因此,RPN是一种完全卷积网络(FCN),并且可以专门针对生成检测建议的任务进行端到端的训练。RPN设计用于有效地预测具有大范围比例和纵横比的区域提案。
我们的目标检测系统称为FASTER R-CNN,由两个模块组成。第一个模块是提出区域的深度全卷积网络,第二个模块是使用所提出的区域的Fast R-CNN检测器。整个系统是一个单一的、统一的目标检测网络。使用最近流行的带有“注意”机制的神经网络术语,RPN模块告诉Fast R-CNN模块去哪里查找。
RPN:概述
区域提案网络(RPN)将图像(任意大小)作为输入,并输出一组矩形对象提案,每个矩形对象提案都具有客观性分数。我们用一个完全卷积网络来模拟这个过程。因为我们的最终目标是与快速R-CNN目标检测网络共享计算,所以我们假设两个网络共享一组公共的卷积层。
为了生成区域提案,我们在最后一个共享卷积层输出的卷积特征地图上滑动一个小网络。该小网络以输入卷积特征图的n×n个空间窗口作为输入。每个滑动窗口被映射到低维特征。此功能被馈送到两个兄弟的完全连接层-盒回归层(REG)和盒分类层(CLS)。在本文中我们使用n=3。请注意,由于迷你网络以滑动窗口方式运行,因此完全连接的层在所有空间位置之间共享。
RPN:锚点
在每个滑动窗口位置,我们同时预测多个区域提议,其中每个位置的最大可能提议的数量表示为k。因此,REG层具有4k个输出,编码k个框的坐标,而CLS层输出2k个分数,其估计每个提议的对象或不对象的概率。相对于k个参考框(我们称之为锚),k个提议被参数化。锚点位于滑动窗口的中心,并与比例和纵横比相关联(图3,左侧)。默认情况下,我们使用3个比例和3个纵横比,在每个滑动位置产生k=9个锚点。对于大小为W×H的卷积特征图(通常为WHK2,400),总共有∼锚点。
RPN:平移不变锚点
我们方法的一个重要特性是它是平移不变的,无论是就锚点和相对于锚点计算提案的函数而言。如果翻译图像中的一个对象,则建议应该转换,并且相同的功能应该能够预测任一位置的建议。
平移不变特性还减小了模型大小。当k=9个锚点时,我们的方法有一个(4+2)×9维卷积输出层。结果,我们的输出层有2.8×104个参数(VGG-16为512×(4+2)×9)。我们预计我们的方法在小型数据集(如Pascal VOC)上过度拟合的风险较小。
RPN:作为回归参考的多尺度锚点
我们的锚点设计提出了一种新颖的解决多尺度(和纵横比)的方案。如图1所示,有两种流行的多尺度预测方法。
- (A)建立图像和特征地图的金字塔,并在所有尺度下运行分类器。这种方法通常很有用,但很耗时。
- (B)在特征地图上运行具有多个比例/大小的过滤器的金字塔。它通常与第一种方式一起采用。
- (C)我们在回归函数中使用参考盒(锚)的金字塔。我们的方法参照多种尺度和纵横比的锚框对边界框进行分类和回归。它仅依赖于单一比例的图像和特征地图,并且使用单一大小的过滤器(特征地图上的滑动窗口)。此设计是共享功能的关键组件,无需为解决扩展而增加额外成本。
RPN:损失函数
对于训练RPN,我们为每个锚点分配一个二进制类别标签(作为对象或不是对象)。
- 正锚点:(I)具有最高并集交点(IOU)的一个或多个锚点与地面实况框重叠,或(Ii)IOU重叠大于0.7的锚点与任何地面实况框重叠。
- 负锚定:如果所有事实框的欠条比率都低于0.3。
- 其他主播:既不积极也不消极的主播对培训目标没有贡献。
我们对图像的损失函数定义为:
这两个项由N_cls和N_reg归一化,并由平衡参数λ加权。在我们当前的实现中,N_cls=256是最小批量大小;N_reg~2400是锚点位置的数量。默认情况下,我们设置λ=10,因此这两个术语的权重大致相等。但实验表明,结果对λ值在很大范围内不敏感,不需要归一化,可以简化。
对于包围盒回归,我们采用以下4个坐标的参数化:
这可以被认为是从锚盒到附近的地面真实盒的包围盒回归。
在我们的公式中,用于回归的特征在特征地图上具有相同的空间大小(3×3)。为了适应不同的大小,学习了一组k个包围盒回归变量。每个回归变量负责一个比例和一个纵横比,k个回归变量不共享权重。因此,由于锚的设计,即使特征具有固定的大小/比例,仍然可以预测各种大小的盒子。
RPN:培训
RPN可以通过反向传播和随机梯度下降(SGD)进行端到端的训练。我们遵循“以图像为中心”的抽样策略。每个小批次产生于包含许多正面和负面示例锚点的单个图像。可以对所有锚的损失函数进行优化,但这将偏向负样本,因为它们占主导地位。取而代之的是,我们在一幅图像中随机抽样256个锚点来计算小批量的损失函数,其中采样的正负锚点的比例高达1:1。如果图像中的正样本少于128个,则用负样本填充小批量。
RPN和Fast R-CNN的共享功能
对于检测网络,我们采用了Fast R-CNN。为了在RPN和Fast R-CNN之间共享卷积层,我们研究了三种方式
- (I)交替训练。在这个解决方案中,我们首先训练RPN,并使用这些建议来训练Fast R-CNN。然后使用由Fast R-CNN调谐的网络来初始化RPN,并且重复该过程。
- (Ii)近似联合训练。在该方案中,在训练过程中将RPN和Fast R-CNN网络合并为一个网络。在每一次SGD迭代中,正向传递生成区域建议,当训练快速R-CNN探测器时,这些区域建议被视为固定的、预先计算的建议。反向传播照常发生,其中对于共享层,来自RPN损耗和快速R-CNN损耗两者的反向传播信号被组合。该解决方案易于实施。但是这个解忽略了导数w.r.t。建议箱的坐标也是网络响应,所以是近似值。在我们的实验中,我们发现这种求解器得到了接近的结果,但与交替训练相比,训练时间减少了约25%-50%。
- (Iii)非近似联合训练。如上所述,理论上有效的反向传播解算器还应该包括梯度w.r.t。盒子的坐标。在上述近似联合训练中忽略了这些梯度。在非近似联合训练解决方案中,我们需要一个可微的w.r.t.盒子的坐标。
4步交替训练。本文采用一种实用的4步训练算法,通过交替优化来学习共享特征。
- (1)训练RPN。此网络使用ImageNet预先训练的模型进行初始化,并针对区域建议任务进行端到端微调。
- (2)使用STEP-1 RPN生成的建议,通过Fast R-CNN训练单独的探测网络。该检测网络也由ImageNet预训练模型初始化。此时,这两个网络不共享卷积层。
- (3)使用检测器网络初始化RPN训练,但固定共享卷积层,并且仅微调RPN特有的层。现在这两个网络共享卷积层。
- (4)保持共享卷积层数不变,微调Fast R-CNN的独特层数。
因此,两个网络共享相同的卷积层并形成统一的网络。类似的交替训练可以运行更多的迭代,但我们观察到的改进可以忽略不计。
一些实现细节
我们重新缩放图像,使其短边为s=600像素。对于锚点,我们使用3个比例,框区域为128^2、256^2和512^2像素,3个纵横比为1:1、1:2和2:1。
跨越图像边界的锚定框需要小心处理。在培训期间,我们忽略所有跨境锚,因此他们不会造成损失。然而,在测试期间,我们仍然将完全卷积RPN应用于整个图像。这可能会生成跨境建议框,我们将其裁剪到图像边界。
一些RPN提案彼此高度重叠。为了减少冗余,我们根据建议区域的CLS得分对其进行非最大抑制(NMS)。我们将网管的IOU阈值固定为0.7,每张图片大约有2000个提案区域。正如我们将展示的那样,NMS不会损害最终的检测精度,但会大大减少建议的数量。
功能金字塔网络(2017)
原文:用于目标检测的特征金字塔网络Feature Pyramid Networks for Object Detection
概述
本文的目标是自然地利用ConvNet特征层次的金字塔形状,同时创建在所有尺度上都具有较强语义的特征金字塔。为了实现这一目标,我们依赖一种体系结构,该体系结构通过自顶向下路径和横向连接将低分辨率、语义强的功能与高分辨率、语义弱的功能相结合。其结果是在所有级别具有丰富语义的特征金字塔,并且从单个输入图像比例快速构建。
在图1中,功能地图由蓝色轮廓表示,较粗的轮廓表示语义更强的功能。
- (A)使用图像金字塔构建特征金字塔。特征是在每个图像比例上独立计算的,这很慢。
- (B)只使用单尺度特征,以便更快地进行检测。
- (C)另一种选择是重复使用由ConvNet计算的金字塔特征层次结构,就好像它是特征化的图像金字塔一样。
- (D)我们提出的特征金字塔网络(FPN)与(B)和(C)一样快速,但更准确。
TOP:具有跳过连接的自上而下的体系结构,其中预测是在最精细的级别上进行的。
下图:我们的模型具有类似的结构,但将其用作功能金字塔,所有级别的预测都是独立进行的。
自下而上路径
自下而上的路径是主干ConvNet的前馈计算,它计算由多个尺度的特征地图组成的特征层次结构,缩放步长为2。通常有许多层产生相同大小的输出地图,我们称这些层处于相同的网络阶段。对于我们的要素棱锥体,我们为每个阶段定义一个棱锥体级别。我们选择每个阶段最后一层的输出作为我们的参考要素地图集,我们将丰富这些要素地图以创建我们的金字塔。这种选择是很自然的,因为每个阶段的最深一层都应该有最强的特征。
具体地说,对于ResNet,我们使用每个阶段最后剩余的挡路输出的功能激活。对于vv2、vv3、vv4和vv5输出,我们将这些最后残差块的输出表示为{C2,C3,C4,C5},并且注意到它们相对于输入图像具有{4,8,16,32}像素的跨度。
自上而下的路径和横向连接
自上而下的路径通过对来自较高金字塔级别的空间上较粗糙但语义上较强的特征地图进行上采样来幻觉较高分辨率的特征。然后通过横向连接用来自自下而上路径的特征来增强这些特征。每个横向连接合并来自自下而上路径和自上而下路径的相同空间大小的特征地图。自下而上的功能地图具有较低级别的语义,但由于其子采样次数较少,因此其激活更精确地进行了本地化。
对于较粗分辨率的特征地图,我们将空间分辨率上采样2倍(最近邻上采样)。然后,通过逐个元素的加法将上采样的映射与相应的自下而上映射(其经历1×1卷积层以降低信道维数)合并。重复此过程,直到生成最精细的分辨率贴图。
要开始迭代,我们只需在C5上附加1×1卷积层即可生成最粗的分辨率图。最后,在每个合并后的地图上附加3×3的卷积来生成最终的特征地图,以减少上采样的混叠效应。这组最终的特征地图称为{P2,P3,P4,P5},分别对应于空间大小相同的{C2,C3,C4,C5}。
由于金字塔的所有级别都像传统的特征化图像金字塔一样使用共享的分类器/回归变量,因此我们固定了所有特征地图中的特征维度(通道数,表示为d)。在本文中,我们设置d=256,因此所有额外的卷积层都有256通道输出。
RPN的特征金字塔网络
在最初的RPN设计中,一个小的子网是在密集的3×3滑动窗口上,在单尺度卷积特征图上进行评估的。我们通过用我们的FPN替换单比例尺特征地图来适应RPN。我们在我们的特征金字塔的每一层都附加了一个相同设计的头部(3×3圆锥和两个兄弟1×1圆锥)。由于头部在所有棱锥体标高的所有位置上密集滑动,因此没有必要在特定标高上具有多比例锚点。相反,我们将单个比例的锚点指定给每个标高。形式上,我们定义锚点分别在{P2,P3,P4,P5,P6}上具有{32,64,128,256,512}像素的正方形区域。我们还在每个级别使用多个长宽比为{1:2,1:1,2:1}的锚。因此,金字塔上总共有15个锚。
在更快的R-CNN中,我们遵循相同的约定为主播分配训练标签。请注意,地面真值框的比例并未显式用于将其指定给棱锥体的级别;相反,地面真值框与已指定给棱锥体级别的锚点相关联。
我们注意到头部的参数在所有特征金字塔级别之间是共享的;我们还在没有共享参数的情况下对备选方案进行了评估,并观察到了类似的准确性。参数共享的良好性能表明我们的金字塔的各个层次都有相似的语义层次。
用于Fast R-CNN的特征金字塔网络
FAST R-CNN是一种基于区域的目标检测器,其中使用感兴趣区域(ROI)汇集来提取特征。FAST R-CNN最常在单比例要素地图上执行。要将其与我们的FPN一起使用,我们需要将不同比例的ROI分配给金字塔级别。
我们通过以下方式将宽度为w、高度为h的ROI指定给要素棱锥体的级别P_k:
我们将预测器头部(在Fast R-CNN中,头部是特定于类的分类器和边界盒回归变量)附加到所有级别的所有ROI。同样,无论其级别如何,头部都共享参数。
原创文章,作者:fendouai,如若转载,请注明出处:https://panchuang.net/2021/07/13/%e2%80%8a-%e2%80%8a%e7%9b%ae%e6%a0%87%e6%a3%80%e6%b5%8b20%e5%b9%b4%e8%ae%ba%e6%96%87%e9%98%85%e8%af%bb%e7%bb%bc%e8%bf%b0%e4%b8%8b-2/