基于卷积神经网络的行人检测方法研究新进展
2018-12-06邢志祥顾凰琳汪李金
邢志祥,顾凰琳,钱 辉,张 莹,汪李金
(常州大学环境与安全工程学院,江苏 常州 213164)
许多车站、地铁、商场人流较多的地方容易发生安全事故,一旦发生踩踏事故,后果不堪设想。因此,及时地监测客流情况,对行人进行检测分析十分重要。近几年发展起来的智能安监技术、无人驾驶技术等随着计算机视觉的兴起而成为研究的热点,使以计算机视觉为基础的行人检测技术在实际应用中更具有实时性、准确性和可靠性,具有很大的研究前景。
传统的行人检测技术主要包括4个步骤:图像预处理、区域选择、特征提取和分类器分类。其中,图像预处理主要通过对图像进行降噪处理,突出行人的图像特征以便更好地进行特征分类;区域选择主要是对行人的位置进行定位;特征提取主要通过计算机的语言算法来提取图像中的行人特征,提取的特征包括HOG特征[1]、Haar-like特征[2]、Strip特征[3]、Edgelet特征[4]、Shapelet特征[5]等;分类器分类是用来判断图像中是否有行人,以达到检测行人的目的,分类器的选择也有很多,主要包括SVM分类器[6]、Adaboost分类器[7]等。
传统的行人检测方法已经不能满足行人检测精确性和实时性的要求,而随着深度学习在全世界范围的流行应用,出现了新的行人检测方法,即基于卷积神经网络的行人检测方法。该方法不仅可以提高行人特征的表达能力,同时也可以降低行人检测的错误率,在整体功能上都得到了优化,且在实际应用中具有广泛的应用前景,也是近几年的研究热点。为此,本文对基于卷积神经网络的行人检测方法的最新研究进展及其未来的发展方向进行了概述。
1 卷积神经网络(CNN)
1. 1 卷积神经网络的发展历史
卷积神经网络(Convolutional Neural Network,CNN)[8-9]是一种受到生物自然视觉感知启发而建立的一种深度学习体系结构。1959年,Hubel和Wiesel发现动物视觉皮层细胞可以感受到光的检测;受此启发,1980年福岛邦彦提出了新的识别器,这是CNN的前身[10];1990年,加拿大的Lecun提出了CNN的深度学习框架,并且通过自己设计的LeNet-5卷积神经网络对手写数字进行图像分类且效果显著[11];2012年,Krizhevsky等[12]设计了新的CNN结构,即AlexNet,这个网络框架在图像分类领域取得了巨大的成功,大大提高了图片分类的准确率;2014年,Simonyan等[13]以AlexNet-8为基础提出了VGG的卷积神经网络框架;此后,Szegedy等[14]、He等[15]分别提出了GoogLeNet和Res Net的卷积神经网络框架,这些网络框架结构都加深了网络,大大提高了图像识别的准确率。可见,CNN正在以飞快的速度发展,其框架结构也得到了不断的完善。
1. 2 卷积神经网络的结构及发展现状
CNN指那些至少使用一层卷积运算来替代一般的矩阵乘法运算的神经网络。CNN经典模型LeNet-5的网络结构如图1所示。
图1 卷积神经网络经典模型LeNet-5的网络结构Fig.1 Structure of the classical model LeNet-5 network based on convolutional neural network
由图1可见,CNN主要由输入层、卷积层、池化层、全连接层和输出层构成。
CNN复合多个卷积层和池化层对输入数据进行加工,并在连接层实现与输出目标之间的映射。CNN运算的主要思想有三个:稀疏交互、参数共享和等变表示[16]。其中,稀疏交互(sparse interactions)是指卷积核的大小远远小于输入图片的大小,通过存储较少的参数来提高运算的效率;参数共享(parameter sharing)是指相同的参数可以在一个模型的多个函数中使用;等变表示(equivariant representions)是指CNN的一个函数发生输入改变会使得它的输出以同样的方式发生变化。本文主要介绍CNN的主要组成模块及其研究现状。
1.2.1 卷积层
卷积层由多个卷积核构成,可以计算出不同的特征映射,其主要用途是为了提取图像中检测物体的特征。卷积层越多,能够提取到的特征越多,检测的准确性就越高,但是网络过深也会影响卷积的速度,造成实用性较差。目前卷积层的研究工作已有许多进展,例如平铺卷积、扩张卷积、转置卷积、NIN网络、Inception模块等。
平铺卷积(tiled convolution)[17]是一种改进的CNN模型,它可以通过拼贴或者叠加特征图来学习旋转和尺寸不变的特征,该模型同时融合了参数共享和学习特征多样性的特点。
扩张卷积(dilated convolution)[18]除了有与普通的CNN一样的卷积核以外,还多了一个扩张率参数,使其可以增大网络的接受区域大小,从而覆盖更多信息。目前扩张卷积在诸如图像分割、机器翻译、语音合成和语音识别中应用广泛。
转置卷积(transposed convolution)[19]也可以称为是相应的传统CNN的反向传递,所以也可以称为反卷积(deconvolution)。使用反卷积可以使得图像变大,特征更明显,可以有效地重建输入图像。
NIN网络(network in network)是由Lin等[20]提出来的一种改进的网络,它通过使用微神经网络代替卷积核来提取特征,可以减少在进行非线性函数卷积运算时可能出现的过拟合现象,增强了局部模型的抽象能力。
Inception模块是由Szegedy等[21]提出的,它可以广泛应用到CNN中,通过设置各种卷积核来增加网络的宽度和深度,但也不会增加网络的运算难度。一般来说使用较多的是尺寸为1×1的卷积核,因为它可以自然地将一些相关性很高的、在同一空间位置但不同通道的特征连接在一起,当然也可以使用稍大尺寸的卷积核,例如3×3或者5×5的卷积核。
卷积层是CNN中必不可少的一部分,卷积核越多,得到的特征越多,学习到的信息越多,但同时网络变复杂,计算速度下降,容易出现过拟合的现象。许多新功能的卷积层已被提出并且得到运用,在实际训练中可以根据需要选择合适的卷积层。
1.2.2 池化层
池化层也是CNN中比较重要的一个概念,主要用于对卷积层输出特征进行压缩,以加快运算速度,也可以使对于一些特征的探测过程变得更稳健。池化层的池化过程包括最大池化、Lp池化、随机池化、频谱池化、空间金字塔池化等池化方法。
最大池化是指对领域内的特征点取最大值,它可以减小因为卷积层参数误差而造成估计均值的偏移,是研究者们经常使用的一种池化方法,且方便可行。
Lp池化是Hyvärinen等[22]提出的一种模仿生物细胞并受到启发的池化方法。Lp池化的表达式如下:
(1)
式中:yi,j,k为第k个特征映射在位置(i,j)处的池化算子的输出;am,n,k为第k个特征图在池化区域范围Rij内位置(m,n)处的特征值;Rij为池化的区域范围;p为调节系数,当p=1时,可以把Lp池化近似为平均池化,当p=∞时,可以把Lp池化近似为最大池化。
随机池化(stochastic pooling)是Zeiler等[23]提出的根据多项分布随机提取特征值来进行池化的方法,它可以防止CNN可能会出现的过拟合现象。
频谱池化(spectral pooling)是Rippel等[24]提出的一种池化方法,它通过在频域中截取信号特征来降低维度,它在比其他的池化方法更灵活的同时也提高了卷积效率。
空间金字塔池化(spatial pyramid pooling)是He等[25]建立的一种池化方法,它的意义在于可以使得任意大小的特征图都能够转换成固定大小的特征向量,可以处理各种不同大小的图像。
池化层通过池化方法减少卷积层的连接数量,可以降低卷积网络的计算量。不同类型的池化层可以根据各自不同的处理方式来应对具体的实际问题,并随着研究的深入,池化方法的种类也在不断地更新。
1.2.3 全连接层
CNN的最后通常需要一两层的全连接层来把卷积输出的二维特征图转化成一维的向量。全连接层的作用是把卷积过后的特征图转变成可以用来进行分类的数据。全连接层的方法主要包括Dropout和DropConnect等。
Hinton等[26]提出了Dropout方法,该方法在使用过程中被证明可以有效减小过拟合现象。Dropout方法可以防止网络过度依赖任何一个(或任何小组合)的神经元,并且即使在没有某些信息的情况下也可以使网络准确。Wan等[27]进一步提出DropConnect方法,它的主要原理是随机切断全连接层的神经元和前一层神经元的连接,从而提高CNN的泛化能力。
全连接层的每一个结点都与上一层的所有结点相连,用来把前边提取到的特征综合起来,起到将学到的“分布式特征表示”映射到样本标记空间的作用,可以提高CNN的性能,因此在CNN中的地位也十分重要。
2 基于卷积神经网络的行人检测方法
近年来一些地区客流拥堵造成的踩踏事故时有发生,行人检测技术在安全工程领域也可以发挥重要的作用。深度学习给出了许多问题的解决方案,因此基于深度学习的CNN也在迅速发展,其在行人检测方面已经取得了许多研究成果。本文主要介绍在行人检测方面经常使用到的数据库以及CNN在行人检测中的具体应用。
2. 1 行人检测数据库
在行人检测的研究中,选择适当的行人检测数据库来进行试验是至关重要的,研究者可以根据研究情况的不同来选择合适的行人检测数据库,或者根据实际情况自己制作行人检测数据库。
常用的行人检测数据库有INRIA数据库、Daimler数据库、Caltech数据库、NICTA数据库、CVC数据库、USC数据库[28]等。
INRIA数据库的训练集有正样本614张、负样本1 218张,测试集有正样本288张、负样本453张,是最常用的静态行人检测数据库。
Daimler数据库有检测和分类两个数据库,其中检测数据库的训练集有两类大小的正样本各15 560张、负样本6 744张,测试集是一段小视频,约有21 790张图片;分类数据库有3个训练集和2个测试集,每个训练集和测试集都有4 800张正样本和5 000张负样本。
Caltech数据库是较大规模的数据库,约10 h的视频,该数据库包括6个训练集和5个测试集。
NICTA数据库的训练集包括187 000个行人、5 200个负样本,测试集包括6 900个行人、50 000个负样本。
CVC数据库主要有3个数据集,用于在车辆辅助驾驶中的行人检测,这个数据库也在不断的更新中。
USC数据库包括3个数据集(USC-A、USC-B、USC-C)都标注了信息,其中USC-A数据集有205张图片,USC-B数据集有54张图片,USC-C数据集有100张图片。
2. 2 卷积神经网络在行人检测中的应用
CNN在实际生活中的运用已经可以解决许多问题,例如图像分类、目标检测、文本检测、视觉显著性检测、动作识别、场景标记、语音和自然语言处理等。
行人检测一直是计算机视觉中长期存在的重要问题,主要的难点在于如何准确、有效地定位图像或者视频中的行人[29]。传统的行人检测方法主要存在两个问题:①使用滑动窗口进行区域选择时没有针对性,增加了复杂度;②特征提取时图像的一些多样性特征并不能很好地被提取出来。CNN可以很好地解决类似问题。20世纪90年代,CNN就已经开始在行人检测中得到应用,但由于缺乏较好的数据库及处理图像的资源,进展一直很缓慢。直到2012年,CNN在ImageNet挑战中的巨大成功重新激发了人们对基于CNN的目标检测的兴趣,因此行人检测方法有了突破性的发展[30]。如Sermanet等[31]运用了一种卷积系数编码的方法来训练卷积层,然后微调整个CNN,这种方法可以在能力范围内提取到更多的行人特征,在行人数据库的训练检测上效果良好;Chen等[32]提出了一种联合的行人检测模型,将提取特征和一些遮挡处理以及特征分类都放在一个CNN中,这些端到端的训练可以更好地对特性进行分类;Tian等[33]将行人检测与学习上下文的任务整合来训练,在训练过程中可以包含大多数行人及背景的特征信息,可以对CNN的行人检测进行优化,提高了行人检测的准确率;Li等[34]提出了一种基于记忆神经网络的行人检测方法,该检测方法将输入的图像转化为图像序列,并通过CNN对生成的图像序列提取序列特征,序列特征学习记忆输出行人的位置掩码图,最后可以框出行人完成检测。
除此以外,基于Region Proposal的深度学习算法也可以应用在行人检测领域。如Girshick等[35]提出了R-CNN模型,这种模型利用selective search算法提取候选区域,然后缩放到统一尺寸通过CNN来输出特征,并通过SVM分类器来分类,较大幅度地提高了目标检测的准确率,但由于训练步骤繁琐和速度慢而较难应用于实际的目标检测中;针对R-CNN模型运行速度慢这个问题,出现了SPP-NET模型[25],它与R-CNN模型的训练步骤基本一致,只是在进行特征提取时不需要每个候选区域都经过CNN,只需把图片输入即可,这大大提高了训练速度;Girshick[36]通过融合R-CNN模型和SPP-NET模型的优点,提出一种新的Fast R-CNN模型,该模型只需提取待检测图像的特征,这使得网络的训练和测试更方便;Faster R-CNN模型是Ren等[37]提出的,该模型将Region Proposal和CNN连接在一起,使用端到端的网络进行目标检测,在速度和精度上都有了提高。
基于Region Proposal的深度学习模型在行人检测中的应用虽然可以提高行人检测的速度和精度,但仍存在一些不可避免的问题。上述这些行人检测方法[25,35-37]的检测精度主要取决于提取候选区域的算法的准确度,如果检测背景模糊或者目标不明显,则提取候选区域的算法准确度会降低,从而使得最终的检测精度也会降低。
R-CNN、SPP-NET、Fast R-CNN、Faster R-CNN模型的逐步发展,在不断精简目标检测流程的同时,也在逐步提高目标检测的精度和速度,如Faster R-CNN模型已经成为主流的目标检测方法之一,但是仍然无法满足实时性要求。而基于回归方法的深度学习目标检测算法由此显现出其优越性,目前应用较多的是YOLO算法和SSD算法。其中,YOLO算法[38]的优点有:①运行速度快,可以进行实时检测;②采用全图信息进行预测,可以减少背景预测的错误率;③可以学习到目标的概括信息,比大多数的目标检测效果好。SSD算法[39]相比YOLO算法的目标检测速度更快,检测精度也基本可以满足要求,这种算法也让人们看到了目标检测在实际运用中的可行性。
基于回归方法的深度学习目标检测算法虽然可以大大地提高目标检测的速度,满足实时性的要求,但是由于网络结构层较少,在检测时不如基于Region Proposal的深度学习模型的目标检测精度高,还需要研究者们进行更深入的探索。
3 结论与建议
本文对基于卷积神经网络(CNN)的行人检测方法进行了具体的分析。首先概述了CNN的发展历史、结构和发展现状,其中对CNN的卷积层、池化层和全连接层进行了具体的概述;其次对基于CNN的行人检测方法的应用进行了介绍,主要包括行人检测数据库和CNN在行人检测中的应用现状,并在对行人检测的应用中介绍了几种可以用于行人检测的深度学习算法。由此得出如下结论:基于CNN的行人检测方法发展十分迅速,并且大大提高了行人检测的准确性和实用性;在实际问题的运用中,基于CNN的行人检测方法还有待进一步发展,一旦将这种先进的行人检测方法运用到车站、地铁等人流较多的地方,可以有效地分析人流拥堵的状态,避免安全事故的发生,如若将其运用于火灾事故中,也可以对行人进行有效的疏散,具有实际运用的意义。但是由于实时性的局限性,这种行人检测的方法还未能大规模地投入到实际中,需要研究者们进行深入的探索与实践。