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



计算机视觉技术可以在当今的现实环境中使生活和业务更轻松,更便宜,更安全。根据各方面的专家,这个市场只会在生长的方向,允许适当的技术在生产力和质量的方向发展,在未来几年内移动。最受欢迎的部分之一是对象检测(对象检测)-图像或视频流中对象的定义。

仅通过经典机器学习(级联,SVM ...)解决对象检测的时代已经过去-现在,基于深度学习的方法在这一领域占据了主导地位。在2014年,提出了一种对R-CNN模型产生重大影响的方法,该方法对该领域的后续研究和开发产生了重大影响。随后的改进(以Fast R-CNN和Faster R-CNN的形式)使其成为最准确的模型之一,这已成为当今使用它的原因。

除了R-CNN,还有许多其他搜索对象的方法:Yolo系列,SSD,RetinaNet,CenterNet ...其中一些提供了替代方法,而其他一些则在提高性能指标的方向上开发了当前方法。由于有大量的筹码和技巧,几乎可以将它们的讨论放在单独的文章中:)

为了研究,我提出了一套分析两阶段目标检测模型的文章。了解他们的设备的能力带来了对其他实现中使用的基本思想的理解。在这篇文章中,我们将考虑最基本的,因此是第一个-R-CNN。

术语


边界框 -绑定图像特定区域的坐标-最常见的是矩形形状。可以用两种格式的4个坐标表示:居中(cx,cy,w,h)和常规(xmin,ymin,xmax,ymax

假设(建议), P-图像的特定区域(使用边界框指定),对象可能位于该区域。

端到端培训 -培训中的原始图像到达网络输入,并提供现成的答案。

IoU(联合上的交集) -两个边界框之间的交集度的度量。

神经网络


适用于确定图片中对象位置的第一种方法是R-CNN(区域卷积神经网络)。其架构包括几个连续的步骤,如图1所示:

  1. 定义一组假设。
  2. 使用卷积神经网络从预期区域中提取特征并将其编码为向量。
  3. 基于步骤2中的向量,对假设中的对象进行分类。
  4. 假设的坐标的改进(调整)。
  5. 从步骤2重复所有操作,直到处理了步骤1的所有假设为止。

更详细地考虑每个步骤。



假设搜索


在输入端有特定图像时,第一件事分解为不同大小的小假设。本文的作者使用``选择性搜索''Selective Search) -顶层,它允许您根据像素分割,像素强度,色差,对比度和纹理确定对象的边界,从而汇编一组假设(对象的类别无关紧要)。同时,作者指出,可以使用任何类似的算法。因此,大约有2,000个不同的区域突出,它们彼此部分重叠。为了更精确地进行后续处理,每个假设在所有4个方向上进一步扩展了16个像素-就像添加了context一样

总:

  • 输入:原始图像。
  • 输出:一组不同大小和纵横比的假设。

图像编码


上一步中的每个假设都独立且彼此独立地输入卷积神经网络的输入。由于它使用的是AlexNet的体系结构而没有最后一个softmax层。网络的主要任务是将传入的图像编码为从最后一个完全连接的FC7提取的矢量表示因此,输出为4096维矢量表示。

您可以注意到,AlexNet的输入的尺寸为3×227×227,假设的大小几乎可以是任何长宽比和大小。只需将输入压缩或拉伸到所需的大小,就可以绕过此问题。

总:

  • 输入:上一步中提出的每个假设。
  • 输出:每个假设的向量表示。

分类


