基于目标候选的USV 海上船艇检测
2019-10-31李小毛
陈 伟,杨 毅,李小毛,刘 远,张 鑫
(上海大学机电工程与自动化学院,上海200444)
无人水面艇(unmanned surface vehicle,USV)是一种新型的海上智能体,可以用来执行侦察、反潜、巡逻等军事任务,以及搜救、导航、水文地理勘察等民用任务.无人水面艇视觉系统的作用是代替人眼,对海上的目标以及障碍物进行检测、跟踪和测量,并进行场景和行为的理解[1].基于视觉的海上船艇检测是无人水面艇视觉系统最主要的任务之一,是实现无人水面艇对海上船艇进行识别和跟踪的基础,因此研究海上船艇的特征模型和目标检测方法,对无人水面艇的发展具有重要意义.
在过去的十几年里,目标检测一直是计算机视觉领域的研究热点,国内外许多学者在这方面进行了大量的研究,取得了一些令人瞩目的成果.Viola等[2]使用Haar-like特征,提出了AdaBoost算法框架,在人脸检测上取得了较好的成果;Dalal等[3]提出了将方向梯度直方图(histogram of oriented gradient,HOG)作为特征,利用支持向量机(support vector machine,SVM)训练分类器进行行人检测,在MIT(Massachusetts Institute of Technology)行人数据集上的检测效果不错.除此之外,目标检测的研究还聚焦在自然界中一般物体的检测.基于自然界中的大部分物体都具有运动能力,会产生非刚体形变的特性,Felzenszwalb等[4]提出了混合多尺度可变形部件模型(mixture of multiscale deformable part model,MMDPM),该模型基于HOG特征进行改进,对于目标的多视角问题,采用了多组件策略;而对于目标本身的形变问题,则采用了基于图结构(pictorial structure)的部件模型策略.然而,这些传统的目标检测算法有一个共同点,即均采用了“滑窗式”搜索策略.这种策略是通过将分类器在图像的每一个窗口位置上滑动遍历,来检测目标在图像中的位置,这里滑动窗口的数量和分类器的检测尺度是线性相关的.在单一尺度下,对每张图像分类器大概需要测试104~105个窗口;而在多尺度下,测试窗口的数量会以几个数量级增长.此外,现今的检测器还要求对目标的宽高比进行预测,那么测试窗口数量将会达到106~107个.显然,这种“穷尽式”的检测方法会生成很多冗余窗口,导致计算量大且非常耗时[5].因此,很多采用这种方法的目标检测系统,都会选择一些较简单的分类器,这些简单的分类器往往采用较弱的特征模型,通过得到较快的计算速度来弥补滑窗式搜索策略带来的弊端.但是,采用弱特征模型虽然提升了分类器的计算速度,却降低了检测率和检测精度.
针对上述问题,本工作提出了一种基于目标候选(object proposal)的检测算法.目标候选是一类方法的统称,最早的目标候选方法是由Alexe等[6]提出,并引出了目标性(objectness)的概念.目标性概念的提出是基于感知心理学和神经性学的发现[7].人类的视觉系统在识别目标前可以感知并定位到目标的位置,这个能力使得人类可以快速准确地识别目标,但是传统的滑窗式目标检测方法违背了这种人类视觉系统对图像的理解机制,故非常耗时.为了使计算机视觉也具备人类视觉系统的这种能力,目标性算法的原理是:在分类器对图像窗口进行检测前,先对所有窗口进行目标性评分.评分越高的窗口包含目标的可能性就越大,舍弃那些评分较低的窗口,只把那些评分较高的窗口输入到分类器中检测目标,这样评分较高的窗口就是检测算法的目标候选.不同的目标候选方法产生的窗口数量也不同,目前较为先进的方法是通过产生1 000~2 000个窗口就能达到96%以上的目标召回率(recall rate),与106~107个滑动窗口相比,检测速度可以达到几个数量级的提升.
近几年,国内外学者对目标候选算法的研究主要分为超像素合并(superpixel merging)、种子分割(seed segmentation)以及目标性评分(objectness scoring)这3类.Uijlings等[8]提出了基于超像素合并的selective search算法,该算法通过人工设计的特征和相似度函数合并超像素生成目标候选框,且不需要通过任何学习的方法获取参数;Carreira等[9]提出了基于种子分割的CPMC(constrained parametric min-cuts)算法,该算法随机初始化多个种子点,每个种子点生成一个前景/背景的分割,以此来获取目标候选框;Zitnick等[10]提出了基于目标性评分的边缘框(edge box)算法,该算法利用图像的边缘信息生成目标候选框,通过结构化森林边缘检测器生成边缘图,在边缘图上建立评分函数对窗口进行评分,最后选取评分较高的窗口作为最终的目标候选框.Edge box算法计算速度快,且生成的目标候选框定位精度高,可满足USV视觉检测系统的应用需求.
本工作基于边缘框算法进行改进,获取船艇的目标候选框.结合较强的HOG特征对船艇进行建模,利用机器学习的方法进行训练,得到了一个复杂的具有5 796维特征向量的分类器,用于海上船艇的检测.此外,本工作还基于USV在海天环境下的运行场景,结合海天线的特性,进一步提升算法的检测性能.本算法的概况如图1所示.
图1 本算法概况Fig.1 Overview of this algorithm
1 目标候选框获取
1.1 边缘图生成
给定一张原始图像(见图2(a),关注“上海大学学报自然科学版”微信公众号,使用菜单栏“小程序”扫描图片观看视频).首先,利用一个结构化的边缘检测器[11],获取图像中每个像素点的边缘响应;然后,将这些边缘响应组合在一起得到原始图像的边缘图.直接得到的边缘图相对比较紧密,通过执行一个简单的非极大值抑制(non-maximal suppression,NMS)获取边缘响应的局部最大值,从而得到一张相对稀疏的边缘图(见图2(b)).边缘图中每个像素p都有一个边缘值mp和一个边缘方向θp,其物理意义分别是边缘的梯度幅值以及梯度变化最大的方向.
1.2 边缘群组和相似度定义
算法的基本思想是:与轮廓重叠多的边界框(bounding box)完整包围目标的可能性比较小(如图2(c)中的绿色方框),而那些与轮廓重叠少的边界框更可能完整地包围目标(见图2(d)中的绿色方框).从边缘图来看,对于那些被直的轮廓所连接的边缘有比较高的相似度,而那些没有被连接或者被高曲率的轮廓所连接的边缘相似度就比较低.为了使相似度的计算效率更高,对边缘进行分组,得到一系列的边缘群组(edge group),然后只计算边缘群组之间的相似度.算法获取边缘群组的方法是通过不断地连结8连通的边缘点,直到边缘点两两之间的方向角度差值的总和大于一个阈值π/2.
给定边缘群组的集合si∈S,计算每对相邻边缘群组之间的相似度.对于边缘群组si和sj之间的相似度a(si,sj)的计算公式为
式中:θi和θj为2个边缘群组的平均方向;θij为其平均位置xi和xj之间的角度;γ值是用来控制方向对相似度的敏感性的,本算法中取γ=2.在算法具体实施过程中,为了提高计算效率,当2个边缘群组之间的距离大于2个像素时,其相似度被设置为0;此外,当2个边缘群组的相似度小于0.05时,其相似度也被设置为0.
图2 边缘框算法示意图Fig.2 Diagram of edge box algorithm
1.3 边界框评分
给定边缘群组的集合S,且计算得到其两两之间的相似度后,通过建立一个评分函数对候选边界框b评分.首先,计算边缘群组si中所有像素p的边缘值总和,记为mi;然后,选取边缘群组si中任意一个像素的位置,记为xi.
对于每一个边缘群组si,计算一个连续值wb(si)∈[0,1],用来衡量si是否完全包含在边界框b中.如果si完全包含在边界框b,则令wb(si)=1;如果si完全处于边界框b外,令wb(si)=0.定义Sb为与边界框b边界相重叠的边缘群组si的集合,对于所有的si∈Sb,令wb(si)=0;同理,如果b,则令wb(si)=0,这是因为在这种情况下,该边缘群组si的所有像素不是完全处于边界框b外,而是与边界框b相重叠.对于所有剩下的边缘群组siSb的计算公式为
式中:T为开始于t1∈Sb,结束于t|T|=si的有序路径;a(tj,tj+1)为边缘群组之间的相似度.如果不存在这样的路径,则令wb(si)=1.因此,式(2)的物理意义就是一条寻找相似度最高的路径.在具体实施算法过程中,因为成对的边缘群组相似度大部分都为0,所以该公式的计算效率很高.利用计算所得的wb(si),对边界框b进行评分:
式中,bw,bh分别为边界框的宽度和高度.式(3)的物理意义是根据边界框包围边缘的情况,对该边界框包含目标的可能性进行评分.由于更大的边界框会包含更多的边缘,故用一个κ值来抵消这个偏差,本算法取κ=1.5.
最后,我们发现那些处于边界框内部的边缘的重要性比那些处于边界框附近边缘的低.因此,对评分公式(3)进行改进,将边界框内部的边缘值从评分hb中减掉,改进后的评分公式为
式中,bin的宽度和高度分别为bw/2和bh/2.实验表明,使用评分公式获得的目标候选框比使用评分公式hb获得的目标候选框有更高的定位精度.
1.4 搜索策略
为了寻找到定位精度更高的目标候选框,需要设计搜索策略.衡量一个边界框定位精度的标准是IoU(intersection over union),它是将候选边界框和真值框(ground truth box)的交集除以它们之间的并集计算得到的值.IoU的值越高,候选边界框的定位精度就越高,也就越接近真值框.在理想的情况下IoU=1,此时候选边界框和真值框重合.根据国际上普遍使用的PASCAL准则,当IoU大于0.5时认定该候选边界框定位并检测到了目标.但是,通过分析USV视觉检测系统的应用场景可知,当目标候选框和真值框的IoU大于0.5时,目标检测算法提取目标候选框的HOG特征向量输入到分类器中,仍然被分类器判定为负样本的情况,这时目标就被漏检了.因此,为了尽量避免漏检情况的发生,本算法将提高IoU阈值.在算法具体实施过程中,本算法取IoU阈值δ=0.8,大于国际上的PASCAL准则(δ=0.5).
在搜索候选边界框时,首先以不同的位置、尺度、宽高比在边缘图上滑动窗口,步长大小由参数α决定,指定相邻边界框的IoU等于α.由于本算法取IoU阈值为δ=0.8,故根据实验表明,α=δ-0.05=0.75是一个比较理想的取值.
最后,将剩下的候选边界框根据评分大小进行排序,选取前1 000个评分较大的候选边界框作为最终目标候选框.本算法对这1 000个目标候选框提取HOG特征向量,输入到分类器中检测船艇在图像中的位置.
1.5 基于海天线进一步改进算法
由于USV主要的工作场景是在海面上,因此USV视觉检测系统所采集的图像最基本的特征是图像包含海天线.如图3(a)所示,海天线将图像划分为3个区域:天空区域、海面区域和海天线区域[12].船艇在海上航行只会处于海面区域和海天线区域,而不会处于天空区域.基于这样一个特性,本工作进一步改进目标候选框生成算法,对1 000个评分较大的目标候选框再次进行筛选.剔除完全处于海天线区域上方的目标候选框(见图3(a)中的红色方框),而保留处于海天线下方以及与海天线相交的目标候选框(见图3(a)中的绿色方框).这样,就可以直观地感觉到,通过海天线预判能剔除将近一半的目标候选框.同理,只在剩下的目标候选框中提取HOG特征向量,输入到分类器对船艇目标进行检测.最终,基于海天线改进的船艇检测算法在检测速度以及检测性能上都得到了进一步的提升.
此外,本工作采用了一种简单的基于边缘图的海天线检测算法,来获取用于筛选目标候选框的海天线.由于在生成目标候选框时已经计算得到边缘图,故通过在边缘图上执行一个简单的Hough变化[13-14],就能得到海天线在图像中的位置信息(见图3(b)中蓝色线条).
图3 基于海天线改进算法示意图Fig.3 Diagram of improving algorithm based on sea-sky line
2 特征模型设计
HOG特征是由Dalal等[3]提出,最早被用于行人的检测,取得了较好的效果.如今,在计算机视觉和图像处理领域中,HOG特征已经成为目标检测最常用的特征描述子之一,其主要原理是:在一副图像中,局部目标的外表和形状能够被梯度或边缘的方向密度分布较好地描述.因此,HOG特征的本质是利用了梯度的统计信息,而梯度主要存在于边缘的地方,这一点和本工作基于边缘提取的目标候选框相契合.由于从边缘图中提取的目标候选框保留了图像中较多的边缘信息,因此本工作采用HOG特征作为船艇的特征描述子是合理的,实验结果也验证了这一观点.
本工作根据船艇的外形特点,对船艇进行特征建模,将特征模型的宽高比设计为3:1,特征窗口的大小设计为192×64(pixel).HOG特征的细胞单元格(cell)尺寸设计为8×8(pixel).每个细胞单元格的直方图通道数目(bin)设置为9个.
由于局部光照的变化以及前景/背景对比度的变化会使梯度强度发生较大的变化,因此需要对梯度强度做归一化处理.HOG特征在一个块(block)中进行梯度强度的归一化处理,这里根据海面上的光照变化的情况,设计块的大小为2×2(cell),即16×16(pixel);块移动的步长设计为8×8(pixel).通过这样对船艇进行建模,船艇的HOG特征描述子的特征维数为
3 分类器训练
本工作采用线性核的支持向量机训练分类器,其训练步骤如图4所示.初始的正样本是由船艇的所有真值框组成,总数为2 000个.然后,选择与真值框重叠面积占20%~50%的目标候选框作为最初的负样本.为了避免选取近似的重复的负样本,将重叠面积超过70%的2个负样本,选择其中一个丢弃.最终,从所有负样本中随机选取10 000个作为SVM训练的负样本.直观地来看,这样的负样本筛选方法对分类器来说是比较困难的,因为这些负样本有一部分和正样本很接近,这也意味着更接近决策边界.但是,通过选择这样的负样本进行训练,得到的分类器就具有更好的初始分类能力.事实上,通过实验也验证了这一观点.
在得到初始分类器后,为了提升分类器的性能,本工作还设计了一个再训练的过程.将初始分类器在负样本原图(不包含船艇目标)上进行船艇目标的检测,这样检测到的所有矩形框很明显都不是目标,属于误报(false positives).这些误报的矩形框对于分类器来说,就是一个难例(hard example).把这些难例保存为图像,加入到初始的负样本集合中,重新进行分类器的训练.这样,通过再训练得到的分类器就具有更好的分类能力,也就是具有更好的检测船艇目标的能力.再训练的过程是可以迭代进行的,直到分类器的性能没有明显提升为止.这样的训练方法称为自举法(bootstrap).本工作通过进行初始负样本选择策略,经过2次迭代训练后,分类器的性能就达到了峰值.
图4 分类器训练步骤Fig.4 Training procedure of classifier
4 实验结果与分析
实验用到的视频序列是由USV视觉系统的机载摄像头采集所得,视频记录了船艇目标在不同环境下的运动情况.摄像头采集所得的图像分辨率为1920×1080(pixel),将其降采样为640×480(pixel)进行处理.本工作使用的实验平台为VS2013+OpenCV2.4.9,系统环境为Windows10,CPU频率为3.1 GHz,内存为4 GB.
4.1 算法性能验证实验
本实验将提出的目标候选检测算法和传统的滑窗式检测算法在相同条件下进行了比较,验证算法的有效性和优越性.对于滑窗式检测算法,本工作采用相同的HOG特征模型,用相同的机器学习方法(如SVM)对其进行分类器的训练.在保证实验条件相同后,使用2种不同的船艇检测算法,在相同的视频图像中对船艇目标进行检测.此外,为了研究在不同尺度及光照条件下2种算法的检测性能,实验使用了多种在不同环境下拍摄的视频图像,结果如图5所示.
在图5中,蓝色方框表示目标船艇的真值框,绿色方框表示算法检测到的目标框.左列图像是本算法的检测结果,右列图像是传统滑窗式算法的检测结果.分析实验结果,对比图5(c),(d)可以发现,本算法检测的目标框与真值框具有更大的重叠面积,表明本算法具有更高的检测精度,这是因为本算法是基于图像边缘信息提取的目标候选框,所以更加贴近船艇的边缘.此外,从图中还可以发现传统滑窗式算法检测到的一些目标框并不包含船艇,这些目标框属于误报(见图5(b),(f),(h)).相对地,在相同的条件下本算法生成的目标框误报较少.最后,在不同的尺度和光照条件下对比图5(a),(c),(e),(g)可以发现,本算法对尺度变化和光照变化都具有较强的鲁棒性.
然后,本工作在1 435张包含船艇的图像上分别用2种算法对船艇目标进行检测.检测规定,如果目标检测框和真值框之间的IoU值大于0.7,就视该目标框检测到了目标,并认为这是一个正确的检测.表1列出了2种算法在一些检测指标上的对比.分析表1数据可以发现,本算法的检测率更高,误报更少,这样的检测率和误报也满足USV视觉检测系统的应用场景.
图5 不同尺度及光照条件下2种算法的检测结果Fig.5 Detection results of two algorithms under different scales and illumination conditions
表1 2种算法检测性能对比Table 1 Comparing the detection performance of two algorithms
最后,通过实验验证了本算法在检测速度上的优势.因为算法的检测时间与被检测图像的分辨率有关,所以图像的分辨率越大,所包含的像素点就越多,算法的检测时间也就越长.基于这点考虑,本工作分别在几种常用的图像分辨率上进行对比实验,结果如表2所示.分析表2数据可以发现,在所有图像分辨率下进行船艇检测,本算法检测船艇所需的时间更少.在图像分辨率为640×480(pixel)时,本算法检测速度是滑窗式算法的2.3倍;在图像分辨率为1 280×720(pixel)时,本算法检测速度是滑窗式算法的3.3倍;在图像分辨率为1 920×1 080(pixel)时,本算法检测速度是滑窗式算法的9.0倍.可见,图像分辨率越大,本算法的速度优势越明显.由于现在对图像的清晰度要求越来越高,生产的摄像头分辨率也越来越大,很多摄像头都至少达到了1 080 P,甚至2 K级别,因此本算法更具有实际意义.
表2 在不同图像分辨率下2种算法检测时间对比Table 2 Comparing the detection time of two algorithms in different image resolutions ms
4.2 算法性能提升实验
本工作通过加入海天线预判进一步改进算法,通过实验对比2个版本算法的检测性能,验证改进算法的有效性.需要注意的是,本工作在4.1节的实验结果均是未加入海天线预判所得的算法结果.与4.1节的实验方案类似,本实验也在1 435张包含船艇的图像上分别用2个版本的算法对船艇目标进行检测.仍然规定目标框和真值框之间的IoU值大于0.7时,是一个正确的检测.表3列出了2个版本算法在一些检测指标上的对比.分析表3的数据可以发现,2个版本的算法在检测率上是相同的,这是因为加入海天线预判并不会剔除包含船艇的目标候选框.另外,加入海天线预判的算法误报更少,因为加入海天线预判剔除了算法在天空区域的误报.
表3 2个版本算法检测性能对比Table 3 Comparing the detection performance of two versions of the algorithms
本工作还通过实验验证了加入海天线预判的算法具有更快的检测速度.与4.1节的实验方案类似,本实验还是在几种常用的图像分辨率上进行检测速度的对比,结果如表4所示.分析表4数据可以发现,在所有图像分辨率下进行船艇检测,加入海天线预判的算法所需时间更少.在图像分辨率为640×480(pixel)时,加入海天线预判的算法检测速度提升到原来的1.5倍;在图像分辨率为1 280×720(pixel)时,加入海天线预判的算法检测速度提升到原来的1.6倍;在图像分辨率为1 920×1 080(pixel)时,加入海天线预判的算法检测速度提升到原来的1.7倍.由于未加入海天线预判算法的检测速度已经相当快,因此检测速度的提升倍数并不是很明显(相较于滑窗式检测算法提升的倍数).但是,对USV视觉检测系统来说,检测速度的提升终究是有意义的,因为检测速度越快,USV获取的船艇位置信息就越及时,对USV后续任务的执行都有积极的作用.
表4 在不同图像分辨率下2个版本算法检测时间对比Fig.4 Comparing the detection time of two versions of the algorithms in different image resolutions ms
4.3 算法在多目标、复杂背景以及恶劣海况条件下的性能实验
最后,本工作在多目标、恶劣海况以及复杂背景条件下对算法性能进行实验验证,该实验结果如图6所示.在图6中,蓝色方框表示目标船艇的真值框,绿色方框表示算法检测到的目标框,其中(a)为在多目标条件下算法的检测结果;(b)为在恶劣海况条件(4级海况)下算法的检测结果;(c),(d)为在复杂背景下算法的检测结果.从结果中可以发现,算法在多目标以及恶劣海况条件下仍具有较好的检测性能,但是在复杂背景下算法的检测性能并不好,时常会出现误报,因为算法将背景中的建筑物检测为船艇目标.根据大量的实验表明,本算法在复杂背景下的检测率并不高,但是由于USV在海上运行时处于复杂背景的情况较少,故并不影响算法的实用性.
图6 在不同条件下的算法性能Fig.6 Algorithm performances under different conditions
5 结束语
本工作提出了一种基于目标候选的USV海上船艇检测算法.该算法基于边缘框算法进行改进,提取图像的边缘信息,并建立目标性评分函数来获取目标候选框.在此基础上,本工作使用HOG特征作为特征描述子,对船艇目标进行特征建模,采用自举法迭代训练分类器,提升分类器性能.此外,本工作基于USV在海天环境下的运行场景,加入海天线的预判进一步改进算法,提升了对船艇的检测性能.实验结果表明,本算法能够快速、准确地检测船艇目标,并达到了较高的检测率,误报较少,对尺度以及光照条件的变化也具有较强的鲁棒性.当然,本算法也存在缺陷,如对正面船艇的检测率不高,这是因为HOG特征模型对视角变化的鲁棒性较差;此外,在复杂背景下本算法存在较多误报,检测率也有待提高.
本工作未来的研究主要集中在2个方向:①进一步提升算法的检测率,考虑采用更复杂的特征模型,如用词袋(bag of word,BOW)模型代替HOG特征模型对船艇进行建模;②进一步提升算法的检测速度,使算法检测速度能更加接近实时,这对USV视觉检测系统具有重大的意义.