多阶段优化的小目标聚焦检测

2020-03-19 04:39周立旺潘天翔杨泽曦
图学学报 2020年1期
关键词:细粒度冰柜精度

周立旺, 潘天翔, 杨泽曦, 王 斌

(1. 清华大学软件学院,北京 100084;2. 图灵通诺科技有限公司,北京 100020)

在深度学习逐渐普及的今天,目标检测作为许多深度学习任务的先行任务有着重要的意义。目前主流的深度学习方法主要有:双阶段的目标检测和单阶段的目标检测。RCNN系列,包括R-CNN[1],Fast R-CNN[2],Faster R-CNN[3]和 Mask R-CNN[4],是双阶段目标检测方法的代表,这类方法通过一个候选框提取网络(region proposal network,RPN)提取出图像中可能存在目标的感兴趣区域(region of interest,ROI),然后对这些区域进行分类,判断是否存在目标以及目标的类别,同时对区域的候选框(bounding box)做更精细的回归。由于RPN阶段会给出成百上千的ROI,而分类及回归阶段要逐一对其进行处理,所以双阶段目标检测方法相对来说速度较慢;而以YOLO[5],YOLOv2[6](YOLO9000),YOLOv3[7]为代表的单阶段方法就偏向于追求检测速度的极致,这类方法的通常做法是去掉 RPN模块,不采用提出许多候选框然后逐一分类的做法,而直接对包围目标的矩形框做回归,这样做的速度虽然非常快,但精度同时也会损失很多,因为正负候选框的比例不均匀。

无人冰柜是目前零售产业中人工智能的一项重要应用场景,对于减少人力资源投入、普及智能化终端有着重要意义。在这个场景中,通过在传统冰柜内添加摄像头及 GPU服务器等设备,使其可以完成目标检测、物体识别、目标追踪等一系列的任务。在实际应用中,所选的深度学习方法首要考虑的是速度上要达到实时性,另外一方面出于成本控制的考虑,GPU的性能及显存等参数也比学术界常用的设备要差,所以在目标检测任务上倾向于选择单阶段的检测模型,如YOLO;同时由于摄像头获取的图像分辨率较高(W×H),直接作为输入会占用较大显存,所以在输入检测网络前会先进行下采样操作到较低的分辨率(w×h)以提高检测速度。此时一个很重要的挑战是小物体的目标检测,因为使用单阶段检测模型以及对输入的下采样操作都造成小目标及整体精度很大的下降。

本文提出了一种coarse-to-fine的由粗到精的2阶段检测结构FocusNet,用来解决上述提出的单阶段模型小目标检测精度不高的问题。①粗粒度检测阶段,在原始图像中检测出一个最可能包含待检测目标的区域ROI (w×h);②细粒度检测阶段,以原始图像中截取第一阶段识别出的ROI作为输入,检测出每个目标的精细位置。第一阶段使用的是浅层的全卷积网络,而第二阶段使用的是单阶段检测的YOLOv2模型,并利用轻量化模型作为骨干网络加速计算,整体网络复杂度相对于YOLOv2单阶段检测模型没有显著提升。最终在图灵通诺公司提供的无人冰柜数据集上整体检测平均准确率提升了3.5%,而小目标检测平均准确率提升了8.3%。

本文的主要贡献有2点:①提出了一种双阶段优化的检测算法,在不增加太多计算复杂度的情况下,显著提升了无人冰柜数据上的目标检测精度及小目标检测精度。②提出了针对小目标检测的新的损失函数,提高了在目标检测的通用数据集上的精度。

1 相关工作

本文工作主要包含目标检测及针对小目标检测的研究。

传统的目标检测一般是基于滑窗操作,从滑窗中的区域提取一些经典的人工特征如SIFT和HOG,然后用SVM等分类器对这些区域进行分类,一般的应用场景是行人检测和一般的目标检测。DPM[8]是此类算法的经典代表,连续赢得了 2007–2009年的PASCAL VOC[9]检测冠军。

目前主流的成熟目标检测的算法都是基于深度学习的框架,主要可以分为双阶段和单阶段检测2种。双阶段的检测框架主要基于R-CNN网络,而后该结构逐步在 SPP-Net[10],Fast R-CNN,Faster R-CNN和Mask R-CNN中得到了完善,基本的思路是利用区域提取网络 RPN和卷积网络的组合取代了传统算法中的滑窗操作及人工特征,实现了端到端的检测,同时避免了人工特征的局限性,使速度和精度均有很大提高。

