阅读笔记:Gated Bi-directional CNN for Object Detection

来源:互联网 发布:定义结构体数组 编辑:程序博客网 时间:2024/06/07 10:14

背景

在目标检测中,不同尺寸和分辨率下的多个区域中的视觉线索对待定区域的分类具有互补作用。由此引出目标检测的一个基本问题:如何有效地整合从这些区域中得到的局部和上下文视觉线索。目前大多数的成果仅仅是将从这些区域得到的特征或分数简单结合,本文提出了一个新的双向门控CNN网络(GBD-Net),用于特征学习和特征提取时在不同支持区域的特征间传递信息。这种信息传递可以通过两个方向的卷积实现,并且可以在不同的层中进行。因此,局部和上下文视觉模式可以通过学习他们的非线性关系来彼此证实,然而他也证明对于个别样本,信息传递不总是有用的。门控功被进一步引入以控制消息传输,并且他的开和关是由额外的视觉证据控制的。

一.介绍

目标检测是一个基本的视觉问题,其中检测被视为一个待定区域的分类问题。但由于角度,姿势,遮挡,光照条件记忆背景等的变化,目标检测的难度很大。最近,因为在学习特征方面的突出能力,CNN网络被广泛应用于目标检测任务中。

在目标检测中,如果一个待定域与标准背景的交并比超过一个阈值,则记这个待定域对目标类别的分数是正的。但是,当一个待定域只与标准背景交于一部分时,就会出现很多问题:

①待定域中的视觉线索可能不足以辨别目标的类别。例如图(a)中的两幅图片,待定域中的视觉线索相似,但是其实它们属于两个类别。

       

②待定域的分类还受到遮挡情况的影响,而遮挡情况要从更大的周边区域来推断。

为了解决这些问题,首先就想到在待定域周围寻找上下文区域,除此之外,周围区域还提供了关于背景的上下文信息和其他周边物体来帮助检测。因此,作者设计的深度模型利用了周围区域来提升待定域的分类。

除了这些问题,CNN对输入区域的大小也有一定的限制,如果输入过大,CNN描述局部细节的能力就会弱化,而这些细节对于识别目标类别会产生巨大影响,因此,CNN将输入编码成一个固定长度的特征向量。

作者提出这个新的网络的动机之一是不同分辨率和支持区域上的特征可以彼此验证。举个例子,在局部区域上兔子耳朵的存在可以加强兔子头的存在性,而在一个更大的上下文区域中兔子上半身的存在也能加强兔子头的存在性。由此,作者提出,在多个层间不同分辨率和支持区域的特征应该能够互相传递,并以此在特征学习和特征提取时共同验证它们的存在。

更进一步,作者强调要注意上下文和局部区域之间的信息传递。这种信息不总是有用的,例如图(c)和图(d),局部信息不足以支持目标的正确分类。

 

对于这种情况,就需要一些额外的信息来帮助分类,由此,作者设计了一个网络,利用输入图片中区域的额外信息来自适应地控制信息地传递。

文中,作者提出了一个双向门控CNN结构(GBD-Net),这个模型能在特征学习和提取特征时自适应地建立上下文和局部视觉线索之间的联系。作者在Fast RCNN检测框架下实现这个新提出的网络,并且分别在三个数据集ImageNet,PASCAL VOC2007和Microsoft COCO上实验验证了这个网络的效果。

二.相关工作

待定域的选取。Selective search通过对语义结果按等级分组获得待定域,再用Edgebox对边界盒围出来的轮廓数量进行评估,以此判断其为目标的可能性。

目标检测方法。目前最先进的深度学习是基于RCNN目标检测方法的,它从多个互相交叠的图像区域中提取CNN特征,再用一个线性SVM作为分类器。通过在ImageNet分类数据集上进行预训练,这个网络与之前那些在PASCAL VOC和大规模ImageNet目标检测数据集上使用手工特征的滑窗方法相比,在检测精度上取得了重大进展。

CNN的学习与设计。目前的大多数工作都更关注网络结构的设计,以及它们在检测任务中的效果,例如【1-4,19】提出的更深的网络,

