计算机视觉技术可以在当今的现实环境中使生活和业务更轻松,更便宜,更安全。根据对各方面的专家,这个市场只会在生长的方向,允许适当的技术在生产力和质量的方向发展,在未来几年内移动。最受欢迎的部分之一是对象检测(对象检测)-图像或视频流中对象的定义。仅通过经典机器学习(级联,SVM ...)解决对象检测的时代已经过去-现在,基于深度学习的方法在这一领域占据了主导地位。在2014年,提出了一种对R-CNN模型产生重大影响的方法,该方法对该领域的后续研究和开发产生了重大影响。随后的改进(以Fast R-CNN和Faster R-CNN的形式)使其成为最准确的模型之一,这已成为当今使用它的原因。除了R-CNN,还有许多其他搜索对象的方法:Yolo系列,SSD,RetinaNet,CenterNet ...其中一些提供了替代方法,而其他一些则在提高性能指标的方向上开发了当前方法。由于有大量的筹码和技巧,几乎可以将它们的讨论放在单独的文章中:)为了研究,我提出了一套分析两阶段目标检测模型的文章。了解他们的设备的能力带来了对其他实现中使用的基本思想的理解。在这篇文章中,我们将考虑最基本的,因此是第一个-R-CNN。术语
边界框 -绑定图像特定区域的坐标-最常见的是矩形形状。可以用两种格式的4个坐标表示:居中()和常规()假设(建议), P-图像的特定区域(使用边界框指定),对象可能位于该区域。端到端培训 -培训中的原始图像到达网络输入,并提供现成的答案。IoU(联合上的交集) -两个边界框之间的交集度的度量。神经网络
适用于确定图片中对象位置的第一种方法是R-CNN(区域卷积神经网络)。其架构包括几个连续的步骤,如图1所示:- 定义一组假设。
- 使用卷积神经网络从预期区域中提取特征并将其编码为向量。
- 基于步骤2中的向量,对假设中的对象进行分类。
- 假设的坐标的改进(调整)。
- 从步骤2重复所有操作,直到处理了步骤1的所有假设为止。
更详细地考虑每个步骤。
假设搜索
在输入端有特定图像时,第一件事分解为不同大小的小假设。本文的作者使用``选择性搜索''(Selective Search) -顶层,它允许您根据像素分割,像素强度,色差,对比度和纹理确定对象的边界,从而汇编一组假设(对象的类别无关紧要)。同时,作者指出,可以使用任何类似的算法。因此,大约有2,000个不同的区域突出,它们彼此部分重叠。为了更精确地进行后续处理,每个假设在所有4个方向上进一步扩展了16个像素-就像添加了context一样。总:- 输入:原始图像。
- 输出:一组不同大小和纵横比的假设。
图像编码
上一步中的每个假设都独立且彼此独立地输入卷积神经网络的输入。由于它使用的是AlexNet的体系结构而没有最后一个softmax层。网络的主要任务是将传入的图像编码为从最后一个完全连接的FC7层提取的矢量表示。因此,输出为4096维矢量表示。您可以注意到,AlexNet的输入的尺寸为3×227×227,假设的大小几乎可以是任何长宽比和大小。只需将输入压缩或拉伸到所需的大小,就可以绕过此问题。总:- 输入:上一步中提出的每个假设。
- 输出:每个假设的向量表示。
分类
在获得表征假设的向量之后,就可以对其进行进一步处理。为了确定哪个对象位于目标区域中,作者使用了经典的基于SVM的分离平面分类方法(支持向量机-支持向量机,可以使用Hinge损失进行建模)。应该是 个人(在这里, 表示已定义对象类别的数量,并添加了一个单元,以根据OvR原理(一个vs.其余-一个反对所有,一种多类分类方法)训练的模型。实际上,二进制分类问题已得到解决-在建议区域内是否存在对象的具体类别。所以出路是维度向量,表示对假设中所含对象的特定类别的信心(历史上背景由零类别表示,)总:- 输入:来自网络倒数第二层的每个提出的假设的向量(对于AlexNet,这是FC7)。
- 输出:依次启动每个假设后,我们获得一个维度矩阵 代表每个假设的对象类别。
假设坐标的说明
在步骤1中获得的假设并不总是包含正确的坐标(例如,某个对象可能未成功“裁剪”),因此有必要对其进行额外的修正。这组作者说,这为指标带来了额外的3-4%。因此,包含对象的假设(在分类步骤确定对象的存在)通过线性回归进行额外处理。也就是说,具有“背景”类的假设不需要对区域进行额外的处理,因为实际上那里没有对象……每个特定于其类的对象都具有一定的大小和纵横比,因此,逻辑上,建议对每个类使用我们自己的回归器。与上一步不同,作者使用来自FC7层的非矢量进行输入,以使效果最佳,以及从最后一个MaxPooling层(在AlexNet中, ,尺寸为256×6×6)。解释如下-向量存储有关具有某些特征细节的对象的存在的信息,而特征图最好存储有关对象位置的信息。总:- 输入:来自每个假设的最后一个MaxPooling层的属性映射,该假设包含除背景之外的任何对象。
- 输出:对假设边界框的坐标的更正。
帮手技巧
在继续进行模型训练之前,我们将考虑两个稍后将需要的技巧。正负假设的指定
与老师一起教学时,始终必须在班级之间保持一定的平衡。相反,会导致分类精度差。例如,如果在具有两个类别的样本中,第一个类别仅在少数情况下发生,则网络很难学习如何确定它-毕竟,这可以解释为一个异常值。对于“对象检测”任务,就存在这样的问题-在具有单个对象的图片中,只有几个假设(从〜2000)包含该对象(),其他所有人都是背景()我们采用必要的表示法:包含对象的假设将被称为正(正),而没有对象(仅包含背景或对象的不重要部分)的假设将被称为负(负)。为了随后确定图像的两个区域之间的交点,将使用“ 交集相交”度量。这被认为很简单:两个区域的相交面积除以该区域的总面积。在下图中,您可以看到度量标准计数示例的图示。
使用肯定的假设,一切都会清楚-如果错误定义了类,则需要罚款。但是负面的呢?首先,我们要注意的是,并非所有的负面假设都同样难以识别。例如,仅包含背景(易为否定)的案例比包含另一个对象或所需目标的一小部分(难为否定)要容易得多。在实践中,容易确定的否定性和确定性的否定性取决于边界框(仅用于“相交上方的交集”)与对象在图像中的正确位置的交集。例如,如果没有交叉点,或者交叉点非常小,则很容易得出负数(),如果是很难确定的是正面还是负面。Hard Negative Mining方法建议仅使用Hard Negative进行训练,因为通过学习识别它们,我们可以通过简单的Negative假设自动完成最佳工作。但是,这种思想只会在后续的实现中应用(从Fast R-CNN开始)。非最大抑制
通常情况下,事实证明该模型非常有把握地指出了指向同一对象的多个假设。使用非最大抑制(NMS),您可以处理这种情况,仅保留一个最佳边界框。但是同时,不要忘记图像可以具有相同类别的两个不同对象的情况。图3说明了算法运算之前(左)和运算之后(右)的操作效果。
考虑用于一个类的算法(实际上,它分别应用于每个类):- 在输入处,该函数采用一个类别的一组假设和一个阈值,该阈值设置假设之间的最大交集。
- 假设按其“信心”排序。
- 在循环中,选择第一个假设(它具有最高的置信度值)并将其添加到结果集中。
- 在循环中,选择下一个第二个假设(在步骤3之后剩余的假设中)。
- 如果所选假设之间的交集大于所选阈值(该交集是基于并集交集计算的),则第二个假设将被丢弃,并且不再存在于结果集中。
- 从第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上预先训练的网络为基础-这样的网络已经可以很好地从传入的图像中提取重要的功能,仍然需要训练它们以使用必要的类。为此,将输出层的尺寸更改为并训练一个已经修改的版本。可以阻止第一层,因为它们提取主要特征(对于所有图像几乎相同),而训练过程中的后续特征则可以适应所需类别的特征。因此,融合将更快地实现。但是,如果培训仍然进展不佳,您可以解锁主要层。由于必须精确调整现有的重量。不建议使用较高的学习率(学习率)-您可以很快擦除现有的体重。当网络学会很好地对对象进行分类时,将丢弃具有SoftMax激活的最后一层,而FC7层将成为输出,其输出又可以解释为假设的向量表示。在此步骤中,与对象的正确位置(IoU)相交超过0.5的假设为正。所有其他被认为是负面的。为了更新量表,使用了128个小批量生产,其中包括32个正假设和96个负假设。分类器培训
让我提醒您,因为使用了每个假设的分类 SVM模型接收假设的向量表示的输入,并基于一个相对于另一个(One-vs-Rest)的原理来确定对象的类别。它们被训练为普通的SVM模型,但有一个例外-在这一步中,正负的定义略有不同。在这里,假设被取为负数,其与正确位置的交点小于0.3。回归训练
表示:- -物体的正确坐标;
- -假设坐标的校正位置(必须与 );
- -校正坐标;
- -假设的坐标;
因此,回归变量(每个类别一个)代表四个功能:- , -确定对中心坐标的校正()为了获得独立于原始大小的效果,应将校正标准化。
- 和 -确定对数空间中宽度和高度的校正(对数空间用于数值稳定性,然后除法-确定校正方向)。
表示为 从获得的特征图 网络层(我记得它的尺寸为256×6×6,然后延伸),当将其应用于网络时,假设受坐标限制 。我们将寻求转型 在 例如:\开始{align}
而且
(这里 )是线性函数,向量 使用优化问题(岭回归)进行搜索:
为了确定对坐标的更正,我们在假设的正确位置之间收集对 及其当前状态 ,并定义值 例如:\ begin {align}为了的理解,本文内部公式中的符号可能与原始文章的符号不同。
由于网络的输出上有大约2000个假设,因此使用非最大抑制将它们组合在一起。本文的作者还指出,如果您使用SoftMax层(在第二步中将其折叠)而不是SVM,则准确性降低了约4-4.5%(VOC 2007数据集),但他们指出,最佳的比例尺可能会帮助摆脱该比例尺从这样的问题。
总之,我们强调了这种方法的主要缺点:
- 步骤1中提出的假设可以彼此部分重复-不同的假设可以由相同的部分组成,并且每个这样的假设都由神经网络分别处理。事实证明,大多数网络在不必要的情况下或多或少地相互启动。
- 它不能用于实时操作,因为传递1张图像(帧)(NVIDIA Titan Black GPU)花费了约53秒。
- 没有以任何方式教授假设提取算法,因此,几乎不可能进一步提高质量(没有人取消过错误的假设)。
这将解析第一个R-CNN模型。在另一篇文章中讨论了更高级的实现(以Fast R-CNN和Faster R-CNN的形式)。参考书目
1. R. Girshick,J。Donahue,T。Darrell和J. Malik。“丰富的功能层次结构,用于精确的对象检测和语义分割。” 在CVPR中,2014年。arXiv:1311.25242. R. Girshick,J。Donahue,T。Darrell和J. Malik。“基于区域的卷积网络,用于精确的对象检测和分割。” TPAMI,2015年发布者:Sergey Mikhaylin,Jet Infosystems机器学习专家