单阶段的目标检测方法是去掉候选框的提取部分,在主干网络中直接回归目标框。OverFeat[11]算法是最早的端到端检测模型,首次将分类、检测和定位3个问题一起解决。目前最经典的单阶段检测方法代表是YOLO系列,由于不需要对每个候选框进行分类及回归操作,YOLO的速度可以达到45FPS。后续的YOLO9000、YOLOv3逐步引入了经验框机制(anchor box)和多尺度特征的设计,在维持了高速度的特性上,进一步提升了检测精度。

SSD[12]也是重要的单阶段目标检测方法,将YOLO的回归思想与Faster R-CNN的anchor box机制进行了结合,这一点也启发了后来的YOLOv2。DSSD[13]是SSD的改进网络,SSD中将多个卷积层输入到预测中进行回归和分类,而DSSD将这些特征输入了反卷积层,用得到的特征图金字塔进行多尺度的检测,提升了SSD的小目标检测能力。

小目标检测在一般的目标检测中一直是一个较难的问题,由于小目标本身所占像素少,经过卷积网络中一些下采样操作感受野会变得更小而特征更不明显,造成相比大目标检测率低的问题。针对小目标检测的思路主要有3种:①针对数据,在图像预处理阶段通过数据增强、图像超分辨率等操作增加小目标的比例和尺寸,KISANTAL等[14]工作属于这种做法,其在数据增强阶段通过人工复制小物体并在原图中随机粘贴多份增加了小目标的数量;②coarse-to-fine的级联方法,用后续的网络回归粗检测网络提出的框以获得更精准的定位,即Faster R-CNN的候选框提出和精细回归的做法;③多尺度融合方法,即结合浅层网络的精细特征和高层网络的语义特征,典型的代表是FPN[15]。之前的许多目标检测算法都只用了高层的语义特征做预测,FPN通过上采样的方式融合了高层与浅层特征,并且在每层独立进行预测。不过多尺度融合以及双阶段的检测方法由于计算较多速度较慢,不适用于无人冰柜场景。

2 针对无人冰柜数据的目标检测算法

现有的针对无人冰柜数据的目标检测算法大都是基于YOLO,SSD这类单阶段检测模型,同时结合下采样从而提高模型运算速度。这一模型的主干网络为包含19个卷积层的全卷积网络Darknet-19,未引入全连接层(fully connected layer),所以网络实际运行时速度很快。但在该框架的训练测试中,原始图像(W×H)会先缩小到(w×h)的尺寸,然后在主干网络中经过5个步幅(stride)为2的卷积下采样32倍。以W=2.5w为例,原始图像中80像素长度的物体在最终的特征图中会压缩到 1个像素内,小于80像素边长的物体的特征可能会完全丢失,造成精度明显的损失。并将该模型作为本文的基线标准。

本文算法对上述模型进行改进,提出了一种coarse-to-fine由粗到精的双阶段检测模型。无人冰柜的数据相比通用检测数据集有以下的特点:①背景单一,由于是固定场景的固定摄像头,所以采集到的图像背景差异不大;②多数图像大部分区域是背景,目标虽然会分布在图像的任意位置,但是在大多数图像中顾客只拿取了一个或少数几个目标商品,而这些目标商品往往只存在一个小范围中,如图1所示。

针对这一特性,本文的思路是在第一个粗粒度检测阶段在原始图像I(W×H)中检测出最可能包含目标商品的一个潜在区域IROI(w×h),将这个区域从原图中截取出来,然后在第二个细粒度检测阶段再用原来尺度(w×h)的检测网络对目标的坐标进行精细的回归预测。本文的核心思想是利用无人冰柜数据的特点,用增加一个快速检测模块的方式,换取第二阶段相比原来增加了 525%的特征感受野(W=2.5w),从而显著提高了目标检测特别是小目标检测的精度。下面介绍两阶段的检测网络和相关算法,如图2所示。

图1 无人冰柜图像样例

图2 整体算法流程图

2.1 粗粒度检测网络

为了满足无人冰柜场景快速计算的需求,不在粗粒度检测网络的部分增加太多计算复杂度,本文在该阶段选择了轻量化的模型,即选择了Mobilenetv2[16]的前10个倒置残差块作为模型。