及对有效训练深度网络方法的探究。文中方法主要关注新的双向门控网络结构来有效地利用多尺度和多上下文的区域。作者设计的网络与上述的待定域选取,渠道,CNN层的设计及训练方法是互补的。

信息的传递与门控功能。RNN允许在特征级上传递信息,在长短期记忆网络中利用门控功能控制信息的传递。然而,这两种方法都没有被应用在对多分辨率和多上下文区域的特征提取中,这个目标价测的基本问题没能得到妥善解决。作者设计的信息传递机制和门控功能就是专门针对这个问题设置的。

三.双向门控CNN

1.Fast RCNN Pipeline

作者采用Fast RCNN作为目标检测渠道,步骤如下:

①生成待定域。

②生成特征图。给定CNN的输入,随之生成特征图。

③Roi-polling。每个待定域都被视为一个兴趣区域(ROI),然后在步骤②中生成的CNN特征图上进行一个池化操作。在Roi-pooling操作后,原本具有不同尺寸的待定域都被采样成相同大小的特征向量。

④分类。经ROi-pooling得到的CNN特征经过几个卷积,池化和全连接层最终预测待定域的类别。

2.框架概述

文中方法概述如下图。


此网络以BN-Net为基准网络结构。网络以图片为输入并生成一个特征图,在特征图上进行roi-pooling来获得具有不同分辨率和支持区域的特征(将他们表示为),然后利用双向门控层在特征间进行信息传递(图中红色箭头,图中的G表示门控函数,利用它来控制信息传递的速度),接下来所有的特征通过参数共享的多个CNN层得到最终的特征,最后利用这些特征进行分类。其中,黑色箭头上的参数在各个分支上被共享,而红色箭头上的参数不共享。

作者利用与1.中介绍的Fast RCNN相同的待定域生成和特征图生成的步骤,为了充分利用周围/内部区域的视觉线索,作者又对Fast RCNN进行了一些修正,具体如下:

—在roi-pooling步骤中,从相同的特征图上提取中心位置相同但尺寸不同的区域。不同尺寸的区域在经过roi-pooling后尺寸都变为相同的区域,通过这种方法,采集出的特征对应着不同的支持区域并且具有不同的分辨率。

—不同分辨率的特征随机地通过几个CNN层来提取他们更高级的特征。

—设计双向门控结构来在不同分辨率和支持区域的roi-pooled特征间进行信息传递。通过这种方法,对应不同分辨率和支持区域的特征可以互相验证。

—利用门控函数来控制信息的传递。

—信息传递后,不同分辨率和支持区域的特征经过几个CNN层来做分类。

文中提出了一个典型的模型实现如下图所示。

 

BN-Net中有9个起始模块,在第6个模块(4d)之后对多个分辨率和支持区域做roi-pooling操作,再利用双向门控网络在特征之间进行信息传递,接下来,特征各自经过第7,8,9个起始模块(被所有分支共享)和平均池化层后被用来做分类。

3.不同分辨率和支持区域下特征的roi-pooling

作者利用【6】设计的roi-pooling层来获得具有不同分辨率和支持区域的特征。给定一个待定域,中心位置为,其中为宽度为高度,它的填充边界盒用来表示。是通过将原来的边界盒沿着x和y方向扩大尺度p得到的:

 

RCNN中,p默认为0.2,通过将扩大的边界盒中所有像素warp为固定大小w*h得到CNN的输入,其中对于BN-Net,w=h=224;而在fast RCNN中,对特征图做warp而不再是对像素。对一个边界盒,计算其在特征图上对应的特征盒并且利用最大池化的roi-pooling将中的特征转换为固定大小的特征图。

文中实验对每个待定域都生成一个填充边界盒集合,其中p=-0.2,0.2,0.8,1.7。在CNN特征上通过roi-pooling将这些盒子warp成相同大小,这些填充过的盒子具有不同的分辨率和支持区域。在roi-pooling步骤中,对应的区域被分别warp为特征,步骤如下图。

 

