最先进的物体检测系统依赖于一组精确的区域提议。虽然这些方法在计算上是有效的,但它们依赖于固定图像区域作为预测的锚点。在本文中,我们建议使用一种搜索策略,该策略自适应地将计算资源引导到可能包含对象的子区域。与基于固定锚位置的方法相比,我们的方法自然适应于对象实例稀疏且小的情况。代码是公开的。
目标检测是一个重要的计算机视觉问题。通过将深度卷积神经网络(DCNN)[15]纳入物体检测系统[5,8,10,12,17,23,25],已经在该领域取得了重大进展。具有最先进精度的物体检测算法通常具有以下两步级联:假设一组类独立区域提议,然后将其用作检测器的输入,该检测器为每个区域提供类别标签。区域提案的作用是通过限制检测器需要评估的区域数量来降低复杂性。然而,最近引入的技术能够共享卷积特征[9,12],传统的区域提议算法,如选择性搜索[27]和EdgeBoxes [29]成为检测方法的瓶颈。
一类新兴的有效区域提议方法基于端到端训练的深度神经网络[5,22]。这些方法中的共同想法是在一小组预定义的锚区域上训练一个独立于类的回归量。更具体地,每个锚区域被分配用于确定物体是否处于其邻域中的任务(就中心位置,比例和纵横比而言),如果是这种情况,则通过回归预测该对象的边界框。锚的设计因每种方法而异。例如,MultiBox [5]使用来自聚类的800个锚,YOLO [21]使用非重叠的7×7网格,RPN [22]使用重叠滑动窗口。在这些先前的工作中,测试时锚点不适应图像的实际内容,因此为了进一步提高检测小物体实例的准确度,所有图像都需要更密集的锚点网格,导致更长的测试时间和更复杂的网络模型。
我们或者考虑以下自适应搜索策略。 我们的算法不是先验地固定一组锚区域,而是从整个图像开始。然后它递归地将图像划分为子区域(参见图2),直到它确定给定区域不可能包含任何小对象。在该过程中访问的区域有效地充当锚点,其被分配预测附近对象的边界框的任务。我们算法的一个显着特征是,是否进一步划分区域的决定是基于从中提取的特征,该组锚区域的生成以图像内容为条件。对于只有少量小物体的图像,大多数区域在搜索的早期被修剪,在物体附近留下一些小的锚区域。对于仅包含大型实例的图像,我们的方法优雅地回归到依赖于少量大锚区域的现有方法。以这种方式,我们的算法自适应地将其计算资源引导到可能包含对象的区域。图1将我们的算法与RPN进行了比较。
为了支持我们的自适应搜索算法,我们训练了一个深度神经网络,我们称之为邻接和缩放网络(AZ-Net)。给定输入锚定区域,AZ-Net输出标量缩放指示符,该指示符用于决定是否进一步放大(划分)该区域和一组具有置信度分数或邻接预测的边界框。然后将具有高置信度分数的邻接预测用作后续对象检测器的区域提议。从整个图像开始递归地应用网络以生成一组自适应提议。
为了直观地表示我们的网络设计,考虑一种需要快速搜索汽车的情况。一个好的策略是首先寻找可以提供相关类别中较小结构存在的证据的较大结构。例如,搜索可以查找道路并使用它来推断汽车应该在哪里。 一旦搜索接近汽车,就可以使用这样的事实:看到某些部分可以在空间上高度支持预测整体。例如,车轮为汽车的紧凑箱提供了强有力的证据。在我们的设计中,缩放指示器模仿搜索较大结构的过程,而邻接预测模仿邻域推理的过程。
为了验证这种设计,我们通过细粒度分析对Pascal VOC 2007 [6]上的算法进行了广泛的评估。我们还报告了最近引入的MSCOCO [18]数据集的基线结果。我们的算法以快速帧速率实现了接近最先进方法的检测mAP。代码已在https://github.com/luyongxi/az-net上公开发布。
总之,我们做出以下贡献:
•我们为对象检测设计了一种搜索策略,可自动将计算资源集中在包含对象的图像区域上。
•我们评估了我们对Pascal VOC 2007和MSCOCO数据集的方法,并证明它与Fast R-CNN和Faster的R-CNNj精度相当,锚点和建议区域更少。
•我们提供细粒度分析,显示我们方法的有趣特征。也就是说,我们的提案策略可以更好地召回交叉阈值,更少的顶层提案和更小的对象实例的更高召回率。
本文的结构如下。 在第2节我们调查现有文献强调了我们方法的新颖性。在第3节中,我们介绍了算法的设计。第4节介绍了与现有的实证比较标准评估基准上的物体检测方法,第5节讨论了可能的未来方向。
Lampert 等人。 [16]首先提出了一种自适应的Branchand约束方法。最近,Gonzeles-Garcia等人[11],Caicedo和Lazebnik [3]以及Yoo等人。 [28]探索了具有DCNN特征的主动物体检测。虽然这些方法显示了使用自适应算法进行物体检测的前景,但它们的检测器是分类的,并且它们的方法无法实现竞争准确性。 另一方面,我们的方法是多级的,在精度和测试速度方面与最先进的方法相当。
先前已经在文献中探讨了使用空间背景的想法。Torralba等人以前的工作[26] 使用了生物学启发的视觉注意模型[2],但我们的重点是高效的工程设计。Divvala等人。 [4]评估了背景在本地化中的应用,但他们的实证研究是在手工制作的特征上进行的,需要结合更准确的近期方法进行重新审视。
我们的方法与最近使用锚区域进行提案生成或检测的方法密切相关。例如,Erhan等人。 [5]使用800个数据驱动的锚点来进行区域提案和Redmon等人。[21]使用49个非重叠区域的固定网格来提供分类检测。前者担心这些锚点可能会过度拟合数据,而后者无法在没有模型集合的情况下实现最先进的性能。我们的工作与Ren等人最近的工作有很大关系。 [22],它使用一组启发式设计的2400个重叠锚区域。我们的方法使用类似的回归技术来预测锚区域的多个边界框。但是,我们的锚区域是自适应生成的,这使得它们本质上更有效。特别是,我们表明可以在没有过多锚点区域的情况下检测场景中的小对象实例。我们建议根据局部图像证据生成一个更细粒度的锚区域树,并在其上策略性地设计回归模型。我们在实验部分中广泛地比较了我们的方法与[22]的输出,并展示了我们方法的独特优势。
我们的对象检测算法包括两个步骤。在步骤1中,使用具有AZ-Net的自适应搜索生成一组与类无关的区域提议(参见算法1)。 在步骤2中,对象检测器评估在步骤1中提出的每个区域以提供分类检测。 在我们的实验中,检测器是Fast R-CNN。
我们的重点是改进步骤1.我们考虑一种递归搜索策略,从整个图像开始作为根区域。对于搜索过程中遇到的任何区域,算法从该区域提取特征以计算缩放指示符和邻接预测。邻接预测的置信度得分高于阈值的加入输出区域提议集合中。如果缩放指示符高于阈值,则表示当前区域可能包含小对象。为了检测这些小物体,以图2所示的方式将当前区域划分为子区域。然后以与其父区域相同的方式递归地处理这些子区域中的每一个,直到其区域或其缩放指示符太小。 图1说明了这个过程。
在下一节中,我们将讨论缩放指示器和邻接预测的设计。
当区域中至少存在一个目标,且该区域足够支撑这个目标,且目标相对于区域足够小时,放大因子应该大。原因是我们应该只在能增加检测精度时才放大区域。例如,如果一个对象大部分位于该区域之外,则进一步划分该区域不太可能增加检测该对象的机会。例如,如果一个对象大部分位于该区域之外,则进一步划分该区域不太可能增加检测该对象的机会。类似地,如果对象所占面积在当前区域比较大,则检测此对象的任务应由该区域或其父区域处理。在后一种情况下,该区域的进一步划分不仅浪费了计算资源,而且还在区域提案中引入了误报。图3显示了常见情况和缩放指示器的理想行为。
邻接预测的作用是通过提供紧密的边界框来检测与锚区域充分重叠的一个或多个对象。邻接预测由缩放指示器唤醒。更具体地,邻接预测应该在由搜索算法引起的有效锚区域上表现良好。为此,我们提出了一个了解自适应搜索方案的训练程序(在第3.3节中讨论)。另一方面,其设计应明确考虑落入区域内的物体的典型几何形态,以便可以以一致的方式执行训练。出于这个原因,我们建议基于一组子区域先验进行预测,如图4所示。请注意,我们还将锚区域本身作为附加的先验。我们使得子区域先验比锚点更大,直觉是如果对象很小,最好等到提取的特征在正确的比例下进行边界框预测。
次区域先验的例证。 从左到右:垂直条纹,横条纹,相邻方块。红色矩形框是图像。在该图中,编号区域是模板子区域。 为了更好的可视化,夸大了子区域之间的间隙。垂直条纹用于检测高大的物体,水平条纹用于检测肥胖物体,而相邻的正方形用于检测落在搜索过程中生成的锚区域之间的间隙中的对象。
我们使用Caffe [14]框架实现我们的算法,利用提供的开源Fast R-CNN[9]。 在本节中我们将介绍我们的方法的实施细节。 我们用Fast R-CNN探测器,因为它是一种快速而准确的近期方法。 我们的方法原则上应该适用于使用区域提议的广泛类型的物体探测器.
我们训练一个深度神经网络,如图5所示。请注意,除了如图4所示的子区域先验之外,我们还将区域本身添加为特殊的先验区域,每个锚点总共进行11次邻接预测。对于卷积层,我们使用预先训练过ImageNet数据的VGG16模型[23]。完全连接的层位于[9]中引入的区域池层之上,允许有效共享卷积层特征。训练以三步程序进行。首先,从图像中采样一组区域。这些样本应包含缩放指示和邻接预测的正负样本。最后,样本和标签的元组用于标准随机梯度下降训练。我们现在讨论如何对区域进行采样和标记,以及我们选择的损失函数。
由于典型图像仅具有一些对象实例,为了为邻接预测提供足够的正例,我们的方法反向找到将基础事实对象视为与其先前子区域完美匹配的区域(参见图6以进行说明)。这为每个图像提供k×11个训练样例,其中k是对象的数量。
逆匹配程序的插图。红色框是对象的反向匹配(绿色框)。左图显示了相邻方块的反向匹配,右图显示了垂直条纹的反向匹配。
为了挖掘负面例子和硬正面例子,我们按照算法1搜索输入图像。请注意,该算法使用AZ-Net中的缩放指示器。我们使用放大指示标签替换放大预测,我们不是使用on-policy方法(使用中间AZ-Net模型来对区域进行采样)来优化AZ-Net,这可能导致训练发散。但是,我们注意到直接使用缩放标签可能会导致过度拟合,因为在测试时算法可能会遇到先前缩放预测错误的情况。为了提高模型的稳健性,我们通过以0.3的概率翻转groundtruth来为放大标签添加噪声。对于每个输入图像,我们使用五个子图像启动此过程并重复多次。我们还将水平翻转的图像附加到数据集以进行数据增强。
放大指示器的标签分配遵循第3节的讨论。当区域内有物体,且该物体百分之50的以上的区域在这个区域内,同时,物体所占的区域不足该区域的百分之35,则标签置为1.请注意,这里我们使用松散的包含定义来为落在锚点边界之间的对象添加健壮性。对于邻接预测,我们在对象和区域之间的交集(IoU)分数中设置阈值。指定区域与检测物体具有足够的重叠。然后,分配的对象与图4中所示的先验定义的子区域之一贪婪地匹配。匹配中的优先级由对象和子区域之间的IoU分数确定。我们注意到,通过这种方式,来自一个地区的多个预测是可能的。
如图5所示,AZ-Net有三个输出层。放大因子由a sigmoid函数激活。为了训练它,我们使用流行的二元分类的交叉熵损失函数。对于邻接预测,边界框回归使用Fast R-CNN的参数。与Fast R-CNN不同,为了提供来自任何区域的多个预测,概率向量置信度分数不归一化。相应地,我们使用平滑L1损失用于边界框输出和用于置信度得分输出的逐元素交叉熵损失。将三个损失相加在一起以形成多任务损失函数。
我们用于评估建议区域的探测器是使用AZ-Net建议训练的快速R-CNN探测器。我们用于评估建议区域的探测器是使用AZ-Net输出的提议训练的Fast R-CNN探测器。与[22]中一样,我们实现了两个版本:一个具有非共享卷积特征,另一个与AZ-Net共享卷积特征。使用交替优化来训练共享版本。
我们评估了Pascal VOC 2007 [6]和MSCOCO [18]数据集的方法。除了评估最终探测器的准确性之外,我们还对Faster R-CNN采用的RPN方法和我们的AZ-net 在VOC 2007进行了详细的比较。在本节的最后,我们分析了自适应搜索策略的效率。
为了建立基线比较,我们使用标准平均精度(AP)度量来评估我们的方法以进行对象检测。对于AP评估,我们使用VOC 2007对象检测挑战提供的。我们将我们的方法与最近推出的Fast R-CNN [9]和Faster R-CNN [22]系统进行比较,这些系统在标准基准测试中实现了最先进的性能,例如VOC 2007 [6]和VOC 2012 [7]。
比较结果如表1所示。结果表明我们的方法与这些方法相当或更好。
我们对AZ-Net的区域提案质量进行了详细分析,重点介绍了与Faster 0R-CNN中使用的RPN网络的比较。我们对AZ-Net的区域提案质量进行了详细分析,重点介绍了与Faster R-CNN中使用的RPN网络的比较。对于我们的所有实验,我们使用以下定义分析对Pascal VOC 2007测试集的召回:如果存在具有高于阈值IoU的区域提议,则将对象计为检索。然后将召回计算为所有ground thruth 实况对象实例中检索到的对象的比例。为了准确地再现RPN方法,我们下载了Faster R-CNN上提供的区域提议。我们使用了在VOC 2007 trainval上训练的模型的结果。相应地,我们将它与我们在VOC 2007 trainval set上训练的模型进行比较。关于前N个区域的比较是通过按照其置信度得分的顺序对区域提议进行排序来执行的。图8显示了不同IoU阈值下的召回率比较。我们的AZ-net具有比RPN更高的召回率,并且在更高的IoU阈值下具有更大的优势。这表明我们的方法生成的边界框通常与ground thruth对象更好地重叠。提案也更集中于对象,如图9所示。
图10显示了作为提案数量函数的召回图。如果区域建议算法的曲线下面积较大,则该算法在覆盖对象时更有效。我们的实验表明,我们的AZ-Net方法比RPN具有更好的早期召回率。这意味着我们的算法通常可以使用相同数量的区域提议召回更多对象。
图11显示了不同大小的对象的召回比较。“小物体”的面积小于32 * 32,“中物体”的面积在32 * 32和96 * 96之间,“大物体”的面积大于96 * 96,与MSCOCO [18]定义相同。我们的方法实现了对小对象子集的更高召回率。这是因为当场景中存在小物体时,我们的自适应搜索策略会在它们周围生成小锚区域,如图7所示。
我们的方法在运行时是高效的,如表2所示。我们注意到,即使在我们的实施中有几个严重的影响效率的问题,但是我们也可以实现这一目标。首先,对于每个图像,我们的算法需要几轮全连接层评估,这导致GPU和CPU的存储器之间的传输十分昂贵。其次,Faster R-CNN方法使用卷积计算来评估锚区域,与我们采用的RoI池化技术相比,这是高度优化的。尽管效率低下,我们的方法仍然使用低端硬件以最先进的帧速率实现高精度。通过改进的实现和模型设计,我们希望我们的算法明显更快。
突出我们方法优势的一个有趣方面是要评估的锚区域数量很少。为了进一步理解我们算法的这个方面,我们在图12中显示了为每个图像评估的锚区域的分布。对于大多数图像,我们的方法只需要几十个锚区域。这个数字远小于RPN [22]中使用的2400个锚区域和MultiBox [5]中使用的800个。未来的工作可以通过使用昂贵但更准确的每锚步骤,或通过探索应用到非常高分辨率的图像来进一步利用这一优势,传统的非自适应方法将面临困难。我们的实验还证明了设计类通用搜索的可能性。与以前的自适应对象检测方案[3,28]中广泛使用的perclass搜索方法不同,我们的锚区域在对象类之间共享,使其对多类检测有效。
我们还在MSCOCO数据集上评估了我们的方法,并向MSCOCO 2015检测挑战提交了“UCSD”条目。我们的工作通过更多的训练迭代大大提高了准确性。与其他近期方法的比较如表3所示。我们的模型采用微型计划进行培训,包括从一个图像中采样的256个区域,总计720k次迭代。在[22]中报告的RPN(VGG16)的结果是通过8-GPU实现获得的,其实际上每个小批量分别用于RPN和Fast R-CNN的8和16个图像,每个训练迭代320k训练。尽管有效的训练迭代次数要短得多,但我们的AZ-Net实现了与RPN(VGG16)类似的mAP,并且在评估准确定位的MSCOCO mAP指标时更准确。