Mobilenetv2是谷歌提出的面向移动平台的轻量化网络结构,其特点是使用可分解卷积(separable convolution)替代普通卷积降低了计算量,同时借鉴了ResNet[17]中残差连接的设计提高了精度。

网络结构见表 1,表中的 bottleneck即代表倒置残差块,重复数代表同样的bottleneck重复相连接的次数。

该阶段网络的输入为原图缩放到(w×h)的尺寸的图像Iresized,输出为经过 4次卷积中下采样的特征图(Wf×Hf),而特征图通过一个sigmoid激活函数映射到[0,1]内,得到第一阶段的输出热力图Hpredict(Wf×Hf),然后通过2.2节中的后处理算法,得到目标商品的潜在区域IROI。该阶段的ground truth是利

用目标的标注框生成的[0,1]热力图HGT(Wf×Hf),即有目标的区域标注为 1,反之为 0。此外,借鉴CornerNet[18]中reducing penalty的设计,在目标的边界区域不直接取 0,而以边界点为中心添加一个二维的高斯分布,得到一个更平滑的热力图H′GT。粗粒度检测网络使用L2距离作为评价标准,损失函数为

表1 粗粒度检测网络结构

2.2 粗粒度检测后处理

通过粗粒度检测网络得到热力图Hpredict后,需要利用其计算出一个在原图中的裁剪区域 ROI(w×h)。但实际情况中并不是所有目标商品都只分布在一个较小区域,考虑到商品离摄像头远近的不同和商品本身的大小差异以及顾客一手抓多个的情况,有相当一部分图片中ROI (w×h)并未框住所有目标,直接粗暴的对所有图进行裁剪会反而导致精度的下降,第3节中表3的实验证明了这一点。所以本文的算法将大和小目标图片的处理进行了区分:对于大目标图片而言,直接将原图缩小到(w×h)的尺寸进行第二阶段的细粒度检测,因为细粒度网络对大目标的检测是相对准确的,所以不会造成精度的损失;而对于小目标图片而言,则在热力图中找到一个响应最大的区域并映射到原图中的对应区域(x,y,w,h),截取该区域作为细粒度检测的输入ROI。该区域通过遍历热力图搜索得到

此处wf和hf是原图中(w×h)缩小2.5倍再下采样 16 倍得到的(wf×hf)。

大、小目标图片的划分是用热力图中响应值大小进行分类的。后处理算法的步骤如下:

输入:热力图预测值Hpredict。

输出:裁剪区域(xcrop,ycrop,wcrop,hcrop)。

步骤1.读入热力图,对全图响应值求平均值,判断是否大于阈值;

步骤2.若大于阈值,则判断为大目标图片;

步骤3.输出原图(0,0,W,H);

步骤4.若小于阈值,则判断为小目标图片;

步骤 5.在热力图中搜索子区域(xf,yf,wf,hf),使得子区域响应值之和最大;

步骤6.将最大响应值子区域(xf,yf,wf,hf)放大对应到原图中的区域(x,y,w,h);

步骤 7.输出(x,y,w,h)。

2.3 细粒度检测网络

细粒度检测网络使用的是基线模型使用的检测网络:轻量化的主干网络,与YOLOv2的回归检测框架。

细粒度检测网络的主干部分由一系列bottleneck组成,是全卷积的网络设计,因此网络的计算效率很高。而检测部分使用了YOLOv2除主干网络 Darknet-19之外的回归检测部分。对于YOLOv1直接对目标框的(xp,yp,wp,hp)值做回归预测造成的定位不准确的问题,YOLOv2引入了Faster R-CNN中的经验框(anchor box)机制。经验框机制是在训练集的标注框中通过聚类找出最具代表性的几个(YOLOv2中是5个)不同大小的框,使得这几个经验框与训练集中所有的标注框的IOU (intersection over union)足够大。而YOLOv2预测的目标框大小是相对这 5个经验框的相对大小,而不是绝对大小;且目标框的位置也是预测的相对偏移值,所以提高了检测精度,也使得模型训练更稳定。

细粒度检测网络相比基线模型的改变主要在于输入。基线模型的输入为原图(W×H)缩小到(w×h)分辨率再输入检测网络。而细粒度检测网络是从原图(W×H)中截取(w×h)大小的区域作为输入,相当于细粒度检测网络中所有目标的尺度都是基线模型中目标的6.25倍(W=2.5w),从而显著提高了目标检测的精度。

