邱博,刘翔,*,石蕴玉,尚岩峰
(1.上海工程技术大学 电子电气工程学院,上海 201620; 2.公安部第三研究所 物联网技术研发中心,上海 200031)
视频监控系统作为当前城市公共安全的基础设施,视频图像信息已成为支撑治安防控、维护社会稳定的重要手段。随着监控系统朝着智能化方向发展,视频检测手段更加成熟、完善,检测精度逐渐增高。行人与车辆作为公共安全监控过程中重要的检测目标,精准性和实时性变得愈发重要。然而现实中复杂场景下,尤其在车辆堵塞的地区、行人汇集地域,行人与车辆检测的精度、速度受到了极大的影响。合理均衡模型处理速度、检测精度,成为视频监控系统中亟待解决的问题。
目前,针对目标检测算法主要有2个研究方向。一是利用传统的方法提取特征并进行检测,使用 的 特 征 包 括HOG、SURF[1]、SIFT[2]、Haar[3]等。该类算法都是在候选区域内提取特征,最后使用支持向量机[4]、随机森林、自适应增强[5]等方法进行检测与识别。二是利用深度学习进行目标检测,可以细分为二阶段与一阶段检测网络。二阶段模型中,Girshick等基于RCNN[6],利用selective search方法输入整张图片生成2 000个候选区域,随后将包含目标区域的图片送入网络中训练,经过一系列卷积操作提取特征,最后进行检测,生成的候选区域中包含大量重叠部分,导致RCNN模型训练速度慢,处理效率低下。Girshick提出的Fast-RCNN[7]改进了RCNN先提取候选区域后训练的机制,直接对整张图像进行训练,模型将候选区域映射到最后一层特征图上,该做法使得卷积层输出的候选区域经过ROI Pooling后得到固定的尺度,该方法减少了大量的重复计算,在训练速度、检测速度与训练空间上都进一步地减少。尽管如此,Fast-RCNN也未能达到实时检测的性能。Ren等提出的Faster-RCNN[8]中,取代了selective search提取候选区域的手段,创造性地采用卷积网络RPN自行产生建议框,并且和目标检测网络共享卷积网络,极大地提升了候选框的质量,进一步提升了检测的精准度。
虽然二阶段网络的检测精度不断地提高,但训练繁琐、检测速度不佳等情况时常发生。YOLO[9]、SSD[10]等 算 法 的 出 现 大 大 缩 短 了 检 测 时间。YOLO预定义预测区域,在每个指定区域内中生成若干个不同大小、比例的潜在边界框,将候选区边界框尺度调整到更接近真实的目标尺度。SSD则设计特征金字塔结构提取不同尺度特征,不同卷积块负责预测不同大小的物体。模型训练过程中采用大尺度特征图检测小物体,小尺度特征图检测大物体的策略。一阶段模型使得目标检测更加具有实时性,但精度却受到了不小的影响。
Anchor-free是一种新型的无边框检测方法。网络不需要设定预选框来限定实际感受野,通过学习一些关键点的特征或者密集区域特征来实现检测目的。例如CornerNet[11]学习了真值框的左上与右下2个角点,利用内嵌向量分组进行角点匹配。ExtremeNet在热力图上对每个目标预测TOP 4个点,并且预测中心点,通过几何方法进行分组。FoveaBox[12]使用特征金字塔网络(FPN)作为主干网络,通过比例压缩真值的中心区域,形成中心区域的正样本集,对区域内每个像素预测分类与偏移量。CenterNet[13]对真值热力图进行高斯核处理,网络学习高斯核后的真值的中心点坐标,预测偏移量与类别信息,并且在训练过程中摒弃了非极大值抑制手段,实现了真正意义上的端到端。
本文提出了一种基于CenterNet模型的轻量化行人车辆等多目标实时检测算法,考虑了复杂场景中目标的大小与目标距离的远近对模型精度造成的影响。同时对模型进行压缩、剪枝,在精度与速度方面进行权衡,实现了占用内存量低、精准性高、检测速度快的目的,适用于日常监控场景。
CenterNet是一种端到端的无边框目标检测算法。Zhou等[13]分 别 使 用ResNet-18[14]、hourglass[15]、dla34作为网络主干。主干网络输出的特征图传入检测模块,该模块拥有3个分支,每个分支都由3×3的卷积层与1×1的卷积层相连。模型简图如图1所示。
图1 CenterNet模型结构Fig.1 CenterNetmodel structure
网络对输入图片进行高斯核处理,提升真值中心位置的响应热度。随后将热力图进行卷积操作,模型学习不同类别的峰值点坐标(目标的中心点)。每个类别仅有一个局部峰值点,此时局部峰值点作为正样本,其余为负样本。主干网络由若干个卷积层组成,主要功能是提取图像特征。与其他检测模型进行32倍下采样不同,CenterNet只进行4倍下采样。使用更大分辨率的特征图作为主干网络的输出,能有效降低特征点的损失,避免特征过小导致后续网络无法学习有效特征。
大部分检测网络学习真值框的位置,Center-Net则学习真值中心点坐标,进一步降低了学习成本。Heatmap分支输出形状为(C,H,W),其中C为类别数,H为输出图片的高度,W为输出图片的高度。类别中最高的响应分数即为该物体的类别。由于负样本数与正样本比例过大,因此采用Focal-loss函数平衡正负样本,计算公式为
式中:Lk为中心点与分类损失函数,下标k为第k张输入图像;N为图片中关键点的数量;下标xyc为图像中的正负样本;Yxyc为真值的标签;为预测标签;α、β为超参数。当Yxyc=1时,(1-)α充当了矫正作用。当=1时,表示样本容易被分辨,此时应该减少loss比重,相应地对难分类的样本增加权重。当Yxyc接近1时,应该预测为0。此时使用()α增加loss权重,加大训练。
但由于Yxyc接近1,于是利用(1-)β进行补偿。当Yxyc接近0时,则补偿与惩罚互相替换,起到双方制约的作用,弱化了实际中心点周围的负样本的比重,进一步处理正负样本的不平衡。位置损失函数采用了L1 loss:输入图片在主干网络中进行4倍下采样后,模型将特征图重新映射到原图时会发生像素偏移从而产生精度误差。目标中心位置损失函数为
回归损失L1:网络预测出中心点坐标,对每个目标尺度进行回归得出宽高,与位置损失一样使用L1 loss,如下:
式中:Lsize为回 归 损 失 函 数;Sk为 原 图 尺 度为回归后的尺度。
3类损失函数相加,乘以参数,整个训练过程的目标损失函数为
式中:λsize、λoff为参数。
综上所述,网络模型对每个真值进行预测,输出(C+4)维的矢量,分别对应物体的类别、宽高、中心偏差。
模型检测时采用最大池化思想,对8联通区域的响应点数值进行比较。如果中心点响应大于其他位置的响应,则判断该点为峰值点,反之则舍弃。最后设置阈值,选取TOP 100个结果,作为目标的中心点坐标,如图2所示。另外两个分支根据目标中心坐标回归到边界框,调整回归损失。
图2 峰值响应可视化Fig.2 Peak response visualization
公安监控系统对固定区域进行实时监控和信息记录,主要在交通要道、公共聚集场所以及治安复杂场所安装视频监控设备。环境变化成为影响监控系统精度的主要原因。处于十字路口、商业区等复杂环境中,人流车流明显增多,此时摄像头不能根据行人远近、车辆大小调整拍摄角度、高度。行人的增加、重叠现象会加大主干网络特征提取的难度,造成漏检,同时车辆经常会对后方行人形成遮挡,此时模型会过分关注于大型车辆而忽略小目标。ResNet-18对输入图片进行8倍下采样,两个重叠的行人经过下采样后处于同一个像素点中,难以提取到行人信息。随着网络深度加深,模型的表征能力增强,但相应也造成模型计算冗余。ResNet-101层级太多,在公安监控系统中不能起到实时检测的效果。本文提出了一种基于CBNet[16]级联差级交互的hourglass模型,主要针对主干网络(ResNet-18)做出如下修改:首先增加残差块与hourglass模块的错级级联结构。第一个残差块输出的特征与第一个hourglass的输入特征进行堆叠,第二个残差块的输出的特征与第一个hourglass的输出特征进行堆叠,以此类推。网络提取细条状的目标特征时,通过减少下采样的倍数来减少特征丢失,同时加深网络层数增强网络学习困难标签的能力。如果目标区域面积占比较大时,网络提取目标特征时,相应地增加下采样倍数,降低像素点过多对视觉造成的影响,将模型注意力转移到其他目标。本文提出的主干网络模型如图3所示。
图3 主干网络简图Fig.3 Backbone network illustration
输入图片尺度为320×192,经过第1个卷积层与最大池化层后,图片分辨率已经缩小4倍。传统的模型通常进行16倍下采样。当行人重叠或目标过小时,经过下采样后,重叠行人往往聚集在同一个像素中。即使之后进行反卷积,特征也已被破坏,因此一般模型难以分辨目标重叠情况。为防止此现象的发生,本文新增了一个并行分支网络ResNet-18。分支网络包含4个基本模块,每个基本模块都由2个残差块组成,残差块中不使用下采样,保证了尺度不变性。图片经过分支网络后,尺度变成80×48,通道数增加至256。
主干网络采用hourglass的漏斗状结构,对下采样的特征图双线性插值返回到原有尺度。碰到大目标时,该结构能够“转移”网络的注意力,防止对大型目标过多“关注”,从而产生过拟合现象。本文提出的主干网络结构结合了SSD[10]的思想:大尺度的特征图检测小的目标,小尺度的特征图检测大的目标。但是SSD并没有使用特征融合,仅仅在每层预设边界框的个数。将主干网络与分支网络最后输出的特征进行通道叠加,促使网络的通道响应更加灵敏。本文利用CBNet结构错级连接ResNet-18与hourglass。分支之间的前一个残差块经过下采样与主干网络的后一个残差块进行差级相连,相连之前保证了两者输出尺度一致性,进而进行通道叠加。对不同尺度,不同层级的特征进行复用回传,以便获得更强的特征学习能力。传统的级联融合模型类似于FPN网络进行下采样后使用反卷积与相同尺度的特征进行融合。这种做法使得参数量快速增加,推理时间随之大幅度增加。使用FPN的形式去训练一个端到端的模型,增加了收敛难度。FPN本身有利于多尺度的特征提取,但是分支网络需要保证尺度不变,因此主干网络与分支网络存在意义相悖。实验表明,CBNet特征融合结构与原有模型所占内存的大小相近,并没有增加模型的参数量。在不破坏分支网络尺度不变性的前提下,融合主干网络特征与分支网络提取的特征后进行下采样。该级联方式让并行网络进行互补,对各自分支并无损失,提高了在训练速度与检测精度。
图像送入模型进行训练,4倍下采样后密集目标尺度进一步缩小。不同类别的质心相互重合,热力图峰值差异缩小。网络在所有通道上进行特征提取,按照通道响应的大小来判断所提取的特征对应的物体种类。后续卷积层又将这些特征映射到后续的通道中。因此,主干网络需要增加通道数来减少通道响应重合的可能性。通道数的增加使得分类的准确率、召回率明显上升,但是导致模型参数量越来越大。针对该问题本文采取2种减少参数量方法:深度可分离卷积[17]和模型压缩。
2.2.1 深度可分离卷积
深度可分离卷积[17]是一种能有效减少参数的方法,其能将传统的卷积分解为一个深度卷积(Depthwise Convolution)和一个逐点卷积(Pointwise Convolution),如图4所示,F和G分别为输入特征图和输出特征图。
图4 深度可分离卷积原理Fig.4 Depthwise separable convolution principle
输入特征图的尺寸为Df×Df×M,Df和M分别为特征图的边长和通道数量。传统卷积核尺寸为Dk×Dk,Dk为卷积核的边长,经过N个卷积核,输出特征图尺寸为Dt×Dt×N,N为通道数量。同样是输出相同尺度的特征图,2种卷积的参数量相差很大。传统卷积的计算量为Dk×Dk×M×N×Dt×Dt,深度可分离卷积的计算量为
从参数量看,2个不同卷积的参数量之间相差一个数量级。从原理看,传统卷积直接对通道与区域同时进行卷积,深度可分离卷积首先对每个通道做区域卷积,再用的卷积核合并通道卷积。不仅提高了网络的检测速度,还实现了通道和区域的分离。
本文对分支网络的4个模块都进行了深度可分离卷积操作,实验表明模型的推理速度提升了13%,较好地解决了模型因为参数量大而导致推理缓慢的问题。
2.2.2 模型压缩
目前深度学习的模型压缩方法主要分为以下4个方向:设计更加精致的主干网络、模型剪枝、核的稀疏化及模型量化。
本文考虑现有的4种方法优缺点,核的系数化与模型量化都需要平台上稀疏矩阵操作库的支持,对模型的框架、移植的系统都有严格的要求。优化主干网络[18]提升模型效果最大,剪枝可以更好地降低模型的复杂度。因此本文选取了较为成熟的2种方法,优化主干网络和模型剪枝。Zhou等[13]使用ResNet-18作为主干网络,网络的深度和宽度较大,在训练过程中易造成参数冗余,且精度、召回率均不高。由于通道数量较大,上采样耗时严重,本文裁剪掉最后一层上采样。为了保证最后的输出尺度是4倍下采样,对应删除前面一层下采样的基础块。所有的ResNet-18支路保留原有尺度参数,而在hourglass支路中,保持下采样,并且在下采样过程中成倍增加通道数量,提高精度与召回率。
模型压缩方面主要进行了通道压缩[19]与蒸馏操作。通道剪枝的核心思想是移除一些冗余的通道,同时裁剪与这些通道对应的卷积核,减少模型前向计算所需的FLOPs。本文受到L1稀疏化的启发,对hourglass 4个卷积模块的通道增加缩放因子gamma,训练后得到4个缩放系数gamma。此时模型的检测精度、召回率损失最低。ResNet-18分支则增加了空间注意力机制。利用全局均匀池化将上一层输出的值归一化作为权重系数,下一层特征图中的每个位置像素与该位置权重做乘积操作。其次对预训练的模型进行剪枝,分析每层的稀疏性对精度的影响,第二层卷积层稀疏性对精度影响如图5所示。当卷积层的稀疏性不断上升,分类准确性波动。稀疏性为20%时,准确性达到最低;当稀疏性接近25%,精度最高。因此这个卷积层选择25%的稀疏性。
图5 稀疏性与精度关系Fig.5 Relationship between sparsity and precision
CenterNet中Heatmap分支利用最大池化机制预测出中心点坐标,再由损失函数分支预测的宽度、高度计算出边界框。
实际应用场景中,同一类别目标在空间尺度上的变化很大,针对如何设定阈值适应场景中目标尺度变化的问题,本文进行如下处理:首先,构建掩模矩阵,预测的边界框超出原图坐标则设置为0,这样大大减少了边界框的个数。其次,对每个类别设置IOU协同过滤。根据W、H计算出边界框的面积。本文根据人眼的可见范围的对每个类别手动设置最小的面积阈值,即感兴趣区域的最小的边缘范围面积。当某个目标的面积小于该类别设定的阈值时,则自动忽略目标。划分检测区域过滤大目标,当目标超过图像原尺度或者预测框的坐标超过预设的检测区域将进行过滤。实际系统中经常会使用多摄像头协同工作,此时可以利用本文策略根据实际需求对各个摄像头划分检测区域。当检测目标的左上角、右下角坐标任意一点越过检测区域,及时过滤,确保单个目标能被最清晰地捕捉。最后,在热力图分支中对响应分数做非极大值抑制,加上可视化阈值,减少过小物体显示。
本实验以Pytorch为框架,操作系统为W indows7,实验环境为4块Nvida-1080Ti显卡,batchsize设置为16,初始学习率为5×10-4,训练500个epochs。本文采用交叉训练方式,首先训练残差支路,增加网络结构并加载预训练权重训练hourglass结构。最后结合CBNet模块进行训练,学习率降为9×10-4。
本文从COCO数据集中挑选出400张车辆、行人图片,结合来自广角监控摄像头的1 600张数据构成新的数据集。为了保证两者数据同分布,都选择了白天的街景。使用上下翻转,均值漂移等数据增强手段,设置80个种子随机进行数据增强,最后获得12 000张图片。部分图片如图6所示,(a)、(b)来自COCO数据集街景图,(c)、(d)来自监控摄像头街景图。
图6 数据集部分图片Fig.6 Partial pictures of dataset
3.2.1 主干网络对比
本文使用CenterNet模型进行精度测试。尝试多个版本的主干网络,并与主流的框架SSD、slim YOLOV3进行实验对比。结果如表1所示。
表1 主流模型精度对比Table 1 M ainstream m odels'precision com parison
与SSD、slim YOLOV3相比,CenterNet本身并不具备优势。主干网络经过改进后,模型没有增加参数量,但是精度、召回率均提高到了90%。实验表明,CBNet对hourglass与ResNet交互级联很好地提升了模型的学习能力。
3.2.2 模型压缩对比
本文对卷积层通道剪枝,按比例减少通道数。并且对每个卷积层进行蒸馏,测试稀疏性与准确性的关系。该方法在模型精度没有大幅下降的前提下有效地压缩了80%的内存,压缩前后的模型精度变化如表2所示。
表2 模型压缩前后精度变化Tab le 2 M odel's accuracy before and after com pression
3.2.3 模型推理速度对比
本文对压缩前后的模型进行性能分析,实验环境为单块Nvida-1080Ti显卡。实验结果如表3所示。模型重新设计以后,推理速度提升了50%,证明了主干网络有助于模型加速。其次将部分模型的卷积模块替换成深度可分离卷积,模型速度提升了13%。经过蒸馏与剪枝后模型推理速度大约为原模型速度的3倍,验证了本文压缩、加速方法的有效性。
表3 模型推理速度对比Tab le 3 M odel's in ference speed com parison
3.2.4 协同过滤可视化结果
由图7协同过滤对比可以看出,本文算法很好地排除了小目标的干扰。马路对面的车辆无需进行检测便可以排除,并且右侧靠近摄像头的人与车辆并没有漏检与误检。
图7 协同过滤对比Fig.7 Collaborative filtering comparison
本文提出了一个基于CenterNet模型的轻量化的多目标实时检测算法,使用了学习能力更强的CBNet差级级联融合结构进行特征提取,并对原有模型进行压缩及蒸馏。
1)模型准确率与召回率均可达到90%,解决了复杂的交通场景下,对于行人车辆密集的区域检测精度过低的问题。
2)模型压缩、蒸馏后,召回率下降2%,准确率下降2%,但内存占用量仅为原来的15%,增强了模型的普适性。
3)模型进行重新设计与加速,弥补了原始模型推理过程中速度过慢的缺陷,使得检测具有实时性,极大地提高了监控服务实时作战能力。