陶 飞,成科扬,张建明,汤宇豪
(江苏大学 计算机科学与通信工程学院,江苏 镇江 212013)
行人再识别是智能图像视频分析领域的研究热点。近年来,人脸识别技术的快速发展使得机器辨别人脸的能力远超人类[1],其在“智慧城市”“平安城市”的构建等多个领域得到了广泛的应用[2]。但在实际应用的场景中,摄像头并非在任何情况下都可以拍摄到清晰的人脸,并且一个摄像头往往无法覆盖所有区域,而多个摄像头之间一般也没有重叠。因此,用人的整体特征信息来对行人进行识别就变得愈发重要。由此,计算机视觉领域针对行人再识别的研究工作应运而生。
行人再识别是指对行人进行重新识别。由于行人数量不断增加,在监控摄像头下仅依靠人工对海量数据进行排查时工程量浩大,不仅耗费大量的人力,而且效率低,容易产生很多遗漏。因此,深度学习方法在行人再识别中得到了有效的运用。深度学习方法是借鉴人脑信息处理的分层级联方式[3],可以自动地学习数据的深层特征以适应各种复杂的情形。深度学习方法使行人再识别有了更多的解决方案,但是由于人体的非刚性和各种客观条件,如光照、姿态、视角以及尺度的变化,会严重影响对行人图像的分辨,因此行人再识别技术的识别精度仍然有待进一步提高。
本文提出一种行人再识别方法,通过研究行人姿态的粗、细粒度属性,将行人姿态关节点图像融入姿态信息学习模型,对已有行人属性进行补充。在此基础上,使行人属性学习过程并行化,根据行人语义属性划分行人身体结构,并在梯度下降过程中进行梯度交换以获取更优参数,加快网络训练速度。
行人特征的表示是行人再识别的关键。行人的视觉外观相对容易提取,也不会在短时间内发生巨变,可以对行人再识别的特征表示方法进行不断改进以有效区分行人。
低层视觉特征主要包括颜色、纹理、梯度以及它们的组合。颜色特征不依赖于图像本身的尺寸、视角等因素,具有较高的鲁棒性。文献[4]结合行人局部与全局外貌特征,采用色调饱和值(Hue Saturation Value,HSV)表示图像全局特征,提高了行人识别率。文献[5]将绘画结构应用于行人再识别,以更好地适应人体结构,对每个部分提取更精确的颜色特征。纹理是一种反映图像中同质现象的视觉特征,其基于多个像素点区域进行统计,避免了局部偏差,具有较大的区域优势。梯度特征使得许多容易受到行人自身姿态信息变化、视觉相似性影响的生物特征得以改进和提高[6]。通过计算和统计图像局部区域内的梯度大小和梯度方向,将图像分成若干细胞单元,对每个单元的像素进行梯度采集并组合成特征,这样即使行人图像受到了光照等的影响,也仍然能够获得较好的识别效果。
上述单个特征提取方法都存在着一定缺陷。颜色特征受外在因素影响较大,比如光照、天气都会导致图像色彩失真。纹理特征会受监控摄像头的抖动等因素影响。梯度特征没有考虑到物体遮挡等问题。因此,文献[7]提出一种将身体不同部位的整体色彩含量、颜色空间排列、局部图案纹理进行加权的行人再识别方法,提高了低分辨率、遮挡和姿态、光照变化等情况下算法的鲁棒性。
在行人再识别过程中,还需要更多富含语义信息的中层语义特征,比如发型、鞋子、衬衫等属性信息。因为在一段时间内行人的属性变化较小,对行人外观进行属性分析较为合理,这样不仅可以避免外部因素对行人再识别结果的影响,而且语义特征更切合人们的思维,贴近日常生活。
文献[8-9]研究了自然场景下的属性识别,提出可以通过概率模型来分析低层次属性,如条纹、格子。文献[10]定义了15种语义属性用来描述行人,包括衣着种类、发型、是否携带物品等,最后对选择的中级语义特征进行加权,避免了低层特征完全依赖特征统计,并且只能有限地区分行人视觉外观等影响。文献[11]提出将二进制属性嵌入连续低秩属性空间,利用共享信息来提高再识别准确性,使得语义属性具有更好的匹配能力。
深度学习通过对低层特征的学习,得到表示属性类别或特征的更高层特征。在网络模型训练过程中,随着若干卷积、汇合操作的堆叠,从各层得到的深度特征逐渐从泛化特征(如边缘、纹理等)过渡到中层属性特征(躯干、头部等模式),自动学习行人属性特征及其之间的关系。文献[12]基于卷积神经网络提取行人属性特征进行行人再识别,通过在VIPeR数据集上标注行人的衣着及与各项软生物特征相关的17个二进制属性,将其输入分类器进行行人属性学习。
目前基于属性的行人再识别方法多数通过建立深层次的模型,很少有对属性研究影响最多的缺失、误检等问题产生的原因,即行人姿态信息,进行详细研究,更鲜有对行人特有姿态信息加以学习、分析和利用。
2.1.1 行人再识别中的姿态
行人图像在视觉上的复杂性挑战,部分是由于行人姿态信息在实际场景中的变化导致的。因此,结合人体姿态信息对行人属性特征进行扩充描述,有利于对行人身份的判别。
在行人再识别领域中,多数姿态学习方式都基于局部信息,例如对人脸姿态进行估计[13]。文献[14]将姿态分为细粒度姿态和粗粒度姿态,如图1所示。细粒度姿态学习是将行人按照人体关节点划分定位,如图1(a)所示。粗粒度姿态学习是将行人按照姿态信息划分为前、后、侧3种视角,如图1(b)所示。
图1 行人姿态信息示意图
2.1.2 行人姿态特征提取
通常根据识别任务的场景需要选择合理的姿态信息类别。下面分别介绍针对细粒度姿态和粗粒度姿态的特征选择和提取模型。
在细粒度姿态学习过程中,将人体定义为14个关节点[15],通过级联卷积神经网络来获取关键点特征,将每个行人图像输入到网络中进行回归,每一个关节点都使用整个图像。将人体的姿态信息用14个人体关节点来表示,整个人体表示为如下向量:
本文以x表示图像,y表示该图像的标签,则yi表示该图像的第i个关节点的坐标。将最终检测到的细粒度姿态信息图表示为B=(bl,bw,bh),其中,bl表示关节点的位置,bw表示图像宽度,bh表示图像的高度。采用N(·)方法标准化图像中的所有关节点,即将坐标原点移到图像的中心位置,N(x,B)就是用B获取图像x的对应部分,并对B的每一个节点都进行标准化处理。
N(y,B)=(N(y1,B)T),N(y2,B)T,…,N(y14,B)T)
其中,fB是一个强映射函数。
y*=N-1(φ(N(x);θ))
对训练集进行标准化处理:
DN={N(x);N(y)|(x,y)∈D}
最终的模型通过损失函数计算,写为:
粗粒度姿态信息,通过网络对行人图像的姿态信息进行粗略检测,与原始的图像所提取的行人特征相融合。通过预训练姿态信息模型对目标行人数据集提取姿态信息,作为行人中层语义属性特征的标签之一,赋予行人更完善的语义属性,针对行人的视角变化、部分遮挡等问题,如图2所示的行人由于粗粒度姿态变化导致行人背包、Logo等属性缺失,从而造成的漏检或误检,进行了合理有效的解决。
图2 姿态对行人属性的影响
在行人再识别研究中,姿态信息的变化会导致行人属性的大量缺失,这会对目前基于行人属性的识别方法准确性产生较大的影响。此外,对人体的关键点定位所刻画出的人体关节点,更适用于行人姿态信息变化较大的识别,因为行人动作幅度大,变化多,有效信息难以截取。因此,针对这2种粒度的姿态特征,对行人再识别进行优化,具有实际意义。
2.2.1 属性划分
为了更有针对性地学习行人的属性特征,本文将行人的身体进行分割,通过相互重叠的划分方法,避免图像由于分割造成的属性缺失和不完全,这样有重叠的学习也有利于参数的交换。
本文选择在行人领域比较有区分度的属性,并根据属性的设定来标注预训练数据集和目标数据集。对于每一张行人图像,将具有该属性的标注为1,不具有该属性的标注为0。
将行人属性学习中的每一个串行独立网络设计为9层结构,分别为1个输入层、3个卷积层、3个子采样层、2个全连接层。将输出结果输入属性分类器,最终根据分类器所得结果进行概率计算。
行人属性类别的判定,需要通过属性-类别映射表对标注的行人属性和类别进行统计后生成。分配粗粒度属性A={a1,a2,…,am}和细粒度属性B={b1,b2,…,bn}2个分类器,利用所有属性进行训练,得到粗、细2种属性类别器。每个属性会通过后验概率公式计算,得出行人判定。
在属性-类别映射表中列出具有A类属性的概率zi以及具有B类属性的概率zj。因此,一个具有粗粒度属性k的最终概率和具有细粒度属性t的最终概率分别表示为:
其中,x表示行人图像,p(zi|Ak)表示属性与类别之间的概率关系,计算公式为:
通过对粗粒度属性和细粒度属性结果进行综合,得出粗粒度属性贡献值和细粒度属性贡献值β,进而做出最终的行人判别。结合属性-类别映射表以及后验属性概率分布[16],得出各个行人的概率:
p(z|x)=αp(zi|x)+βp(zj|x)
取上述计算得到的概率分布最大值作为行人样本最终的概率用以匹配行人:
2.2.2 并行化过程
本文根据卷积神经网络的特点以及行人属性粗、细粒度的划分,设计了一种行人分割结构,如图3所示。根据行人的34种属性,对行人图像进行标注。将行人图像分为5个部分,与原图像同时输入,对所有分块进行并行化训练。根据训练后的行人分块特征图,将每个分块对应的属性再并行输入相应的属性分类器进行分类训练。
图3 行人分割示意图
属性学习通过对行人原始图像及其相关联的分块图像进行训练,避免了全局特征中的局部属性缺失,将其融入到原始行人图像训练中,综合得出较好的属性分类结果。本文设计一种6层并行的框架,包含6个独立卷积神经网络,每个并行的分支网络结构独立且具有级联特性,从而提高行人再识别研究的识别准确性。
图4给出了本文的并行化结构,根据数据集中行人粗、细粒度属性将其分割为5个互相重叠的模块,将训练数据分割成5个子集,并将原图像也作为其中一个子集,从而提高参数的可靠性。为梯度下降算法设置1个主参数服务器和6个从节点进行参数交换,并将子集数据输入到各个节点。每个节点并行利用本地训练子集分批计算参数梯度,当本地的各个从节点参数梯度Δw计算完毕之后传输到主节点,并获取主节点目前的参数w,主节点接收到梯度值后,利用梯度值进行参数运算w′=w-ηΔw,并更新全局参数值。
图4 并行化结构示意图
主参数服务器是由多个图形处理器(Graphics Processing Unit,GPU)组成的集群,采用Between-graph模式进行数据并行。将训练的参数保存在参数服务器中,行人图像数据直接分块保存在各个计算从节点中,无需分发,对每个从节点计算其梯度变化,将需要更新的参数传递给主参数服务器。数据不分发模式,适用于本文划分好的行人分割图像数据,可以节省大量的时间。
为验证本文提出的基于姿态与并行化属性的方法有效性,实验在RAP[17]行人数据集上进行模型的预训练,获取行人姿态信息分类标签,最终在VIPeR[18]行人数据集上进行测试,并与其他方法的识别率进行对比验证。
RAP数据集通过26个摄像机,共采集了41 585个行人样本,每个样本都注明了72个属性以及遮挡、身体部位等信息。该数据集经过长期在购物中心收集行人图像,对所收集样本不仅标注了细粒度行人属性,还包含了行人的姿态信息。注释前、后、左、右4种类型的姿态信息视角,如果图像被严重遮挡,则不会对其进行注释。图像大小统一缩放为128像素×48像素的RGB图像。
VIPeR数据集包含了632个不同行人的图像,共有图像1 264张。该数据集采用2个摄像头进行拍摄,每个摄像头对一个行人只提供一张图像。图像拍摄历时数月,且拍照选择的光线、角度和行人姿态信息不同,可以更好地衡量行人再识别方法的有效性。在该数据集中,每个行人图像被标注了视角,图像大小统一缩放为128像素×48像素的RGB图像。
由于VIPeR数据集中的行人图像数据量较少,难以使网络训练充分,因此本文采用RAP数据集进行预训练。RAP数据集环境、背景因素、视点、遮挡和身体部位信息丰富且全面,可以有效提高模型的特征提取能力,通过微调也能在目标数据集上达到较好的效果。
本次实验的软硬件设置在Ubuntu 16.04版本的服务器集群上,计算机处理器配置为Intel Xeon E5-2630V4 10核/ 2.2 GHz/ 25 MB缓存/ 20线程,内存为Samsung 16 GB DDR4 2 400 MHz ECC REG(共128 GB),GPU计算卡是NVidia P100 16 GB,GPU加速版本是CUDA8.0。
将RAP数据集中图像大小不一的所有行人图像统一成实验所需要的规模,并对实验中需要的和原本数据集标注有误差的数据进行标签的修改,具有相应属性标签的标注为1,不具有以及被遮挡的都设置为0,并统计属性-类别映射表。在实验中,通过对RAP数据集中的行人样本图像进行训练,初始化学习率为0.001,迭代次数为1 000次,得到有效的姿态信息分类和属性分类模型。将该模型应用在目标数据集进行模型的微调,将数据集分为均等的两部分,一部分用于网络的训练,剩下的用于网络性能的测试。由于目标数据集图像数量较少,为使模型更加稳定,微调后的初始化学习率为0.001,迭代次数不变。
3.3.1 参数选择
本节实验所涉及的参数选择主要是对行人粗、细粒度属性和贡献值的选择。行人粗、细粒度属性和贡献值的选择,关系到对行人的识别率,但是有些属性对行人识别过程影响不大,反而会使模型产生冗余。通过对属性对应的行人图像数量进行统计,发现有一些属性虽然有较明显的特征,但是图像数量太少,难以达到训练需求,最终,针对已有文献对本文目标数据集的研究,选取了日常较为常见的34个属性(其中粗粒度属性有16个,细粒度属性有18个)。粗粒度属性有:性别、帽子、长发、短发、长袖、短袖、无袖、外套、上衣纹理、有Logo、长下装、短下装、下装纹理、背包、携带配饰、鞋;细粒度属性有:无发、盘发、马尾、长披发、齐肩发、不规则纹理、横条纹、竖条纹、长裤、长裙、短裤、短裙、双肩包、单肩包、手提包、靴子、单鞋、凉鞋。
行人属性粗、细粒度的贡献值,是两种粒度对于最终识别率的体现。贡献值越大,该粒度属性在最终的模型准确性中起到的作用也越大。由于α+β=1,本文取α∈{0.0,0.1,0.2,0.3,…,0.9,1.0}在预训练数据集和目标数据集上进行逐个实验,结果如图5所示。从图5可以看出,当α=0.6,β=0.4时,在预训练数据集RAP和目标数据集VIPeR上模型均获得最好的识别准确率。由于目标数据集行人图像数据少,模型鲁棒性不足,因此结果没有预训练结果好,但两者差距不大。
图5 不同α对应的识别准确率
3.3.2 网络模型
细粒度姿态学习就是对于给定的行人图像,将人体14个主体关节点位置作为行人姿势的细粒度表示。14个关节点位置分别为头部、颈部、左肩、右肩、左臂中间关节、右臂中间关节、左手、右手、左腿、右腿、左腿膝盖、右腿膝盖、左脚、右脚。为了获得关节点信息,本文使用现有的Deepcut[19]模型。在获取的行人姿态信息图像中,行人不同的姿势可能导致身体部位各个关节点位于图像的不同位置。如图6所示的细粒度姿态信息网络结构,针对14个具有身体代表性的关节点部分提取通道特征图,与行人整体关节点图像,共15个通道一起输入卷积神经网络中,对全身的姿态信息进行特征学习,获得姿态信息模型。通过姿态学习,对目标数据集的行人图像进行姿态信息标注,增大行人图像之间的类内差异。
图6 细粒度网络模型结构
本文将行人姿态信息呈现出的视角位置,作为行人的粗粒度姿态信息,其主要分为正、侧、背3种。粗粒度姿态学习就是通过对原始行人图像的全身姿态信息进行分类标签,然后输入到网络中进行训练,获得粗粒度姿态信息分类模型,将该模型用在目标数据集上,为目标数据集生成粗粒度属性标签,减少类间差异。该方法使用原始图像作为输入与图6模型进行对比。
本节实验结果与分析包括:在姿态学习中,粗粒度和细粒度模型在行人再识别上的不同效果;本文所提姿态与并行化属性学习的方法对属性分类的效果;最终行人再识别识别率的提升。
姿态学习的粗、细粒度模型的选择,通过姿态学习模型在预训练数据集上训练后,将训练完毕的模型放在目标数据集上进行实验。获得姿态信息分类的结果如图7和图8所示。可以看出,本文模型的正面识别率为79.5%,侧面识别率为67.8%,背面识别率为82.1%;粗粒度模型的正面识别率为68.7%,侧面识别率为58.6%,背面识别率为79.9%。显然,通过输入细粒度姿态信息,在每一姿态信息视角上都产生了较好的结果。
图7 本文模型各个姿态信息的识别率和损失
Fig.7 Recognition rate and loss of each attitude information of the proposed model
图8 粗粒度模型各个姿态信息的识别率和损失
Fig.8 Recognition rate and loss of each attitude information of coarse-grained model
本文采用交叉验证,将整个数据集分为不完全相同样本的训练集和测试集,重复实验10次并取10次实验的平均值作为实验结果。本文最终将细粒度姿态学习方式纳入到属性学习。通过姿态学习模型训练得到姿态信息分类器,将其用于对目标数据集进行姿态信息属性标记,可以显著提高一些被部分遮挡的属性的识别率,并且采用行人行走姿态信息视角的分类,使本文方法在行人属性分类的效果较好。将实验得到的属性分类结果与UCHA-PR[16]和OAR[17]在相同或相似属性上获得的分类结果进行对比,部分结果如表1所示。从表1可以看出,相比传统的将低层次特征作为属性分类器输入的OAR方法,以及通过CAE训练提取的特征训练属性分类器的UCHA-PR方法,本文方法对各个属性的分类准确率均有一定程度的提高,尤其是在手提包、双肩包、短发、长发等由于姿态信息变换容易导致属性缺失或遮挡的属性上,优势尤为明显。
表1 部分相同或相似属性的准确率对比
Table 1 Accuracy comparison of some identical or similar attributes
%
为证明本文方法在行人再识别过程中的有效性,使用累积匹配(Cumlative Matching Characteristic,CMC)曲线作为实验的主要评价标准。图9为在CMC标准下,不同行人再识别方法从Rank-1到Rank-25的准确率,可见本文方法与已有方法[10,16,20-24]相比,其识别准确率明显提高。在VIPeR数据集上当Rank-25时,本文方法的准确率可达到90%,这是因为该方法基于行人属性、姿态信息,丰富了行人的语义表述。此外,本文通过对行人属性学习的并行化过程,使得在整个模型训练中,准确率的误差基本可以忽略。
图9 本文方法与其他方法在CMC曲线中的比较结果
Fig.9 Comparison results of this method and other methods in CMC curve
综上所述,虽然数据集中的行人图片背景比较复杂,尤其上半身区域对应背景中常有树木、建筑等干扰图像的识别,且行人图像数量较小,但是将本文方法应用于目标数据集,仍然取得了较好的结果。
本文提出一种基于姿态的并行化属性学习模型。通过提取行人身体结构中部分关节点图像和行人整体关节点图像作为输入,进行细粒度姿态特征的学习。在此基础上,对比粗、细粒度的行人姿态输入,获得模型在目标数据集上的姿态分类效果,并选择合适的姿态粒度作为最终姿态学习模型的输入,对行人属性进行补充。此外,利用卷积神经网络对行人的多样属性进行学习,避免由于姿态导致的属性误检和漏检,提高了行人再识别准确率。下一步尝试将底层视觉特征(如颜色、轮廓等)与本文方法相结合,进一步提高该方法对行人的筛选能力。