在获得表征假设的向量之后,就可以对其进行进一步处理。为了确定哪个对象位于目标区域中,作者使用了经典的基于SVM的分离平面分类方法(支持向量机-支持向量机,可以使用Hinge损失进行建模)。应该是Nc+1 个人(在这里, Nc表示已定义对象类别的数量,并添加了一个单元,以根据OvR原理(一个vs.其余-一个反对所有,一种多类分类方法)训练的模型。实际上,二进制分类问题已得到解决-在建议区域内是否存在对象的具体类别。所以出路是Nc+1维度向量,表示假设中所含对象的特定类别的信心(历史上背景由零类别表示,Ci=0

总:

  • 输入:来自网络倒数第二层的每个提出的假设的向量(对于AlexNet,这是FC7)。
  • 输出:依次启动每个假设后,我们获得一个维度矩阵 2000×Nc代表每个假设的对象类别。

假设坐标的说明


在步骤1中获得的假设并不总是包含正确的坐标(例如,某个对象可能未成功“裁剪”),因此有必要对其进行额外的修正。这组作者说,这为指标带来了额外的3-4%。因此,包含对象的假设(在分类步骤确定对象的存在)通过线性回归进行额外处理。也就是说,具有“背景”类的假设不需要对区域进行额外的处理,因为实际上那里没有对象……

每个特定于其类的对象都具有一定的大小和纵横比,因此,逻辑上,建议对每个类使用我们自己的回归器。

与上一步不同,作者使用来自FC7层的非矢量进行输入,以使效果最佳,以及从最后一个MaxPooling层(在AlexNet中, MaxPool5,尺寸为256×6×6)。解释如下-向量存储有关具有某些特征细节的对象的存在的信息,而特征图最好存储有关对象位置的信息。

总:

  • 输入:来自每个假设的最后一个MaxPooling层的属性映射,该假设包含除背景之外的任何对象。
  • 输出:对假设边界框的坐标的更正。

帮手技巧


在继续进行模型训练之前,我们将考虑两个稍后将需要的技巧。

正负假设的指定


与老师一起教学时,始终必须在班级之间保持一定的平衡。相反,会导致分类精度差。例如,如果在具有两个类别的样本中,第一个类别仅在少数情况下发生,则网络很难学习如何确定它-毕竟,这可以解释为一个异常值。对于“对象检测”任务,就存在这样的问题-在具有单个对象的图片中,只有几个假设(从〜2000)包含该对象(Ci>0),其他所有人都是背景(Ci=0

我们采用必要的表示法:包含对象的假设将被称为(正),而没有对象(仅包含背景或对象的不重要部分)的假设将被称为(负)。

为了随后确定图像的两个区域之间的交点,将使用“ 交集相交”度量。这被认为很简单:两个区域的相交面积除以该区域的总面积。在下图中,您可以看到度量标准计数示例的图示。



使用肯定的假设,一切都会清楚-如果错误定义了类,则需要罚款。但是负面的呢?首先,我们要注意的是,并非所有的负面假设都同样难以识别。例如,仅包含背景(易为否定)的案例比包含另一个对象或所需目标的一小部分(难为否定要容易得多

在实践中,容易确定的否定性和确定性的否定性取决于边界框(仅用于“相交上方的交集”)与对象在图像中的正确位置的交集。例如,如果没有交叉点,或者交叉点非常小,则很容易得出负数(Ci=0),如果是很难确定的是正面还是负面。Hard Negative Mining

方法建议仅使用Hard Negative进行训练,因为通过学习识别它们,我们可以通过简单的Negative假设自动完成最佳工作。但是,这种思想只会在后续的实现中应用(从Fast R-CNN开始)。

非最大抑制


通常情况下,事实证明该模型非常有把握地指出了指向同一对象的多个假设。使用非最大抑制(NMS),您可以处理这种情况,仅保留一个最佳边界框。但是同时,不要忘记图像可以具有相同类别的两个不同对象的情况。图3说明了算法运算之前(左)和运算之后(右)的操作效果。



考虑用于一个类的算法(实际上,它分别应用于每个类):

  1. 在输入处,该函数采用一个类别的一组假设和一个阈值,该阈值设置假设之间的最大交集。
  2. 假设按其“信心”排序。
  3. 在循环中,选择第一个假设(它具有最高的置信度值)并将其添加到结果集中。
  4. 在循环中,选择下一个第二个假设(在步骤3之后剩余的假设中)。
  5. 如果所选假设之间的交集大于所选阈值(该交集是基于并集交集计算的),则第二个假设将被丢弃,并且不再存在于结果集中。
  6. 从第3步开始重复所有步骤,直到完全列举了假设为止。

伪代码如下所示:

function nms(hypotheses, threshold):
    sorted = sort(hypotheses.values, key=hypotheses.scores)
    result = []
    for first in sorted:
        result.join(first)
        without_first = sorted / first
        for second in without_first:
            if IoU(first, second) > threshold:
                 sorted.remove(second)
    return result


训练


假设隔离块是无法学习的。

由于网络被分为彼此分开的几个块,因此无法在端到端的基础上进行训练。因此,学习是一个顺序的过程。

矢量视图训练


以ImageNet上预先训练的网络为基础-这样的网络已经可以很好地从传入的图像中提取重要的功能,仍然需要训练它们以使用必要的类。为此,将输出层的尺寸更改为Nc并训练一个已经修改的版本。可以阻止第一层,因为它们提取主要特征(对于所有图像几乎相同),而训练过程中的后续特征则可以适应所需类别的特征。因此,融合将更快地实现。但是,如果培训仍然进展不佳,您可以解锁主要层。由于必须精确调整现有的重量。不建议使用较高的学习率(学习率)-您可以很快擦除现有的体重。

当网络学会很好地对对象进行分类时,将丢弃具有SoftMax激活的最后一层,而FC7层将成为输出,其输出又可以解释为假设的向量表示。

在此步骤中,与对象的正确位置(IoU)相交超过0.5的假设为正。所有其他被认为是负面的。为了更新量表,使用了128个小批量生产,其中包括32个正假设和96个负假设。

分类器培训


让我提醒您,因为使用了每个假设的分类 Nc+1SVM模型接收假设的向量表示的输入,并基于一个相对于另一个(One-vs-Rest)的原理来确定对象的类别。它们被训练为普通的SVM模型,但有一个例外-在这一步中,正负的定义略有不同。在这里,假设被取为负数,其与正确位置的交点小于0.3。

回归训练


表示:

  • G=(gx,gy,gw,gh)-物体的正确坐标;
  • G^=(gx^,gy^,gw^,gh^)-假设坐标的校正位置(必须与 G);
  • T=(tx,ty,tw,ty)-校正坐标;
  • P=(px,py,pw,ph)-假设的坐标;

因此,回归变量(每个类别一个)代表四个功能:

  • dx(P)dy(P)-确定对中心坐标的校正(x,y为了获得独立于原始大小的效果,应将校正标准化。
  • dw(P)dh(P)-确定对数空间中宽度和高度的校正(对数空间用于数值稳定性,然后除法-确定校正方向)。

表示为 φ5(P)从获得的特征图 MaxPool5网络层(我记得它的尺寸为256×6×6,然后延伸),当将其应用于网络时,假设受坐标限制 P我们将寻求转型PG例如:

\开始{align} 而且
gx^=pwdx(P)+pxgy^=phdy(P)+pygw^=pwedw(P)gh^=phedh(P)

d(P)=wTφ5(P)(这里 (x,y,w,h))是线性函数,向量 w使用优化问题(岭回归)进行搜索:

w=argmaxw^iN(Tid(P))2+λwx^2


为了确定对坐标的更正,我们在假设的正确位置之间收集对 G及其当前状态 P,并定义值 T例如:

\ begin {align}为了的理解,本文内部公式中的符号可能与原始文章的符号不同。 由于网络的输出上有大约2000个假设,因此使用非最大抑制将它们组合在一起。本文的作者还指出,如果您使用SoftMax层(在第二步中将其折叠)而不是SVM,则准确性降低了约4-4.5%(VOC 2007数据集),但他们指出,最佳的比例尺可能会帮助摆脱该比例尺从这样的问题。
Tx=gxpxpwTy=gypyphTw=loggwpwTh=logghph





总之,我们强调了这种方法的主要缺点:


  1. 步骤1中提出的假设可以彼此部分重复-不同的假设可以由相同的部分组成,并且每个这样的假设都由神经网络分别处理。事实证明,大多数网络在不必要的情况下或多或少地相互启动。
  2. 它不能用于实时操作,因为传递1张图像(帧)(NVIDIA Titan Black GPU)花费了约53秒。
  3. 没有以任何方式教授假设提取算法,因此,几乎不可能进一步提高质量(没有人取消过错误的假设)。

这将解析第一个R-CNN模型。另一篇文章中讨论了更高级的实现(以Fast R-CNN和Faster R-CNN的形式)

参考书目


1. R. Girshick,J。Donahue,T。Darrell和J. Malik。“丰富的功能层次结构,用于精确的对象检测和语义分割。” 在CVPR中,2014年。arXiv:1311.2524

2. R. Girshick,J。Donahue,T。Darrell和J. Malik。“基于区域的卷积网络,用于精确的对象检测和分割。” TPAMI,2015年

发布者:Sergey Mikhaylin,Jet Infosystems机器学习专家

All Articles