CVPR2016
摘要:
G-CNN,一种基于卷积神经网络的,不依赖于候选框生成算法(proposal algorithms)的目标检测算法。G-CNN从一固定的多尺度网格边框开始,此后训练一回归器迭代地移动和缩放对象网格。意即G-CNN将对象检测问题建模为寻找从固定网格到致密对象框的路径。Fast R-CNN由候选框生成算法生成近2K个边框(候选框),G-CNN仅从180个固定网格开始,然性能与之相当。这种策略去掉候选框生成阶段,减少需要处理的候选框,使得对象检测更快。
介绍:
开始时,多尺度固定网格叠加在图像上,图1为了可视化方便,显示的是不重叠的网格,但实际上这些框可能重叠。训练时,由对齐函数根据边框与实际标注框的重叠比将每个边框对齐至一个标注对象框。然后,在训练的每一步,将网格边框向着图像中与之对齐的对象回归移动。在测试时,对于每一步迭代中的每一个边框,获得所有类别的置信分数,并针对当前最可能的类别以训练好的回归器更新边框的位置。实验证明,G-CNN能在PASCAL VOC数据集上达到Fast R-CNN的性能,但是速度却快上5倍。
G-CNN Object Detector
Network structure
骨干网络可为任意卷积神经网络(如VGG,AlexNet等),跟Fast R-CNN和SPP-Net一样,卷积层之后引入ROI Pooling层。给定每个边框的位置信息,该层通过池化每个ROI中的全局特征来计算边框的特征。经过全连接层之后,网络以一个线性回归器结尾,线性回归器的输出为每个当前边框的位置和比例的变化,条件是假设边框朝着一个类别的对象移动。
Training the network
G-CNN的训练目标和训练方法不同于Fast R-CNN及G-CNN,G-CNN将对象检测问题定义为在所有可能的边界框构成的空间中迭代回归搜索,起始状态为固定的多尺度空间金字塔,训练目标是网络可以迭代地将初始网格框移动到图像内的对象中。这种迭代现象对于算法至关重要,原因在于问题的高度非线性搜索空间。换言之,虽然学习如何将边框线性地回归至较远处的目标是不现实的,但是学习搜索空间中的微小变化是易于处理的。(意即线性回归可迭代逼近求解非线性问题)。
Loss function
由于G-CNN是一种将边框想对象位置迭代移动的方法,因此损失函数的定义不仅仅要定义在训练样本上,还要定义在迭代的每一步上,令代表所有可能边界框的四维空间(中心坐标,宽,高),代表第个训练边框,代表迭代步数,令代表G-CNN训练过程中的步数变量,即代表训练步数中第个边框的位置。训练中,每个与真实标注框的重叠比大于0.2的边框都将被对齐至一个真实标注框,如下一个多对一的函数用以表示这种对齐:
需要注意的是,代表初始网格第个边框的位置,换言之,对于每一个边框而言,对齐操作在初始训练步骤进行,并且在之后的训练过程中不变。由于将初始训练边界框回归到其指定的实际标注边界框可能是高度非线性的,因此采用分段回归方法解决问题。在迭代步数时,将边框回归到从到与之对齐的实际标注框的路径上,在迭代步数内,将训练框一步一步地移动向与之对齐的标注框,直至与标注框一致。下列函数用于定义每一步与训练框对应的回归目标框:
也就是说,在每个步骤,从边界框的当前表示到指定的实际标注框的路径除以剩余步数,并且目标框被定义为远离当前位置一个单位。
G-CNN为每个类别输出4个值,代表向该类对象标注框回归的训练框的变化量,其形式类似于R-CNN中边框回归的表达,记为,其中表示由图5计算得出的当前步与训练框对应的回归目标框。因此G-CNN的损失函数定义为:
其中,代表对于类别的四维参数化输出,即训练边框的相对变化,是与训练框对应的标注框的类别,代表所有标注框的集合。
训练时,训练框在第步的表示可以由网络上一步的输出表示,具体表达为:
其中,的逆表示将训练框的相对变化量从参数化空间中映射回边框空间。但是为了计算上式(图 8 ),需要在训练过程中进行网络前向路径的评估(意即不确定每一步回归之后的结果),导致训练低效,因此,用一种近似的估计来更新训练框,假设第步可以完美地学习步中的回归量(意即将每一步的回归目标框作为下一步训练的初始状态),故更新形式变为:
Optimization
以随机梯度下降一步一步地来优化上述损失函数,将初始网格中的每个边界框与其在每个步骤中的目标框一起视为独立的训练样本,意即对于每个训练边框,共有对不同的训练样本对。该算法首先尝试使用次数迭代优化第一步的损失函数,然后将第二步的训练样本对添加到训练集中,并且训练继续逐步进行。通过将先前步骤的样本保留在训练集中,以此确保网络不会忘记在前面的步骤中学到的内容。
较早步骤的训练样本在训练集中训练的时间较长,这样设计是因为前面的步骤确定了全局搜索的方向,并且对网络能否找到目标对象有更大的影响。此外,后面的步骤仅细化边界框以减少定位误差,鉴于搜索方向是正确的,并且对象的大部分在训练后期在边界框中可见,后面的步骤解决的是相对容易的问题。
算法1是用于在每个步骤从每个边界框生成训练样本的方法。对于某一迭代步骤而言,如是第一步,则令空间金字塔网格为初始训练框,同时为每个训练框分配与之对齐的标注框,对于后续的步骤,令上一步的回归目标框为本次步骤的训练框,得到新的回归框,同时得到训练框与回归框之间的变化,将两者加入训练集中。
Finetuning
在ImageNet数据集的分类模型上微调,对于AlexNet,微调conv2及之后的卷积层,对于VGG,微调conv3及之后的卷积层,训练时,mini-batch=2 images,在G-CNN的每个步骤中,从图像的所有可能样本中随机选择64个训练样本。
G-CNN Test Network
在测试时,边界框的集合被初始化为空间金字塔网格内的框,回归器将边框移向对象,同时根据分类器得分以确定应用哪个类的回归器来更新边框。如下算法2,首先以空间金字塔网格边框作为初始训练框,对于测试过程中的每一步迭代,由分类器得到每个边框的类别,由回归其得到相应的偏移量,再根据偏移量及当前步骤下的边框更新边框,以此类推,最终得到检测框。
在测试时,将网络分解为全局和回归部分,如下图。
全局部分包含所有卷积,回归部分包含全连接层及回归权重,全局部分输入为图片,且对每张图片只计算一次,在算法2的循环之外,算法2的循环部分只是对回归网络进行操作,且以全局部分的最后一层输出为输入,进行边框调整。Fast R-CNN需要对所有的候选框(~2K)进行边框回归,但是G-CNN只需要对(5*180)个候选框进行此过程,然而性能相当。
Experiments
VOC2007数据集上与Fast R-CNN的对比
VOC2012数据集上的对比实验