物体检测 认识和统治。第2部分


上一篇文章中,我开始了解两阶段的对象检测模型,并讨论了最基本的模型,因此,第一个模型是R-CNN今天,我们看看这个系列的其他模型:Fast R-CNNFaster R-CNN走!

快速r-cnn


由于R-CNN是一个缓慢且效率不高的网络,因此同一作者很快提出了快速R-CNN网络形式的改进

图像处理过程已更改,如下所示:

  1. 提取图像属性图(不是针对每个假设,而是针对整个图像);
  2. 假设搜索(类似于基于选择性搜索的R-CNN);
  3. – .. ( );
  4. ( , SVM-).

RoI layer


在最初的R-CNN概念中,每个提出的假设都使用CNN进行了单独处理-这种方法已成为瓶颈。为了解决该问题,开发了感兴趣区域(RoI)层。该层允许您使用神经网络一次处理整个图像,在输出处接收特征图,然后将其用于处理每个假设。

RoI层的主要任务是将假设的坐标(边界框的坐标)与特征图的相应坐标进行比较。 RoI图层是要素地图的“切片”,将其馈入完全连接的图层的输入中,以用于随后的类别确定和坐标校正(请参见以下部分)。

出现一个逻辑问题-如何将不同大小和纵横比的假设应用于完全连接的层的输入?为此,需要一个RoI层,该层可将图像转换为尺寸Ih×Iw 在尺寸方面 Oh×Ow为此,您需要将原始图像划分为大小Oh×Ow (单元格大小大约 IhOh×IwOw),然后从每个单元格中选择最大数量。

假设有一个5×5特征图,并且该图上的所需假设具有坐标(1,1,4,5)(前两个坐标是左上角,后两个坐标是右下角)。随后的完全连接层的尺寸为4×1(即拉长的2×2矩阵)。然后,将假设分为不同维度的不等块(合并阶段),并在每个假设中取最大数目(合并阶段,结果是输出阶段)。


因此,可以处理整个图像,然后根据特征图处理每个假设。

总:

  • 输入:假设的坐标和原始图像的特征图;
  • 输出:假设的向量表示。

全连接层及其输出


在以前的R-CNN版本中,使用了单独的SVM分类器,在同一实现中,它们被一个SoftMax维输出替代 Nc+1注意,精度损失小于1%。

回归器的输出使用NMS(非最大抑制)进行处理。

总:

  • 输入:假设的向量表示;
  • 输出:属于类的假设概率和对边界框坐标的更正。

多任务丢失


在网络的同时训练中,特殊的损失函数用于回归边界框和分类的任务:

L(P,u,tu,v)=Lcls(P,u)+λ[u1]Lloc(tu,v)


这里:

  • λ调整两个功能之间的平衡是必要的(作者使用 λ= 1);
  • u-正确的班级;
  • Lcls表示分类的误差函数 Lcls(P,u)=logPu;
  • Lloc是SmoothL1函数,用于测量之间的差异 v=(vx,vy,vw,vh)tu=(txu,tyu,twu,thu)值:

    SmoothL1={12x2,if|x|<1|x|12,otherwise


    这里, x表示目标值与预测值之差 tiuvi这种函数结合了L1和L2函数的优点,因为它在较大的值下很稳定x 对于较小的价值则没有太多的罚款。


训练


为了更好地收敛,作者使用以下方法来形成批处理:

  1. 选择批次中的假设数量 R
  2. 随机选择 N图片。
  3. 对于每个 N拍摄的图像 RN假设(即均匀分布在每个图像上)。

同时,R中既包含正假设(占整个批次的25%),也包含负​​样本(占整个批次的75%)。与对象的正确位置重叠的假说大于0.5(IoU)被认为是肯定的。负数是根据“硬负数挖掘”规则进行的-最错误的实例(IoU在[0.1,0.5范围内]的实例)。

而且,作者认为带有参数N=2R=128网络学习的速度比 N=128R=128(即每个图片的一个假设)。

更快的r-cnn


进一步的逻辑改进是一种消除对选择性搜索算法的依赖的方法。为此,我们将整个系统表示为两个模块的组成部分-假设的定义及其处理。第一个模块将使用区域提议网络(RPN)实施,第二个模块类似于Fast R-CNN(从RoI层开始)。

因此,这次处理图像的过程已更改,现在以这种方式发生:

  1. 使用神经网络删除图像特征图;
  2. 根据获得的假设符号图生成-确定近似坐标和任何类别的对象的存在;
  3. 使用RoI将假设坐标与第一步中获得的特征图进行比较;
  4. 假设的分类(已经为特定类别定义)和坐标的其他细化(实际上,可能不适用)。

主要的改进恰好发生在产生假设的地方-为此,现在有了一个单独的小型神经网络,称为区域提议网络


区域提案网


该模块的最终目标是完全取代选择性搜索算法。为了更快地操作,需要网络来提取必要的属性以使用通用权重。因此,RPN输入是此网络之后获得的功能图。原始文章的作者使用VGG16网络提取特征,这些特征的输出被视为最后一个卷积层-conv5_3。这样的网络具有以下接收领域的特征

  • 有效压缩(有效步幅, S0):十六岁
  • 接收场大小 r0):196

