成玉荣 胡海洋
摘 要:卷积神经网络已经成为了计算机视觉处理最为广泛的技术方法,基于卷积神经网络的目标检测技术也是一个热门的研究话题。本文通过引入通道注意力机制,对目标检测算法Tiny-YOLOv3进行改进,训练人体头部的目标检测模型,从而统计当前监控环境下的人数。实验结果表明该方法能取得较好的头部检测效果,人数统计准确率高。
关键词:卷积神经网络 Tiny-YOLOv3 头部检测 人数统计
Abstract: Convolutional neural networks have become the most widespread technical method for computer vision processing. Object detection technology based on convolutional neural networks is also a hot research topic. This paper introduces the channel attention mechanism to improve the object detection algorithm Tiny-YOLOv3, and trains head detection model to count the number of people in the current monitoring environment. The experimental results show that this method can achieve a good head detection effect, and the people counting accuracy is high.
Key Words: Convolutional neural networks; Tiny-YOLOv3; Head detection; People counting
人数统计问题是近年来计算机视觉领域研究热点之一,在现实生活中具有广泛应用。如政府管理部门根据旅客流量对交通资源进行合理分配;医院门诊流量有助于总结病人就诊规律,合理分配医护资源;对人数密集情况进行预警,能够有效减少踩踏等公共安全事故的发生。公共场所的人数统计分析对于公共资源分配以及商业决策具有重要的参考价值。在人数统计的众多方法中,计算机视觉处理方案在已有监控系统资源实现再挖掘利用,不需要安装专门检测设备, 具有成本低、实时性高等优势。本文基于深度卷积神经网络构建的具有通道注意力机制的Tiny-YOLOv3目标检测算法,在SCUT-HEAD公开数据集上训练人体头部检测模型,实现公共场合的人数统计。
1 卷积神经网络
卷积神经网络是受生物学上感受野的机制而提出的,感受野主要是指視觉、听觉等神经系统中一些神经元的特性,即神经元只接受其支配的刺激区域内的信号。卷积神经网络一般包括输入层、卷积层、激活层、池化层,其中卷积层是卷积神经网络的核心组件,它的作用是对输入数据进行特征提取,利用卷积核矩阵对原始数据中的隐含关联性进行抽象。激活层负责对卷积层抽取的特征进行激活,由于卷积操作是把输入图像和卷积核进行相应的线性变换,需要引入非线性函数对其进行非线性映射。池化层就是对特征图进行子采样,负责对感受域内的特征进行筛选,提取区域内最具代表性的特征,能够有效地降低输出特征的尺度,进而减少模型所需要的参数量。卷积神经网络具有三个特性:局部连接、权重共享以及子采样,这些特性使得卷积神经网络具有一定程度上的平移、缩放和旋转不变性,符合人的视觉特点,和一般的前馈神经网络相比,卷积神经网络的稀疏连接及权值共享模式,具有更少的参数量,能够有效提高训练速度。
2 目标检测算法
2.1 YOLO模型
YOLO系列算法是单阶段目标检测算法的主要代表算法之一,经历了三个版本的变更,YOLOv1提出通过网格划分做检测,目标中心点在哪个网格,该网格就负责检测这个目标,显著提升了检测速度。YOLOv2在网格约束的基础上应用了anchor机制,通过预设不同尺度的先验框使目标检测器专注于检测与先验框形状相近的物体,同时采用了批标准化作为正则化、加速收敛和避免过拟合的方法。YOLOv3采用了深层卷积神经网络作为特征提取的主干网络,在YOLOv2的基础上,借鉴特征金字塔网络的多尺度思想,设计了三个不同尺度的检测层,并为每个检测层分配3个先验框,YOLOv3通过边框回归预测的方式预测物体位置,解决了先验框机制线性回归不稳定的问题。
2.2 Tiny-YOLOv3模型
Tiny-YOLOv3是轻量化的YOLOv3,Tiny-YOLOv3主要是由卷积层和池化层拼接而成,其模型结构如图1所示。模型输入图像分辨率为416×416×3,经过一系列的卷积与池化操作对图像进行特征提取,图中长方体为提取到的特征图,下方数字为当前特征图的宽高与通道数,它同样融合了特征金字塔网络的多尺度思想,在26×26、13×13两个尺度的特征图上进行预测,通过对两个检测层上所有的预测框进行非极大值抑制去除冗余框,获取最终有效的预测框。Tiny-YOLOv3模型结构简单,检测精度高,速度快。
2.3 对 Tiny-YOLOv3改进
因特征图不同通道信息对检测结果贡献度不同,本文引入通道注意力模块对特征图各个通道间的依赖性进行建模,其结构如图2所示,首先对卷积得到的特征图进行全局池化得到一个与通道数一致的一维向量,接着通过全连接层与激活层实现维度的变换与数值的非线性变换,再利用一个全连接层使其维度恢复,这个过程相当于一次编解码操作,最后利用sigmoid函数激活使其范围在0-1之间,该一维向量作为每个通道的评价分数,用来衡量每个通道的重要性,将该分数分别施加到输入特征图的各个通道上,得到具有通道注意力的特征图。在Tiny-YOLOv3所有的卷积层后,添加通道注意力模块,使其关注重要特征并抑制不必要的特征,从而提高目标检测的准确率。
3 实验
3.1 数据准备
训练数据采用的是SCUT-HEAD公开数据集,共计4340张图片,为了提高训练模型的鲁棒性,对数据集进行了如下的数据增广:(1)旋转角度;(2)随机裁剪;(3)曝光度调整;(4)饱和度调整。采用以上四种方式丰富数据集,生成更多的训练样本,从而使网络学习到更多的信息。
3.2 K-means聚类
在训练网络时,需要预设先验框的初始大小和个数,使用接近真实框的先验框,更容易加快网络收敛的速度,提高头部检测的定位精度。K-means聚类算法采用欧氏距离来衡量两点之间的距离,本文对数据集中目标框宽高利用K-means算法进行聚类,找到接近数据样本的先验框。
3.3 模型训练
实验软件环境:Python3.6.8;OpenCV3.4.1;Pytorch1.1。 硬件环境:CPU: Intel Xeon E5-2620 v3 @ 2.40 GHz六核;内存: DDR4 64G;GPU: Nvidia GeForce GTX TITAN X。将增广后的数据集以7:3随机分为训练集与验证集,利用添加了通道注意力机制的Tiny-YOlOv3进行交叉验证训练273个epoch,训练过程如图3所示,损失最低在0.6左右,平均检测精度高达80%,实际检测效果如图4所示,头部檢测精准人数统计准确率高。
4 结语
添加了通道注意力机制的Tiny-YOLOv3在人体头部检测上取得了较高的准确率,对于公共场所进行人数统计具有较高的应用价值。在接下来的工作中将着重倾向于将注意力机制引入更多的目标检测算法,测试其在小目标检测方面的有效性。
参考文献
[1] 周飞燕,金林鹏,董军.卷积神经网络研究综述[J].计算机学报,2017,40(6):1229-1251.
[2] Redmon J, Farhadi A. Yolov3: An incremental improvement[J]. arXiv preprint arXiv:1804.02767, 2018.
[3] Hu Jie,Shen Li,Albanie Samuel,Sun Gang, et al. Squeeze-and-Excitation Networks.[J]. IEEE transactions on pattern analysis and machine intelligence,2019.
[4] 王小鹏, 渠燕红, 马鹏等. 基于头部图像特征的人流计数方法[J]. 铁道学报, 2019, 41(2):82-87.
[5] 鞠默然, 罗海波, 王仲博等. 改进的YOLO V3算法及其在小目标检测中的应用[J]. 光学学报, 2019, 39(7).