这部分的网络结构见表2。

2.4 Anchor box加权损失函数

本文对YOLOv2的检测框架也进行了改进。主要针对 小目标像素少导致损失函数中所占比重小,造成检测精度低这一点进行了改进。

在YOLOv2的预测阶段,会输出一张(wr×hr×5)的特征图,即在每个位置会预测5个目标框对应5个预先计算的anchor boxes,大的anchor box会预测出较大的目标框,而小的anchor box会预测出小的目标框。YOLOv2同时会预测大小为(wr×hr×5)的置信度图Confpredict,对应之前(wr×hr×5)的预测框分别存在目标的概率,而 ground truth的置信度图ConfGT由标注框给出:存在目标的位置时,在与目标标注框IOU最大的anchor box处取值为1,其余位置取值为0,所以原始YOLOv2模型中这部分的损失函数为

表2 细粒度检测网络结构

在这个损失函数中,5种不同的 anchor boxes对应的权重是相同的,即大、小anchor box对应的大、小目标的权重是相同的。但考虑到大、小目标所占的空间像素的不同,在损失求和时大目标的实际计算权重是远大于小目标的;另外一方面,同样大小的位置预测偏差会给小目标带来更明显的精度损失,这2点导致了网络对小目标检测的精度下降。针对这一点,本文设计了一种针对anchor box的加权损失函数,即在计算损失函数时,赋予小anchor box对应的预测框更大的权重,从而促使检测网络对小目标的检测进一步优化。改进后的置信度损失函数为

在本文的实验中,= [ 2.00,1.75,1.50,1.25,1.00],分别对应从小到大的anchor boxes。

2.5 算法流程

本文整体的算法在测试阶段的步骤如下:

输入:原始图像I。

输出:目标检测框(xp,yp,wp,hp)。

步骤1.读入图像,缩小到(w×h)分辨率,输入粗粒度检测网络,得到热力图预测Hpredict;

步骤 2.将热力图Hpredict输入粗粒度检测后处理算法,得到原图区域(xcrop,ycrop,wcrop,hcrop);

步骤 3.将(xcrop,ycrop,wcrop,hcrop)缩放到(w×h)分辨率,输入细粒度检测网络,得到目标预测框(xp,yp,wp,hp);

步骤 4.输出检测框(xp,yp,wp,hp)。

3 实验及分析

本文使用的数据集包括:一个无人冰柜数据集以及通用目标检测数据集 PASCAL VOC[9]和COCO14[19]。在实验评价中使用了COCO的评价指标,包含 AP0.50∶0.95,AP0.50,AP0.75,APsmall,APmedium,APlarge等指标,全面综合地评价了模型在不同精准度要求、不同目标大小下的检测精度。

3.1 参数选择

所有模型均在 IMAGENET[20]上进行预训练。训练时,将batch-size设置为24。网络的学习率初始为0.000 2,在60个epoch后降为0.000 1,在90个epoch后降为0.000 01。测试时,设检测置信度阈值为0.25。在粗粒度检测网络后处理算法中的阈值取 0.1,而加权 anchor box损失函数中的γ■⇀取值为[2,1.75,1.5,1.25,1]。

3.2 无人冰柜数据集上的实验

为了验证本文方法的有效性,在图灵通诺公司从实际部署的无人冰柜数据集上采集并标注的36 090张图片集上进行了实验。每张图片包含一个或多个目标商品,商品种类包含3类体积较大的沙拉和2类体积较小的寿司。并将整个数据集按9∶1随机分成了训练集和测试集,训练集包含32 481张图片而测试集包含3 609张图片。

在精准度和速度上详细对比了本文算法与基线模型以及与双阶段模型Faster R-CNN[3]和最新的单阶段模型 YOLOv3[7],FCOS[21]的效果。精准度的对比见表3。