这意味着特征图将比原始图像大小小16倍(通道数为512),并且其单元格中的每个值都受原始图像的196×196矩形像素的影响。因此,事实证明,如果使用标准输入VGG16 224×224,则几乎整个图像都会影响特征图中心单元格值的形成(14.14)!根据接收到的特征图,每个像元的RPN会生成k 假设(在原始实现中 k=9)不同的尺寸和长宽比。因此,对于标准尺寸,这是14×14×9 = 1764个假设!

根据下图,我们更详细地考虑RPN模块的算法(可点击图片):


  1. c×H16×W16.
  2. 3×3 ( – ). , (P0=106, r0=228).

  • (i,j) c( 512).

  1. 1×1 c^( cc^):
    1. (cls) c^=2k– - ( 2 ).
    2. (reg) c^=4k– .

    请注意,获得的向量可以转换为矩阵 k×2k×4因此,我们得到矩阵,其中i 该线对应于特定假设的值。

出现一个逻辑问题:如何从进入reg层的向量确定假设的绝对坐标?答案很简单-没办法。为了正确地确定坐标,必须使用所谓的锚点及其坐标的校正。

锚点是具有不同长宽比(1:1、2:1、1:2)和大小(128×128、256×256、512×512)的四边形。锚点的中心是单元格的中心(i,j)卡标牌。因此,例如,取像元(7,7),其中心是值(7.5,7.5),它对应于原始图像(16×7.5)的坐标(120,120)。将这些纵横比与三个纵横比和三个大小的矩形(总计3×3 = 9)进行比较。将来,reg将对这些坐标进行适当的编辑,从而调整边界框的位置和形状。

总:

  • 输入:原始图像的特征图;
  • 输出:包含对象的假设。

损失函数


对于RPN培训,使用以下类符号:

  • 所有具有大于0.7的相交(IoU)或具有所有锚之间的最大相交的锚(如果不存在大于0.7的相交,则适用)为正。
  • 所有交点小于0.3的锚均为负。
  • 所有其他主播均不参加培训(实际上,他们是中立的)。

所以上课 pi锚是根据以下规则授予的:

pi={1ifIoU>0.70ifIoU<0.3nothingotherwise


使用这种表示法,可以最大程度地减少以下功能:

L({pi},{ti})=1NclsiLcls(pi,pi)+λ1NlocipiLreg(ti,ti)


这里:

  • i-锚号码;
  • pi-在其中找到对象的概率 i锚;
  • pi-正确的班级编号(如上所述);
  • ti-4个预测的坐标更正;
  • ti-对坐标的预期(基本事实)更正;
  • Lcls(pi,pi)-二进制对数损失;
  • Lreg(ti,ti)-SmoothL1损失。仅在以下情况下激活pi=1,即 如果假设至少包含某些对象;
  • {pi}{ti}-分类和回归模型的输出;
  • λ-用于调整分类和回归之间平衡的系数。

合并损失的两个部分均标准化为 NclsNloc分别。作者用Ncls 等于小批量的大小(256),并且 Nloc等于锚点的数量。

要将校正回归到边界框,请按以下方式初始化和计算值:

tx=(xxa)wa,tx=(xxa)wty=(yya)ha,ty=(yya)hatw=logwwa,tw=logwwath=loghha,th=loghha


这里 xywh指示边界框的中心,宽度和高度。变数xxxa表示预测,地面真相和锚点的含义(对于 ywh类似地)。

对全部锚点进行培训将对否定类产生偏见(该类还有更多的假设)。就这一点而言,迷你批以正锚与负锚的1:1比例形成。如果找不到合适数量的正锚,则在负批次的帮助下对微型批次进行补充。

通用网络培训


主要目的是在两个模块之间联合使用秤-这将提高工作速度。由于不可能(或相当困难)同时训练两个独立的模块,因此本文的作者使用了一种迭代方法:

  1. 培训RPN网络。卷积层使用在ImageNet训练期间先前获得的权重进行初始化。我们将重新培训定义任何类别的区域的任务(该类别的规范是Fast R-CNN的一部分)。
  2. 训练快速R-CNN网络。与步骤1一样,我们使用先前在ImageNet上训练时获得的权重来初始化Fast R-CNN。我们使用第1项中训练的RPN网络,使用关于物体的假设进行再训练。这次,训练的任务是弄清楚坐标并确定对象的特定类别。
  3. 使用第2页的权重,我们训练RPN部分(去往属于特征提取器的RPN网络的图层将被冻结,并且完全不会发生变化)。
  4. 使用来自第3页的权重(即,经过微调的RPN),我们训练了用于快速R-CNN的层(其余权重-早于RPN或与RPN相关的权重已冻结)。

借助于这样的迭代训练,事实证明整个网络都建立在相同的规模上。您可以继续按照此原理训练网络,但是作者注意到度量标准没有重大变化。

预测过程


当使用神经网络进行预测时,图像传播看起来像这样:

  1. 图像进入神经网络的输入,生成特征图。
  2. 使用RPN处理特征图的每个像元,作为对锚点位置进行校正的结果以及存在任何类别的对象的概率。
  3. 然后,相应的预测帧进一步基于特征图和RoI层,以进一步处理Fast R-CNN部分。
  4. 在输出中,我们获得一类特定的对象及其在图像中的确切位置。

摘要差异


以下是模型之间的简要概述(基本思想是从年轻到老年人的继承):

R-CNN:

  • 使用选择性搜索作为假设生成器。
  • 使用SVM + Ridge对假设进行分类和回归(此外,它们的并行操作是不可能的)。
  • 运行神经网络以分别处理每个假设。
  • 低速。

快速R-CNN:

  • 每个图像仅启动一次神经网络-所有假设均基于单个特征图进行测试。
  • RoI层可对不同大小的假设进行智能处理。
  • 用SoftMax层替换SVN。
  • 并行工作分类和回归的可能性。

更快的R-CNN:

  • 使用特殊的可独立区分模块生成假设。
  • 与RPN模块的出现相关的图像处理方面的变化。
  • 这三个模型中最快的一个。
  • 这是迄今为止最准确的一种。

结论


总而言之,我们可以说R-CNN的发展已从解决一个问题的不同算法转向了单个端到端解决方案。这种组合使您几乎可以使任何方法都更加准确和最有效,对象检测也不例外。

参考书目


  1. R. Girshick, J. Donahue, T. Darrell, and J. Malik. «Rich feature hierarchies for accurate object detection and semantic segmentation.» In CVPR, 2014. arXiv:1311.2524
  2. R. Girshick, J. Donahue, T. Darrell, and J. Malik. «Region-based convolutional networks for accurate object detection and segmentation.» TPAMI, 2015
  3. R. Girshick, «Fast R-CNN,» in IEEE International Conference on Computer Vision (ICCV), 2015.
  4. S. Ren, K. He, R. Girshick, and J. Sun, «Faster R-CNN: Towards real-time object detection with region proposal networks,» in Neural Information Processing Systems (NIPS), 2015.

All Articles