AZNet
算法背景
传统的目标检测的方法需要假设一组与目标类别无关region proposal,然后输入检测器,检测器再给每个proposal进行分类,region proposal的作用就是通过限制需要由探测器评估的区域的数量来降低复杂性。然而,随着最近引入的能够共享卷积特征点技术,传统的region proposal算法比如selective search和EdgeBox算法成为检测pipeline的瓶颈。
算法思想
AZNet利用了自适应的搜索策略,算法不是先确定一组anchor,而是从整张图像开始,然后递归的将图像划分为子区域,直到确定的给定区域不太可能包含任何小对象为止,(见figure2):
被分配的区域充当预测附近物体边界框的anchor的任务,算法的一个显著特征是,通过特定区域的特征提取来决定是否进一步划分这个区域,因此,anchor的生成情况取决于图像的内容,对于只有一个小目标的图像,大部分区域在搜索前期就被修剪,只留下附近的几个区域。而对于包含大目标的图像,本文算法将会自适应的退回到大anchor的现有方法,下图为本文算法与RPN网络的对比:
给定一个输入的anchor,AZNet会输出一个标量缩放指示器,该指示器用于决定是否进行进一步缩放(划分)该区域和一组带有置信度的包围框,或邻接预测。随后高置信度的邻接预测被用做region proposal。
算法设计
自适应搜索
论文的目标检测算法大体分为两个步骤
1、使用AZNet自适应搜索生成一组与类别无关的region proposal(见算法1)
2、使用目标检测器评估第一步中的每个region proposal,本文中使用的是fast RCNN
本文重点改进的是第一步,作者考虑了一种递归搜索的策略,从整个图像开始,对搜索过程中的所有区域,利用算法提取该区域的特征,计算缩放指标和邻接预测,如果缩放指示器高于阈值,则表明当前区域可能含有小目标,因此为了检测这些嵌入的小目标,将当前区域划分为子区域,如图二所示,然后每个子区域以其父区域相同的方式进行递归处理,直到其面积或者缩放指示器小到一定程度,图1说明了这个过程。
缩放模块设计
只有当存在至少一个对象,目标的大部分都在此区域内,并且目标的大小与该区域比足够小的时候,缩放指示器才应该对该区域进行放大。同理,当一个目标比当前区域大时,就应该处理他的父区域。但是在这种情况下,进一步划分区域不仅浪费计算资源,而且在region proposal中引入假阳性,下图展示了缩放指示器常见的情况和期望的情况:
绿色方框是目标,红色框是region proposal,左图:目标很小,但是目标的大部分在region proposal外,所以不需要放大;中间图:目标大部分在内部,但是目标的大小相对于该区域是很大的,所以不需要缩放;右图:有一个小物体完全在区域内,在这种情况下,region的进一步划分大大增加了发现该目标的机会。
邻接预测的作用是通过提供紧密的包围框来检测一个或者多个与anchor充分重叠的目标。邻接预测的设计应该明确的考了区域内的物体的几何形状,这样训练才具有一致性。因此,我们计划利用一组子anchor进行预测,如图4,注意我们还将anchor本身作为一个额外的prior
训练
作者训练了一个深度神经网络,如图所示:
注意:除了图4所示的子区域anchor外,作者还添加了region本身作为一个特殊的anchor,每个anchor总共做出11个邻接预测,对于卷积层,作者使用imageNet数据训练的VGG16模型,全链接层在region pooling层之上,该层允许共享卷积层的特征。
训练分为两步:
1、从图像中采集一组region,样本应该包含缩放指示器和邻接预测的正样本和反样本
2、将样本和标签用SGD进行训练
loss函数
如图5所示。AZNet有三个输出层,缩放指示器用一个sigmoid激活函数输出,为了训练缩放指示器,论文使用了交叉熵损失函数常用的二分类。对于邻接预测,边界框参数化为Fast Rcnn,不同于fast-rcnn,为了提供来自于任何区域的多个预测,置信度分数没有归一化到概率向量,相应的,作者使用平滑的L1 loss来作为边界框输出,使用元素交叉熵损失作为置信值输出。这三种损失相加形成一个多任务损失函数。