其中,Faster R-CNN与Faster R-CNN+FPN[15]算法的主干网络使用的是ResNet-50;表中的(Ours)指的是本文算法不使用粗检测后处理以及加权anchor损失函数时的模型,而(Ours,+p)是指的使用了粗检测后处理的本文算法,(Ours,+p,w)指的是同时使用粗检测后处理和加权 anchor损失函数时的模型。从表中可以看出,本文的两阶段检测算法(Ours,+p)在基线模型的基础上大幅提高了精准度,COCO的主要指标APsmall提升了2.7%,小目标检测的指标APsmall更是提升了6.5%,其余各项指标也有不同程度的提升;而在使用了anchor box加权损失函数后,(Ours,+p,w)模型的精度进一步提高了,APsmall提高了8.3%,AP0.5:0.95提高了3.5%,接近了Faster R-CNN网络的精度,甚至在小目标精度指标上已经超过了Faster R-CNN,且接近了目前方法的精度上界。而相比最新的单检测框架YOLOv3与FCOS,虽然本文改进后模型与最新方法在检测精度上存在一点差距,但在后面模型参数量与运行速度的对比上,本文的模型依然具有极大的优势。当前框架精准度的上界是通过以下方法得到的:首先对原始图像以(w×h)分辨率进行了人工裁剪,并保证原图中的所有目标均完全包括在这个裁剪图中,然后用这个裁剪数据集训练基线模型。这个实验需假设在粗粒度检测阶段得到了完全正确的裁剪框,所以是目前算法准确度的上界。而实验结果显示经过改进的coarse-to-fine算法可以接近这个上界。另外,表中的不带粗粒度检测后处理的模型精度降低非常明显,只有小目标检测的精度及召回率有一定提升;而添加后处理算法,提升了小目标检测精度,由于对大目标图片不做裁剪操作,所以也保证了大目标的检测精度不受影响,从而提升了整体的检测精度。

表3 无人冰柜数据集实验结果

另外一方面,对比了本文的双阶段模型与基线模型以及 Faster R-CNN网络的效率,分别从参数量、实际运行速度方面进行了对比,见表4。

表4 几种方法的预测速度比较

可以看到,在大幅提升了基线模型的准确率的情况下,两阶段的由粗到精框架并没有显著提升计算复杂度,参数量只增加了0.6%,而实际运行时间比原来增加了 11%,依然可以保持实时的运行效果。而FocusNet与Faster R-CNN相比,参数量仅为后者的5%,运行速度是后者的4.2倍,而精度在表3中可以看到与Faster R-CNN接近。同时与单阶段检测模型的最新方法 FCOS、YOLOv3相比,FocusNet的参数量仅为FCOS的5%、YOLOv3的19%,而在运行速度上,FocusNet也是少有的在30 ms以内的实时检测方法。

3.3 VOC和COCO数据集的损失函数改进实验

在公开数据集上,也测试了带加权的 anchor box的损失函数的效果,其中PASCAL VOC包含22 136张图的训练集和 4 952张图的测试集,COCO14包含82 081张图的训练集和40 137张图的测试集。

结果见表5和表6。从表中可以看出,加权的anchor box损失函数在通用数据集上也能提升基线模型的目标检测能力。

表5 PASCAL VOC 数据集实验结果

表6 COCO14数据集实验结果

4 结 束 语

无人冰柜是人工智能落地到传统零售业中的一个重要实用场景,而其中的目标检测是许多后续工作的先行任务,具有重要的意义。如何设计高效而又准确的识别模型是一个具有实际意义、非常值得研究的课题。

本文在单阶段检测模型YOLOv2的基础上,针对无人冰柜场景的数据特点,提出了一种可维持高检测速度,也显著提升了模型对小目标检测能力的框架FocusNet;同时也在YOLOv2模型的基础上,提出了对损失函数的改进方法,并在无人冰柜数据集和通用数据集上均验证了其有效性。

虽然目前的框架极大地提高了之前模型的准确率,但依然存在一些不足。目前的网络结构由2部分组成,在网络的训练阶段,需要先训练粗粒度检测网络,得到粗粒度网络的输出后才能再对细粒度网络进行训练,没有形成端到端的一体结构;另外一方面,额外增加的粗粒度网络虽然计算复杂度不高,但仍会增加网络的计算量,导致网络的计算速度下降。如何设计端到端的网络,进一步加速计算、提高精度,是下一个阶段需要探索的目标。

猜你喜欢
细粒度冰柜精度
融合判别性与细粒度特征的抗遮挡红外目标跟踪算法
热连轧机组粗轧机精度控制
跟踪导练(五)
基于SVM多分类的超分辨图像细粒度分类方法
跟踪导练(五)
基于DSPIC33F微处理器的采集精度的提高
基于型号装备?角色的IETM访问控制研究
基于web粒度可配的编辑锁设计
冰柜盖上被子了
以工匠精神凸显“中国精度”