赵泊林,张晓龙
(1.武汉科技大学计算机科学与技术学院,湖北 武汉 430065;2.武汉科技大学大数据科学与研究院,湖北 武汉 430065)
目标检测是计算机数字图像处理和计算机视觉领域最热门的研究方向之一.其目的是在输入的图片或者视频中定位出所有出现的目标,并确定每个目标所属的类别.在智能化交通系统、智能监控系统、军事目标检测等方面具有广泛的应用价值.
传统的目标检测方法基于滑动窗口的区域选择策略[1],使用大小不同的窗口,在图像中以一定步长进行滑动,选择窗口中的区域作为感兴趣区域,然后对感兴趣区域使用针对目标特别设计的提取器提取图像中相关区域的特征,最后使用专门为目标类别预训练过的分类器对感兴趣区域进行分类和检测.但该方法没有针对性,时间复杂度高,窗口冗余,且人工设计的特征对于多样性的变化没有较强的鲁棒性.
基于此类方法,A.Krizhevsky等[2]提出了感兴趣区域region proposal策略,常用的region proposal策略有选择性搜索[3]和边界框回归[4].其原理是利用图像中的边缘、纹理以及颜色等特征信息预先找出目标在图中可能会出现的位置,再对所提取到的区域进行分类.使用该策略能降低算法的时间复杂度,同时在选取较少窗口的情况下仍能获得较高的召回率.但是由于这些策略依赖于大量的感兴趣区域,所以在计算上需要花费巨大的代价.为解决这个问题,R.Girshick等[5]将region proposal策略与卷积神经网络相结合,提出了R-CNN检测算法.该算法优化了检测窗口冗余的现象,提高了目标检测性能,但是这种基于深度学习的目标检测策略是通过遍历整张图像以寻找与目标特征相似的区域,在区域选择上缺少推理策略.A.Vezhnevets等[6]提出了主动目标检测策略,该策略在视觉任务中以顺序决策的形式,利用时间序列收集先前时刻信息,并通过此信息决策滑动窗口的位置,有效地减少冗余的窗口和检测的时间.J.C.Caicedo等[7]在此基础上提出基于主动目标的检测策略,该策略使用深度强化学习[8]中Deep Q-Network[9]算法训练智能体(agent),利用学习到的经验,改变检测区域位置和大小来选择目标.M.Bellver等[10]提出了一种基于深度强化学习的分层目标检测策略,该策略的主要原理是根据智能体收集到的信息,不断地将注意力集中在包含更多信息的感兴趣区域里,然后从这些感兴趣区域里选择最有可能包含目标的区域.相比与文献[7]的方法,该方法检测速度有了较大的提升,但是却降低了检测精度.其主要原因是在文献[10]方法中,使用了R.Girshick等[11]提出的RoIPooling层,该层的作用是根据感兴趣区域的位置坐标,在特征图中将相应区域池化为固定尺寸,以便进行后续的目标检测.RoIPooling层的优点是在训练时实现端到端的操作,提高目标检测的速度.但是RoIPooling层将感兴趣区域池化为固定尺寸的时候采用了最近邻插值法,造成了图像的像素偏差,从而降低了最后的检测精度.
针对上述问题,本文参考了MASK-RCNN[12]中的方法提出了感兴趣区域聚集层的改进策略.该方法使用双三次插值法代替了最近邻插值法,大大减少了图像像素的偏差.相比较RoIPooling层,感兴趣区域聚集层在不降低检测速度的同时提高了目标检测的精度.
使用牛津大学的VGG-16[13]网络模型对图像进行特征提取,获得特征图与感兴趣区域,然后进入RoIPooling层.
RoIPooling层的作用是从每个感兴趣区域中提取小的特征图.首先将一个为浮点数坐标的感兴趣区域采用最近邻插值法强制取整为特征图的离散粒度;然后将该取整后的感兴趣区域平均分割成7×7个矩阵单元,在分割时对每一个矩阵单元进行强制取整;最后将每个矩阵单元覆盖通过最大池化进行特征值聚合.强制取整是通过计算[X/32]在连续坐标X上进行的,其中32是特征图的缩放步长,通常的操作是把坐标值四舍五入.同样,强制取整也在划分为矩阵单元(7×7)时进行的.RoIPooling层的优点是在训练时可以实现端到端的操作,提高目标检测的速度.由于使用模型回归方法得到的感兴趣区域的坐标通常是浮点数,这些取整会导致感兴趣区域和提取的特征之间产生偏差.
图1 RoIPooling层
RoIPooling层具体操作如图1所示.图1中输入一张图片大小为960像素×960像素,图片上有一个700像素×700像素的感兴趣区域(如图中的黑色方框).经过VGG-16网络提取图片特征后,特征图缩放步长为32.因此,图片和感兴趣区域的大小都缩小为原来的1/32.图片边长为960像素缩小1/32后边长正好为整数30像素.但是感兴趣区域边长为700像素缩小为1/32后的边长为 21.87像素.于是RoIPooling层采用最近邻插值法直接将它强制取整为21像素.接下来需要把感兴趣区域内的特征进行池化并且平均分割成7×7个矩形区域.因为感兴趣区域的边长为21.87像素,平均分成7×7个矩形区域后每个边长为3.12像素.于是RoIPooling层再次使用最近邻插法把它强制取整到3像素.经过两次取整的操作,感兴趣区域的大小较缩放前已经出现了较明显的偏差.这个偏差会影响目标检测的精度.
为了解决RoIPooling层感兴趣区域精度偏差的问题,本文提出使用感兴趣区域聚集层改进.该方法去掉了RoIPooling层中强制取整的操作,使抽取的特征与输入完全对齐.具体步骤如下:
图2 双三次插值法
首先避免对感兴趣区域的边界或矩阵单元进行任何取整操作;然后使用双三次插值法计算每个感兴趣区域中矩阵单元中四个规则采样位置的输入特征的精确值;最后使用最大池化聚合结果.双三次插值法见图2.
本文采用点数为4时的固定位置.首先将每个矩阵单元平均分成4个小方块,使用线性插值法求出每个小方块中4个点的坐标,如图2中的黑点,然后在根据每个矩阵单元中共计4×4个点的坐标,再使用双三次插值法求出中点即缩放后的像素点,最后进行最大池化操作,得出固定尺寸的感兴趣区域.本文的双三次插值方法的基函数选取的是BiCubic函数,公式为
(1)
其中a取值为-0.5.矩阵单元中的中点即像素点(x,y),使用线性插值法取周围4个小方块中的4个坐标一共16个坐标作为邻域点(xi,yj),i,j的取值为0,1,2,3.然后代入公式(1)中,求出权重W(x),将权重求出后代入双三次插值法公式,最后求出缩放后的像素点(x,y).双三次插值法公式为
(2)
其中:(x,y)是缩放后的像素点坐标;xi,yj是像素点周围用线性插值法得到的16个邻域点;W(x-xi)和W(y-yj)是由公式(1)得到的权重,将16个邻域点代入公式(2),可以得到最后缩放的像素点(x,y).
1.2.1 马尔可夫决策
在每个时间步骤中,智能体每一个动作都会产生一个奖励.根据奖励决定图像需要在哪个区域进行移动,以便后续找到需要检测的目标.将问题转化为马尔可夫决策,该过程提供了一个框架,在结果部分不确定时对决策进行建模.
在建立目标检测模型前,首先定义参数化马尔可夫决策过程,包括状态、动作、奖励3个过程.
状态:状态由候选区域和记忆向量组成.一个记忆向量记录了为搜寻某个物体最近完成的4个动作,并将其用one-hot编码,因为有6种动作,因此记忆向量一共有24维.
动作:有两类可能的动作.第一类表示当前观察区域发生变化的移动动作,如图3所示.第一类动作又包含5种智能体可能会发出的动作;第二类动作表示找到对象并结束搜索的终端动作.
图3 智能体的6种动作
奖励:本文使用由Caicedo和Lazebnik提出的奖励函数[7].动作的奖励函数公式为
Rm(s,s′)=sign(IoU(b′,g)-IoU(b,g)).
(3)
IoU全称Intersection over Union即重叠率,公式为
(4)
最后结束动作的奖励函数公式为
(5)
给定一个状态s,对那些向b′区域移动的行动给予奖励,该区域与目标值g的重叠部分大于上一步考虑的b′区域.否则,这些行为将受到惩罚.对于触发动作,如果实际区域b与目标区域的重叠部分大于某个阈值τ,则奖励为正,否则为负.因此本文设置τ=0.5,阈值大于0.5即为检测成功,奖励系数η为3.
1.2.2 Deep Q-Network(DQN)算法
DQN是在Q-learning[8]的基础上改进而来.比传统的Q-learning有3点改进:设置经验回放,打破数据间的关联;利用卷积神经网络逼近值函数[14];设置目标网络来单独处理时间差分算法的TD偏差,进一步打破关联性.
本文中的智能体奖励取决于所选的动作a状态s,由函数Q(s,a)控制,该函数通过Q学习进行估计.基于Q(s,a),智能体将选择与最高奖励相关联的操作.Q-Learning使用Bellman方程为
Q(s,a)=r+γmaxaQ(s′,a′)
(6)
迭代更新动作选择策略,其中:s和a为当前状态相应地行动;r为即时奖励;maxaQ(s′,a′)为未来奖励;γ为折扣因子.
用一个经过强化学习训练的深度Q网络来代替Q函数,并使用贪婪策略[15]训练,该策略从ε=1开始,然后按0.1的步骤减少,直到ε=0.1.起初采用随机的动作,之后在每个epoch中,智能体更依赖于学到的策略来行动,为了帮助智能体学习,每次强制当前检测区域与图片目标区域的比值大于0.5,通过这种方法,可以加速训练.智能体总是在做探索,所以不会陷入局部的最低限度.
在DQN中为了解决数据间的相关性,设置了经验回放池,在学习过程中,智能体将数据存储到一个数据库中,再利用均匀随机采样的方法从数据库中抽取数据,设置的数据库大小为1 000,每次抽取的数据量为100.此外根据马尔可夫策略,平衡当前与未来的奖励,折扣因子γ设置为0.9,模型见图4.
图4 模型结构
本文在感兴趣区域聚集层后面加入了一个判断策略,如果该图像中有需要检测的物体时,会先判断需要检测目标区域是否和图像重合,若重合直接输出该图片,则表示检测完成,不再需要通过检测模型进行检测.使用学习率为1×10-6的Adam优化器训练DQN网络,该网络的输入是区域向量和记忆向量,输出6个可能的动作值,该动作值的具体操作为左上、右上、左下、右下、中心、结束.DQN网络由3个完全连接层组成,每层由1 024个神经元组成.前两个全连接层的后面使用relu激活函数,最后一层的全连接层使用linear激活函数,三层全连接层都使用dropout方法进行训练.
本文使用正态分布对DQN的权重初始化,并对每个模型进行了30个epoch的训练,基于keras2.1.6框架,CUDNN V7.0,CUDA V9.0,单块Tesla V100-SXM2GPU的环境用于训练模型.本文使用了Pascal VOC2012[16]数据集,数据集中包含了2007—2012年的数据,本文对飞机、鸟、牛、公交车、猫、自行车等6个类进行训练和测试.每个类训练图片为11 540 张,测试图片为4 952张.
实验结果见图5,红色框表示目标区域,蓝色框为智能体最后的动作区域.智能体不断与环境进行交互获取经验从而逐渐确定目标所在的位置.图5(a)的飞机和图5(b)的鸟,因为需要检测的目标比较小,智能体需要更多的步数经验才能检测到目标.图5(c)中的牛,由于需要检测的目标较大,智能体仅需要3步的经验就可以检测出牛目标所在的位置.
(a)飞机
(b)鸟
2.3.1 重叠率
重叠率(Intersection over Union)英文缩写IoU值,指的是检测模型最后预测出来的框与原来图片中标记的框的重合程度.计算方法即检测结果Detection Result与目标真实值Ground Truth 的交集比上它们的并集.在目标检测中,若IoU>0.5为对一个物体检测成功.
2.3.2 精准率和召回率
本文对比的是传统的强化学习模型[7].精准率指的是在识别出来的图片中TP所占的比率.TP:正确识别的正样本,同时IoU>0.5,TP+FP:检测模型输出的图片总数.召回率指的是测试集中所有正样本样例中,被正确识别为正样本的比例.TP+FN:测试集中需要检测图片的总数.本文的阈值设置为0.1~1.5之间,步长为0.1,置信度选取为最后智能体动作IoU大于0.5的6个动作值.基于Pascal VOC2012数据集精准率-召回率曲线如图6所示.精准率(P)和召回率(R)公式为:
(6)
(7)
图6中虚线为本文的模型,实线为传统的强化学习模型.由图6可以看出,虚线模型和实线模型在统一召回率下,虚线模型的精准率更高,随着召回率的增加,虚线模型比实线模型的精准率整体都高,且达到峰值后下降速率减缓,下降的越缓说明模型越稳定,虚线模型和实线模型相比与坐标轴围成的面积更大,围成的面积越大模型的检测效果越好,所以虚线模型效果更好.其中图6(a)—(c)和(f)中虚线模型围成的面积最大,其主要原因是感兴趣区域聚集层将感兴趣区域池化为固定尺寸时采用了双三次插值法,保留了感兴趣区域中坐标为浮点数时像素点上的数值,对小目标的处理比起RoIPooling层精度更高,因此提升较为明显.
(a)飞机
(b)鸟
(c)牛
(d)公交车
(e)猫
(f)自行车
2.3.3 步数与目标数
图7 步数与目标数的关系
一个优秀的智能体会在尽可能少的步数中检测出目标区域,本文只统计IoU大于0.5的目标区域,智能体的步数为10,当0步就是直接输出原始图与目标区域重合的图片,此时属于分类问题.步数与目标数的关系如图7.
左侧柱形是本文模型,右侧阴影柱形是传统强化学习模型[7].由图7可以看出左侧柱形模型在前4步就可以检测出绝大部分目标区域,在同样的步数下比传统模型检测的目标数更多,检测效率更高.而右侧阴影柱形模型需要更多的步数才能检测出目标区域,检测目标数少,检测效率较低.
2.3.4 平均精度与Mean Average Precision(MAP)
表1 基于Pascal VOC2007测试集中AP的测试结果
本文方法与传统常见的目标检测方法Regionlets[17]、DQN[7]、RCNN[5],进行了比较.由表1可以看出:本文使用感兴趣区域聚集层的强化学习方法要整体上要优于DQN,其中飞机、鸟、牛,这些类中含有小目标较多的图片提升明显,分别提升了15.7%,20.2%,19.7%.但是相对于测试集中小目标数量较少的图片提升率就不是很高,例如:公交车、猫、自行车的提升率只有10.8%和9.9%,11.5%.与RCNN方法相比,飞机、鸟、公交车、猫、牛、自行车等类分别提升了7%,8.6%,4.7%,5.1%,1.6%,3.7%.整体上有一定优势.
基于Pascal VOC2007测试集中MAP的测试结果见表2.它是衡量一个检测器好坏的重要指标.本文方法最后的MAP达到了66.1%,相比较与传统的DQN方法,提升效果十分明显,提升了16.8%,比RCNN的方法提升了6.9%,也有一定优势.
表2 基于Pascal VOC2007测试集中MAP的测试结果
本文针对深度强化学习在目标检测领域进行了研究,提出了一种基于感兴趣区域聚集层的改进策略,改进传统深度强化学习中使用RoIPooling层将感兴趣区域池化为固定尺寸时造成的像素偏差导致检测精度下降的问题.感兴趣区域聚集层策略的核心思想是使用双三次插值法代替最近邻插法,保持了感兴趣区域中坐标为浮点数时像素点上的数值.实验结果表明,在Pascal VOC2012训练集和Pascal VOC2007测试集上,本文的方法可以在不同种类的目标对象、不同大小的目标、不同阈值的IoU的实验条件下提高目标检测的精度,尤其是对图像中含有较多小目标时提升更为明显.智能体可以在执行较少的动作下,取得更多符合条件的感兴趣区域,提高了智能体的检测效率.并且在精准率召回率曲线上优于传统的深度强化学习方法,在平均精度上本文的方法比已有的方法具更好的检测性能.