改进型深度迁移学习的跨镜行人追踪算法
2021-05-26李博
李 博
重庆警察学院 刑事科学技术系,重庆401331
基于监控视频资料的客观性、完整性、连贯性、实时性、可回溯性、不可避免性等特点和优势,视频监控已成为实现社会公共安全的最重要技术手段之一,广泛应用于社会各领域。基于计算机视觉技术的监控信息智能化处理已成为视频监控系统发展应用的必然趋势。其中,具有人脸识别功能的视频监控已取得广泛应用,然而在实际监控场景中,由于成像设备自身硬件因素,复杂的成像环境因素,视频信号压缩编码、通信传输、存储等环节出现的失真、丢失、干扰等因素,使得视频往往呈现复杂的质量问题,且摄像头更多捕获的是行人的头顶、侧脸或全身影像,往往无法抓拍到行人清晰的正面照,难以达到直接检测和识别目标人脸的条件,直接和单纯依靠人脸识别技术的应用往往难以发挥作用,从而造成大量有价值的视频资料被闲置。作为人脸识别技术的重要补充,跨镜行人追踪(Person Re-Identification,Re-ID,又称为行人重识别、行人再识别)技术应运而生,主要解决跨摄像头、跨场景下行人的识别与检索。该技术能够根据行人的穿着、体态、发型、运动特征,以及相关的交通工具、携带物品等信息认知行人,在实际应用中对无法获取清晰人脸的行人进行跨摄像头连续跟踪,增强数据的时空连续性,从而有效解决跨时空、跨设备、跨场景的视频人像目标检索、定位、轨迹跟踪,从而成为计算机视觉、人工智能研究的重要方向,更成为智能安防、智能寻人、智能商业等应用领域中的重要技术。
1 跨镜行人追踪算法现状分析
跨镜行人追踪解决的主要内容包括行人检测、行人分割、骨架关键点检测、行人跟踪、动作识别、行人属性结构化、跨镜追踪及行人再识别。不同于脸部识别等其他视觉识别问题,运用深度学习算法解决跨镜行人追踪仅仅取得了有限的成功,通常在小数据集上(如VIPeR[1])表现较好,而在大型数据集上(如Μarket1501[2]),跨镜行人追踪效果仅取得了较小的提升。缺少大量标记训练集对模型进行学习训练是导致这一问题的重要原因。在已经公布的跨镜行人追踪数据集上,数据集的大小也非常有限:CUHΚ03 数据集[3]有1 360 个标记样本,Μarket1501有1 501个。相比之下,用于脸部识别的LFW数据集[4]有5 749个标记样本。面对不充分的训练样本,学习从一个更大的数据集上迁移特征表达变得至关重要,迁移学习成为解决这一困境的重要技术方向。
对于任一个跨镜行人追踪数据集,迁移学习可以通过训练较大的数据资源获得更好效果。ImageNet 数据集[5]包括了上千物体类别的上万张图像,常被作为模型预训练的辅助数据集用于视觉识别任务中。尽管如此,从ImageNet到跨镜行人追踪数据集的迁移学习仍然存在诸多阻碍:ImageNet的物体分类任务不同于跨镜行人追踪的验证问题,跨镜行人追踪模型的输入是监视视频中行人的检测图像,存在差别较大的宽高比和较低的目标分辨率。因此跨镜行人追踪模型与在ImageNet上出色的分类模型,在网络结构上存在较大差异,比如,有更小的滤波器,网络结构更浅,这些模型是从零开始训练跨镜行人追踪数据集,并不适合从ImageNet 上做迁移学习。针对训练样本不足的问题,研究如何从一个更大的数据集上进行迁移学习特征表达是深度跨镜行人追踪模型的实现难点。
为此,本文以一个已在大型数据集上训练好的模型作为基础网络结构,针对跨镜行人追踪模型,修改最后的损失度量层,优化三元组损失函数,再做两步微调,使得到的新模型能够适应新的数据集。该方法优势在于利用先进的现有网络模型,不必完全从零开始训练模型,能够在较少的迭代次数中得到比较良好的效果,提高了实验效率。
2 基于改进深度迁移学习的跨镜行人追踪
本文改进了深度跨镜行人追踪的网络结构,提出针对从大数据集ImageNet到跨镜行人追踪数据集迁移的特征表示,提出在ImageNet 上优化标准的残差网络(ResNet)层结构,同时基于三元组训练网络框架,改进三元组损失函数,进一步提高学习特征的判别力。相比传统算法中只要求类内特征距离小于类间距离的三元组损失函数,改进的损失函数进一步要求类内的特征距离小于预设的阈值,从而保证特征空间形成的簇不会太大,更有利于模型的优化。在训练目标阶段,与现存的深度跨镜行人追踪模型相比,本文提出了分两步微调的策略,进一步提高了传统卷积层一步微调策略的效果。
本文提出的深度跨镜行人追踪模型的总体网络结构如图1所示。网络主要分为两部分:传统的ResNet-50模型[6]和针对目标任务的改进的三元组损失层。
图1 三元组训练网络框架
在三元组样本训练网络[7-8]中,来自第i 个三元组的三张图像表示为Ii=<Iio,Ii+,Ii->,其中Iio和Ii+来自同一行人,Ii-来自另一行人。通过三个共享参数集w,如权重、偏置等的卷积神经网络,将三元组Ii从原始图像空间映射到一个学习的特征空间,Ii表示为ϕw( Ii)=<ϕw( Iio),ϕw( Ii+),ϕw( Ii-)>。每一个图中的卷积神经网络是一个多通道卷积神经网络模型,能够同时提取行人整个身体和身体局部特征。当卷积神经网络模型被改进的三元组损失函数训练时,学习的特征空间满足ϕw( Iio)和ϕw( Ii+)之间的距离不仅小于ϕw( Iio)和ϕw( Ii-)之间的距离,同时小于一个预设的阈值。改进损失函数的目的是在学习到的特征空间中,拉近同一目标行人的距离,加大不同行人间的距离。
2.1 ResNet-50预训练模型
由于训练卷积神经网络需要大量数据,本文使用在ImageNet 上训练好的ResNet-50 模型[6]作为基础网络来做预训练。与其他网络不同,残差网络增加了一定层数之后,并未出现性能退化,反而性能有了一定程度的提升,残差网络有着更低的收敛损失,也没有产生过高的过拟合问题。残差网络在浅层时并未表现出更多优势,说明残差网络必须要配合较深的深度才能发挥其结构优势,与“平整”网络拉开性能差距。
传统的残差结构单元中残差的表达式可统一写为y=F( x,{Wi} )+Wsx,其中x 和y 分别是层的输入和输出向量。函数F( x,{Wi} )表示要学习的残差映射,Ws是方矩阵,如图2 中的例子[6],当残差用于两层全连接层的时候,F=W2σ(W1x ),其中σ 表示修正线性单元(Rectified Linear Unit,ReLU),通过简化标记偏置被省略。残差单元的输出由多个卷积层级联的输出和输入元素间相加,保证卷积层输出和输入元素维度相同,再经过ReLU 激活后得到,将这种结构级联起来,就得到了ResNet。
图2 残差网络的结构单元
为克服训练模型中产生的过拟合现象,删除了原网络结构中的softmax层,增加了新的dropout策略。即针对三元组结构,同一批次的图像将随机失活相同的随机节点,调整过的模型将继承ResNet-50 模型卷积层的参数,而后面的层将在初始化后重新训练权重和偏置,这样可以在数据量较小的情况下,训练深层卷积神经网络。
2.2 损失层优化设计
2.2.1 改进的三元组损失函数
本文使用三元组例子训练网络结构,得到一个三元组Ii=<Iio,Ii+,Ii->,这个网络结构将Ii映射到一个特征学习空间,得到ϕw( Ii)=<ϕw( Iio),ϕw( Ii+),ϕw( Ii-)>,三元组图像Iio、Ii+、Ii-之间的相似度使用L2 范式ϕw( Iio)、ϕw( Ii+)、ϕw( Ii-)距离度量。原始的三元组损失函数要求距离( ϕw( Iio),ϕw( Ii-))比( ϕw( Iio),ϕw( Ii+))大于一个预设值,即满足以下约束:
式中τ1为负数。由于损失函数没有设定( ϕw( Iio),ϕw( Ii+))应该有多近,属于同一个行人的实例在学习的特征空间中,可能有一个相对较大的类内距离来构成一个巨大的簇。显然,这不是理想的结果,这必然会降低跨镜行人追踪的表现。
基于以上的问题,本文算法在原始的三元组损失函数中增加了一个新的限定条件,从而使得( ϕw( Iio),ϕw( Ii+))之间的距离要小于第二个边缘值τ2,且τ2将远小于|τ1|。将这个声明转化成等式,得到:
这个改进的损失函数目标使得在学习特征空间中,将同一个人的实例拉得更近,同时将来自不同人的实例推得更远。
综上,本文改进的三元组损失函数定义为:
其中,N 是三元组训练样本的数量,β 是平衡类间和类内的约束权重,距离函数d( ⋅,⋅)是L2范式距离:
2.2.2 训练算法
结合改进的三元组损失函数,本文使用随机梯度下降(Stochastic Gradient Descent,SGD)算法来训练提出的卷积神经网络结构模型。式(3)的导数计算如下:
根据dn( Iio,Ii+,Ii-,w )和dp( Iio,Ii+,w )的定义,可以得到它们的梯度为:
算法1 基于三元组的随机梯度下降算法
2.3 跨镜行人追踪的深度迁移学习
2.3.1 阶段性的迁移学习
在现存的跨镜行人追踪研究中,基于有监督学习的样本存在两种情况:超过1 000 个目标身份的跨镜行人追踪数据集,如CUHΚ03和Μarket1501,以及少于1 000个身份的小数据集,如VIPeR。现有深度跨镜行人追踪模型通常针对大型数据集从头训练,没有使用迁移学习,而对于小数据集,模型通常在大型数据集上做预训练,再在小的目标数据集上做微调,称其为基于单步微调策略的单阶段迁移学习方法。对于一个大型的跨镜行人追踪数据集,迁移学习应是阶段性的,如ImageNet到跨镜行人追踪数据集,而二阶段的迁移学习是用于目标数据集较小时,如ImageNet 到大的跨镜行人追踪数据集再到小的跨镜行人追踪数据集。在每个阶段,本文提出了一个分两步微调的策略,对比卷积层的单步微调能更高效地进行迁移学习。
2.3.2 分两步微调
分两步微调策略基于两阶段的小数据集,假设有一个大的跨镜行人追踪数据集源S 和一个小的目标数据集T ,分别有N 和N 独特的行人身份标识。对于一个原始的用S 训练的模型,目标是从S 到T 迁移学习特征表达。原始网络的Softmax ID 分类层不能被再利用,因为N 和N 的身份没有交叠。原始的N 节点的Softmax层因此被一个三元组损失层代替。在微调的第一步,首先冻结其他所有层,只训练新加入的三元组损失层和修改原始参数的全连接层。冻结网络的其他部分对这个阶段的训练非常重要:若不冻结其他层,损失层和全连接层的随机初始化的参数将会反传不好的梯度到基础的网络,“垃圾梯度”不利于模型的改进。在损失层和全连接层完全训练好,使得从S 学到的特征可以很好地验证身份标识之后。微调的第二步是使用目标数据集T ,同时微调损失层、全连接层和其他所有网络部分。
3 实验分析
3.1 数据集和基本设置
本文在5个跨镜行人追踪数据集上进行对比实验,其中包括两个大的数据集和三个小的数据集,每个数据集中每个行人有多张由不同或相同的摄像机捕捉的图像。
CUHΚ03数据集[3]:包括了1 467个行人的14 096张图像。由10个摄像头采集自5个不同的场景,组成5对。数据集分别提供了标准的200个训练和测试切片,100个被随机选择的身份作为测试数据,另外100 个用来评估,剩余1 267个作为训练样本。在训练和测试过程中,对有两个摄像机的数据集,随机选择一张来自摄像机A的图像作为测试图像,一张来自同一个行人的由摄像机B拍摄的图像作为训练图像。对于多摄像机的数据集,一张被选择作为测试图像,剩余的作为训练图像。训练图像集对于每一个行人包含一张图像。
Μarket1501数据集[2]:包含了32 668张检测图像,采集自清华大学的6个不同的摄像头。
VIPeR 数据集[1]:包含两个摄像机的632 个行人,一个行人的每一对图像是在不同的视角、姿势、光照条件下由两个摄像机拍摄得到。由于其较大的成像差异和图像变化,成为跨镜行人追踪课题最具有挑战性的数据集之一。
PRID2011数据集[9]:由两个静态监视摄像机记录得到,摄像机A 和B 分别包含385 和749 个行人,其中200个行人在两个视角中都有出现。
CUHΚ01数据集[10]:包含在校园环境中由两个不同摄像机视角拍摄的971 个行人。摄像机A 拍摄一个行人的正面或背面视角,摄像机B 拍摄行人的侧面视角,每个行人在两个摄像机中分别有4张图像。
实验中使用累计匹配特征(Cumulated Μatching Characteristics,CΜC)来评估跨镜行人追踪方法。在CΜC下,跨镜行人追踪被视为一个排序问题,对于给定的一张或一组目标图片,将候选数据库中的图片按照与目标图片的相似度进行排序。CMC(k)表示的意思是,匹配正确的图片在相似度从大到小排序序列的前k 个(包括第k 个)中出现的概率。Rank1 表示在候选数据库中,对图片的相似度从大到小排序后,匹配正确的图片出现在第一位的数量占总个数的百分比,Rank5表示匹配正确的图片出现在前5 位的数量占总个数的百分比,以此类推。从而可知,随着候选数据库的扩大,能匹配正确的行人图片难度不断提高,Rank1的值下降。因而,在理想的情况下,Rank1 值越大,追踪匹配准确率越好。
3.2 实验参数
实验使用Caffe 深度学习框架[11]来实现本文方法。应用三元组损失计算方法时,随机选择一张图像,再从另一个摄像头随机选择一张相匹配的图像作为一组图片,组成正样本对,再随机选择另一个行人,重复操作,并以此为基本单位的多组图片组成一个小批次输入到网络当中。实验中每个批次16 张图片,在每个小批次中随机选择8个行人,每个行人2张图片,因而每个批次中将得到112个三元组。
每组图片在经过ResNet-50 基本网络的处理后,得到两个1 000 维度的向量所表示的特征。原始的学习率设置为0.001,每迭代40 000 次将乘以0.1。对于从ImageNet 到大型跨镜行人追踪数据集(CUHΚ03 和Μarket1501)的分两步迁移学习,每一步网络分别被训练迭代约20 000~150 000次。
为减少过拟合问题,在跨镜行人追踪数据集上进行数据扩大,对于每一张训练图像,围绕图片的中心进行二维的随机变化以得到5张扩充图像。
实验中,式(3)的参数τ1,τ2,β 被分别设置成-1,0.01,0.002。
3.3 实验结果
3.3.1 损失函数选择实验
为更客观验证本文对三元损失函数的改进,在实验中结合了不同的损失函数:Softmax ID 分类(Softmax ID Classification,SID)、成对验证(Pairwise Verification,PV)、三元组损失(Triplet Loss,TL),以及它们的组合共7种方法。这些方法都曾被应用到现存的跨镜行人追踪模型中,仅SID 未和PV 联合过。使用在ImageNet 上预训练的基本网络,然后在Μarket1501上做测试。
表1的实验结果表明:在单独使用时,3个函数性能相差不大,SID 较优;当SID 和PV 或者TL 联合使用时,表现提升明显。但当没有SID,PV 和TL 的结合比单个函数效果降低。可见,从ImageNet上迁移信息,损失函数的设计是非常关键的。
表1 在Μarket1501数据集上比较不同损失函数的选择 %
3.3.2 两阶段微调对比实验
首先对本文采用的两阶段微调方法的效果进行对比实验。
表2实验结果显示了在VIPeR数据集上,本文进行分两阶段微调效果明显,在Rank1、Rank5、Rank10、Rank20上都有显著的提升。
表2 在VIPeR数据集上比较两种微调方法 %
3.3.3 在大数据集上的实验结果
本文实验与近年提出的DLC、XQDA、ΜLAPG、DNS、Siamese LSTΜ、Gated S-CNN、CAN 等几种典型算法进行比较,用Rank1 准确度作为评估指标。在CUHΚ03 和Μarket1501 两个大数据集上,在ImageNet上做分两步微调预训练,本文模型结果与其他深度跨镜行人追踪模型和没有深度网络的跨镜行人追踪模型分别比较。
实验结果如表3 所示,本文模型表现优异,在两个大的数据集上,基于深度学习的结果最好。值得注意的是,对比算法中基于人为设计的特征表示模型优势不明显。这是由于本文模型选择的基础网络(ResNet-50)和训练的目标(三元组损失函数),可以迁移从ImageNet上学习到的特征表示,相反,比较的模型中没有迁移从其他辅助资源上学习得到的信息。
表3 在CUHΚ03和Μarket1501数据集上的Rank1对比%
3.3.4 在小数据集上的实验结果
在3 个小的数据集上,用两阶段的微调策略,如ImageNet到CUHΚ03数据集和Μarket1501,再到VIPeR或PRID 或CUHΚ01,各种算法的比较结果如表4 所示。值得注意的是,比较算法中,基于模型手动提取特征的方法要么只有一种特征,要么使用多个基本网络进行特征融合,其他深度学习模型虽然使用了迁移学习,但都是单阶段和单步微调。
表4 在VIPeR、PRID和CUHΚ01数据集上的Rank1对比%
实验结果可以看出,本文模型达到了较好效果,尤其随着样本数的增加,如在CUHΚ01 数据集上,本文算法的优势提升更明显。
4 结束语
相比于人脸识别,跨镜行人追踪在实际应用场景下的数据更加复杂,由于不同成像设备之间的差异,同时行人兼具刚性和柔性的特性,外观易受穿着、尺度、遮挡、姿态和视角等影响,对跨镜追踪算法提出了更严苛要求,有待从底层特征选择融合等不同视角开展深度研究[27-28]。本文通过深度迁移学习,研究在跨镜行人追踪问题中标记样本数量过小的问题,如何将其他经典的网络结构作为基础网络,再做预处理,如何对跨镜行人追踪的结果合理排序,如何进一步提高算法的精度等问题有待进一步研究。