由于特征经过roi-[ooling后尺寸都相同,故背景规模值p不仅决定了填充背景量,还决定了特征的分辨率。p较大就表示分辨率较低,而上下文信息则较多;反之,较小的p表示较高的分辨率和较少的上下文信息。

4.双向门控网络结构

双向结构。作者提出的双向网络结构如下图。对一个单个待定域,输入为,其中用表示背景填充值为下的特征,输出为,记为。为了使(信息传递后得到的分辨率和支持区域都不同的升级特征)彼此间相互配合,这个新的结构在它们间建立了两个方向的连接,一个始于区域尺度最小的特征终于区域尺度最大的特征,另一个与之相反。

 

这个双向结构的向前传播总结如下:

 

其中,i=1,2,3,4。

表示接受(分辨率更高,支持区域更小)的信息后升级的特征。设定,这是因为,是最小的支持区域并且不接受任何信息。

表示接受(分辨率更低,支持区域更大)的信息后升级的特征。设定,这是因为,是最大的支持区域并且不接受任何信息。

CNN特征图沿通道方向连接起来。

—利用卷积滤波器将信息传递后的整合入

表示卷积操作。卷积层的偏置和滤波器分别表示为

—非线性函数使用ReLU。

学习来控制一个分辨率/支持区域的存在对另一个分辨率/支持区域存在的影响的强度。即使经过了双向的信息传递,之间还是互补的,并且在接下来的层中为分类进行联合使用。

作者提出的双向结构与RNN不同,RNN强调利用一个定向循环捕获动态的时间/空间行为,它假定定向连接中的参数都是共享的;而作者提出的结构因为输入的分辨率和背景级都不同,在信息传递时的卷积参数是不共享的。

信息传递的门函数。带有门函数的双向结构如下图。

 

作者通过在带有非线性sigmoid函数的卷积层上设计门函数来将信息传递速度控制在(0,1)之间。在门函数下,(2)(3)中的信息传递变为:

 

其中,,并且表示元素相乘,表示门函数。G为门函数,它包含了可学习的卷积参数并且使用从co-located区域得到的特征决定信息传递的速度。当0时,信息不传递。求的公式不改变。

讨论。作者提出的GBD-Net是在不同的分辨率和背景上建立的。它的定位与roi-pooling的位置无关。在一个极端实验中,直接对原始像素做roi-pooling操作以获得多分辨率和背景的特征,同时,将GBD-Net放在最后一个卷积层来做信息传递。在这个实验中,fast RCNN被减弱为RCNN,由此将在特征图上进行的待定域选取变为在原始像素上进行。

5.实验细节,训练策略和损失函数

对于最先进的fast RCNN目标检测框架,首先利用ImageNet图片分类数据对CNN进行预训练,然后利用它作为初始值来微调CNN以学习每个待定域的目标信心分数s和边界盒回归偏移t。作者提出的框架也遵循这种策略,并且对双向门控结构的滤波器随机初始化,而对其它层从预训练好的CNN进行初始化。最后对类别的预测和边界盒回归基于等式(4)中的表达。以一个类别标签为y,真实背景边界盒偏移为的训练样本为例,文中提出的框架下的损失函数为分类的交叉熵损失和边界盒回归的平滑的L1损失的总和:

 

其中,对类别c的预测分类可能性记为,而预测偏移记为。如果,则,否则,。在此实验中,,网络的参数都是通过反向传播学习到的。

四.实验结果

1.实施细节

作者提出的框架是基于使用BN-Net作为基础网络结构的RCNN pipeline实现的,双向门控结构被加在BN-Net的第六个起始模块(4d)后。在GBD-Net中,属于BN-Net的层被预训练好的(训练数据为ImageNet 1000类的分类和定位数据集)基准BN-Net初始化。GBD-Net的参数如5所示(在预训练的BN-Net中是不存在的),在检测任务中进行微调时做随机初始化。在GBD-Net的实施中,等式(2)-(4)中的特征图(n=1,2,3),与输入具有相同的宽度,高度和通道数量(i=1,2,3,4)。

作者在三个公共数据集上对这个方法进行了评估,分别为ImageNet目标检测数据集,Pascal VOC 2007数据集和Microsoft COCO目标检测数据集。由于ImageNet目标检测任务包含了足够多的图像和目标类以得到结论,故作者在这个数据集上对提出的训练方法进行成分分析。这个数据集包含了200个目标类别并且具有三个子集:训练集,验证集和测试集,再将整个验证集分为两部分val1和val2。网络利用训练集和val1中的训练样本做微调,利用val2做评估。以下实验中训练过程的学习率和权重衰减都固定为0.0005,利用批处理下的随机梯度下降法来学习网络,批尺度为192。The overhead time at inference due to gated connections is less than 40%.

2.整体性能

ILSVRC2014 目标检测数据集。作者将文中框架与其它先进方法进行了比较,结果如下表。(其中,sgl表示单个模型,avg表示平均模型,比较数值为平均正确率。)

 

PASCAL VOC2007数据集。这个数据集包含20个目标类别。作者沿用了【16】中最常用的方法,利用07+12训练集微调网络,并在测试集上评估性能。GBD-Net的平均正确率为77.2%,而基准模型BN+FRCN的平均正确率只有73.1%。

Microsoft COCO目标检测数据集。作者利用MCG来选取区域并且报告封闭测试数据集上的整体和。基准模型BN+FRCN得到24.4%的AP和39.3%的。而利用作者提出的双向门控结构,网络的AP提高了2.6%,达到了27.0%的AP和45.8%的,这有力证明了新模型的效率。

3.成分研究

对不同层利用roi-pooling。Roi-pooling放置的位置与GBN-Net的位置无关。如果将roi-pooling放置在第六个起始模块(4d)之后来生成不同分辨率的特征,这个模型的训练和测试都会更快;而若将其放在图片像素后来生成不同分辨率的特征,这个模型会更慢,这是因为对CNN层的计算直到第六个起始模块都是不能共享的。相比于放在4d之后达到的48.9%的平均正确率,放在像素之后达到的51.4%具有更好的检测精度。这是由于roi-pooling放在像素值之后,GBD-Net的特征更加多样且彼此之间更加密切。

门函数。引入门函数来控制个别待定域的信息传递。如果没有门函数,是很难在实验中训练传递信息的网络的。这是因为信息传递层显著增加了非线性和梯度爆炸或消失,就如很难在没有LSTM的情况下训练

RNN。为了证实这一想法,作者尝试了不同的初始化。对于带有信息传递层而没有门函数的网络,且信息传递层被随机初始化,达到的平均正确率为42.3%;而若这些层由一个已训练好的GBD-Net来初始化,达到的平均正确率则为48.2%。这两个结果都显示出门函数的效果。

利用不同的特征区域尺度。为了研究不同的分辨率和背景设置产生的影响,作者进行了一系列实验。在这些实验中,一个特定填充值p下的特征is added one by one。实验结果如下图。

 

当利用单个填充值时,能够看出仅仅通过增加填充值p来扩大CNN支持域的方法会造成检测性能变差,这是由于受分辨率的损失和背景遮挡的影响。而如果利用GBD-Net将多个分辨率和背景的特征整合起来,随分辨率/背景数量增加检测性能得到大幅提高。

多区域结合。这部分研究了将双向门控结构和多域方法结合下的实验结果。 We adopt the simple straightforward method and average the detection scores of the two approaches.基准模型BN的平均正确率为46.3%,在GBD-Net下为48.9%,基于BN-Net的多域方法为47.3%。将GBD-Net和多域BN结合得到的平均正确率为51.2%,比GBD-Net高2.3%,比多域BN-Net高3.9%。这个实验表明GBD-Net和多域方法是互补的。

五.结论

这篇文章中,作者提出了一个双向门控CNN(GBD-Net)来做目标检测。在这个网络中,在双向结构中不同分辨率和支持域的特征彼此传递信息以验证彼此的存在,在利用门函数来控制信息传递的速率。这个GBD-Net被设计为一般的层,可以被任意结构引用,也可以放在任何卷积层之后来使用不同分辨率和支持域的特征之间的关系。



有三个问题:

1.类别y到底是一个数还是一个什么  如何用y表示类别

2.p为什么取-0.2,0.2,0.8,1.7这四个数,为什么不取对称的数呢

3.这个网络怎样进行SGD,反向传播怎么进行

0 0
原创粉丝点击