2. 数字福建大数据安全技术研究所, 福州 350117;
3. 闽江学院 福建省信息处理与智能控制重点实验室, 福州 350108
2. Digital Fujian Big Data Security Technology Institute, Fuzhou 350117, China;
3. Fujian Provincial Key Laboratory of Information Processing and Intelligent Control, Minjiang University, Fuzhou 350108, China
行人重识别(Person Re-Identification, Re-Id)主要是指从视频监控系统中找到特定的行人目标, 根据行人诸如衣着、姿势、发型、外在装饰等特征判定是否为同一人. 自从2006年CVPR (IEEE Conference on Computer Vision and Pattern Recognition)会议首次提出行人重识别[1]的概念后, 越来越多研究者投入到该领域的研究[2]. 行人重识别在实际场景中判断时, 存在外在环境、行人姿态、衣着等多方面特征的多变性影响, 从而导致在使用视频图像中提取的特征进行相似度的判定难度很大, 所以行人重识别仍是充满挑战和亟待研究的热点课题.
行人重识别主要分为两大部分: 特征提取和度量学习[3]. 一是对于行人视频中的帧图像进行行人检测和特征提取; 二是利用提取的特征进行度量学习, 对目标与行人之间的相似性进行度量. 卷积神经网络是深度学习在计算机视觉领域最具代表性的模型之一, 可以直接输入原图像提取特征的特点, 从而可以避免复杂的预处理过程, 进而提高识别效率. 结合深度学习, 诸多学者特征提取和度量学习方面提出了许多新型的行人再辨识方法. 如Liao等人[4]将HSV颜色直方图和SILTP (Scale Invariant Local Ternary Patter)纹理特征描述子联合起来作为度量学习的特征描述子, 其经过最大池化后更加稳定, 此外他们还提出跨视角二次判别(Cross-view Quadratic Discriminant Analysis, XQDA)一种新的度量学习方法; Hinton等人[5]提出在CNN中应用Dropout算法[6], 可以有效降低过拟合现象发生概率. 同时, Siamese模型[7]能有效将特征提取和度量学习融合, 统一进行训练, 以显著提高识别效率. Varior等[8, 9]在改进型循环神经网络(Recurrent Neural Networks, RNN)长短期记忆网络(Long Short-Term Memory, LSTM)[10]基础上, 利用其可对视频序列进行处理且具有记忆特征信息的特性, 将其和孪生网络结合进行识别, 可以显著提高重识别效率和检测准确率. 上述方法均在不同程度上对CNN作了改进, 比如将特征提取和度量学习相结合, 或者将Siamese和LSTM相结合, 但是仍然存在一些问题. 同时, 由于各自所采用的数据集样本数量不一, 训练出来的模型也大大不同, 使得识别的准确率有所差异、泛化能力不强.
结合Siamese网络, 本文提出了一种改进的行人重识别方法. 首先采用Dropout算法改进CNN神经网络的全连接层, 以降低过拟合发生概率. 之后利用两个权值共享的CNN神经网络的Siamese网络, 对输入的两张图片作特征提取. 对提取的图像特征使用马氏距离作为相似度匹配的度量指标, 并输出相应图片对的相似度, 最后在Market-1501测试集上进行测试,实验结果表明, 提出的算法在一定程度上提高了行人重识别的性能.
1 改进的CNN方法 1.1 提出的算法总体框架基于上述分析, 提出一种基于Siamese网络的Re-Id算法. 其总体框架如下: 首先在CNN神经网络的全连接层加入Dropout算法, 对神经元的激活值设置停止工作的概率, 改变原来每个神经元顺次连接的结构, 达到连接随机稀疏化的效果, 降低网络的过拟合现象发生率. 再以孪生网络结构为基础, 构建由两个完全相同且参数共享的子网络组成的倒V型结构(包含两个输入和一个输出) 分别用来提取两个行人图片特征并输出相似度度量结果, 此外该并行网络可以同步对输入图片提取特征. 最后, 通过求取马氏距离的算法, 计算输入图像对之间的匹配相似度.
1.2 基于Dropout算法改进的CNN 1.2.1 Dropout算法过拟合是在神经网络模型训练学习过程中一个亟待解决的问题. 在CNN神经网络中运用Dropout算法则可以有效降低模型过拟合发生概率. 具体体现在训练过程中加入Dropout平均稀疏模型间的组合[11], 忽略一般的隐层节点, 从而减少神经网络节点间的相互作用和联结匹配, 减缓过拟合, 可以使行人重识别的准确性得到了较大的提升.
Dropout就是让一些神经元以一定概率停止工作, 从而增强神经网络模型的鲁棒性, 降低网络过拟合现象发生率. 图1(a)为全连接时的神经网络模型, 而图1(b)为加入Dropout后的网络模型示意图. 可以看出全连接情况下, 神经元间进行无间断的连接, 而加入Dropout后神经元间变成间断且稀疏的连接结构.
1.2.2 基于Dropout算法的CNN模型改进
利用Dropout改进CNN的流程如图2所示. 首先利用快速排序算法Sort(a, b, greater)对各个神经节点输入数组B进行降序排序, 排序后记为ai; 然后根据排序由大到小, 利用伯努利概率分布函数, 对节点有条件的分配不同隐藏率(为了简化结构, 加快识别速度, 在图2中, 将所有节点分成了3个部分, 按分配顺序设置不同的隐藏率). 式(1)如下, 其中n为神经元数量, ratio为初始设置的稀疏值.
$Bernoulli(p) = \left\{ \begin{array}{l} P = \min \{ 1 - {{ratio}} + \delta ,1\} \\ P = 1 - ratio \\ P = \max \{ 1 - {\rm{ratio}} - \delta ,0\} \\ \end{array} \right.\begin{array}{*{20}{c}} {i > n/3} \\ \!\!\!\!\! \!\!\!\!\! {n/3 \le i < (2{{n}})/3} \\ \!\!\!\!\!{(2{{n}})/3 \le {{i}} < {{n}}} \end{array}$ | (1) |
根据公式(1)生成的结果, 再利用公式
1.3 基于Siamese网络的CNN结构改进
Siamese Network也称孪生网络, 是一种相似性度量方法. 它从输入行人图像中提取特征, 再利用特征向量计算相似度.
如图3所示, Siamese网络的“连体”是通过权值共享来完成的. 孪生神经网络确定两个输入Input1和Input2, 将两个输入分别送入两个神经网络Network1和Network2, 再将对应的输入映射到新的空间, 形成输入行人图像在新的空间中的表示. 最后, 通过在目标空间应用距离度量算法进行相似度损失(Loss)的计算, 比较两个输入的相似度.
本算法具体实现过程中, 两个子网络Network(1, 2)都采用ResNet-50[6]预训练网络作特征提取. 首先加载数据集, 用ImageNet数据集预训练过的模型ResNet-50进行参数微调以适应行人重识别的任务, 训练过程中两个卷积模型权值共享. 利用Siamese网络框架将两种卷积网络组合起来并且参数共享, 不仅可以对输入的两个行人图像提取特征进行相似度计算[11], 判断是否为同一人, 还可以用于分类和特征学习.
1.4 马氏距离度量学习算法为了提高训练的效率和识别的准确率, 需对全连接层进行替换变更. 由实验设定卷积网络参数, 对输入图像作卷积进行提取特征, 计算已提取的特征向量间的马氏距离进行相似度匹配, 以判断是否为同一行人.
马氏距离度量学习算法[12]是一种基于马氏距离的线性学习算法, 通过在样本集中寻找矩阵, 计算两个输入之间的马氏距离, 以作为样本相似度的评价指标. 在学习过程中, 对样本间距离进行线性变换, 用式(2)作为损失函数:
$W_m^* = \arg \mathop {\max }\limits_{W_m^{\rm T}Wm = l} \frac{{tr({{W}}_m^{\rm T}{{{S}}_b}{{{W}}_m})}}{{tr({{W}}_{{m}}^{\rm T}{{{S}}_w}{{{W}}_m})}}$ | (2) |
在模型设计过程中, 考虑到姿势、光照、遮挡等多方面原因[13], 计算马氏距离时利用局部线性嵌入, 对特征相似性度量施加一定程度的限制. 此外, CNN网络提取的特征还需要经过最大池化实现降维, 一定程度降低整个网络的计算复杂度. 降维后的特征向量用来计算检索图像对的马氏距离, 同时作为在此情况下最小的逼近误差. 利用最大似然估计求最优解, 即:
$W_m^{({{i}})} = \frac{{\displaystyle\sum\limits_{m = 1}^k {{{({{Q}}_{jm}^{({{i}})})}^{ - 1}}} }}{{\displaystyle\sum\limits_{p = 1}^k {\displaystyle\sum\limits_{q = 1}^k {{{({{Q}}_{qp}^{({{i}})})}^{ - 1}}} } }}$ | (3) |
求解过程中要保持在低位空间重构数据, 满足式(4)的限制条件:
$\frac{1}{N}\sum\limits_{i = 1}^N {{y_i}y_i^{\rm T} = I} $ | (4) |
按升序排序的特征值对应的特征向量, 求得:
$Y = [{{{y}}_1}{{{y}}_2}, \cdots, {{{y}}_N}] = \sqrt N {[{{{q}}_1}{q_2}, \cdots, {q_{{d_2}}}]^{\rm T}}$ | (5) |
计算梯度前, 先按照式(6)计算误差:
$\delta _{ij}^{({{M}})} = g'({{{\textit{z}}}}){l_{ij}}({{h}}_i^{({{M}})} - \delta _i^{({{M}})}) \odot s'({{{\textit{z}}}}_i^{({{M}})})$ | (6) |
之后按照式(7)和式(8)计算梯度值:
$\frac{{\partial J}}{{\partial {W^{({{m}})}}}} = \sum\limits_{i,j} {(\delta _{ij}^{({{m}})}h_i^{{{({{m}} - 1)}^{\rm T}}} + \delta _{ji}^{({{m}})}h_i^{{{({{m}} - 1)}^{\rm T}}})} $ | (7) |
$\frac{{\partial J}}{{\partial {b^{({{m}})}}}} = \sum\limits_{i,j} {(\delta _{ij}^{({{m}})} + \delta _{ji}^{({{m}})})} $ | (8) |
在进行行人输入图像对相似度匹配验证时, 先以高维特征为基础计算样本间的马氏距离, 然后计算行人图像对的验证损失. 最后的实验结果表明, 本文所提出的算法确实可以在一定程度上提高行人重识别的精度.
2 实验检测结果分析本文所提出的算法利用Pytorch框架实现, 所采用主要扩展库包括: Numpy, Scipy, Pandas, Matplotlib等.
2.1 数据集实验使用清华大学于2015年公开的Person Re-id数据集: Market-1501[12]. Market-1501数据集中的行人图像是在夏季清华大学校园中采集, 总共有1501个行人、32 668个已标注的行人矩形框. 训练集采集了751人的数据, 共12 936张图像; 测试集采集了750人的数据, 共19 732张图像, 平均每个人有26.3张测试数据.
2.2 实验结果输入大小为256×128×3的样本, 经过神经网络提取特征, 输出大小为1×1×2048的特征向量. 最后训练参数设置为: 一次训练的样本数目是128, 最大迭代次数70, 学习率3e–4. 同时在迭代过程中, 利用随机梯度下降算法对模型参数进行更新.
最后对模型进行测试, 输入Market-1501数据集的测试数据并验证模型是否有效, Rank-1、mAP指标如表1所示. 其中, Rank-i为搜索结果中最靠前(置信度最高)的i张图有正确结果的概率. AP为PR (Precision-Recall, 查准率和查全率)曲线下的面积, mAP(如式(9)所示)是对所有类的AP值取平均, 其更加全面衡量ReId算法效果的指标; mAP要求将检索图片与被检索图片都匹配正确.
${{mAP}} = \frac{1}{{\left| {{Q_{{R}}}} \right|}}\sum\limits_{q \in \left| {{Q_{{R}}}} \right|} {AP(q{\rm{)}}} $ | (9) |
本文提出的算法在Market1501数据库上的Rank-1为83.2%, Rank-5为82.2, mAP为69.2%, 与Verif-Identi[14]、GAN[15]、DNS[16]等算法相比具有一定的优势.
实际应用时输入检索图像, 模型将输入的行人图像与图库的图像进行相似度匹配, 输出显示可能是同一行人的检索结果, 如图4所示, 绿色边框图像代表识别结果为同一个人的行人, 红色边框图像代表识别结果不是同一个人的行人.
从表1可以看出, 算法在本系统的执行运行时间相比于文献[15,16]的算法用时更短. 主要原因在于虽然在训练模型上耗时较长, 但传输用时和提取特征用时更短. 从实验结果图可以看到, 识别正确率较高, 但仍存在错误识别的情况, 本系统仍需要训练更多的数据集以完善模型, 提高正确率.
3 结语本文提出一种改进CNN神经网络进行行人重识别的方法, 先在CNN神经网络中加入Dropout算法降低过拟合发生概率, 再利用改进后的神经网络与Siamese网络框架融合的神经网络对图片进行特征提取, 实验结果表明识别准确率显著提高. 在实验过程中, 基于现有设备的条件, 我们仅在现有的数据集中选择了Market-1501数据集进行实验,因此模型的泛化和结果的准确率有一定的误差.希望在接下来的学习过程中, 可以改进模型结构增加数据量, 提高模型的泛化性.
[1] |
Gheissari N, Sebastian TB, Hartley R. Person reidentification using spatiotemporal appearance. Proceedings of 2006 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. New York, NY, USA. 2006. 1528–1535.
|
[2] |
熊炜, 冯川, 熊子婕, 等. 基于CNN的改进行人重识别技术. 计算机工程与科学, 2019, 41(4): 665. DOI:10.3969/j.issn.1007-130X.2019.04.013 |
[3] |
Zheng L, Yang Y, Hauptmann AG. Person re-identification: Past, present and future. arXiv: 1610.02984, 2016.
|
[4] |
Liao SC, Hu Y, Zhu XY, et al. Person re-identification by local maximal occurrence representation and metric learning. Proceedings of 2005 IEEE Conference on Computer Vision and Pattern Recognition. Boston, MA, USA. 2015. 2197–2206.
|
[5] |
Krizhevsky A, Sutskever I, Hinton GE. ImageNet classification with deep convolutional neural networks. Proceedings of the 25th International Conference on Neural Information Processing Systems. Lake Tahoe, NV, USA. 2012. 1097–1105.
|
[6] |
Srivastava N, Hinton G, Krizhevsky A, et al. Dropout: A simple way to prevent neural networks from overfitting. The Journal Machine Learning Research, 2014, 15(1): 1929-1958. |
[7] |
Zagoruyko S, Komodakis N. Learning to compare image patches via convolutional neural networks. Proceedings of 2015 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Boston, MA, USA. 2015. 4353–4361.
|
[8] |
Varior RR, Shuai B, Lu JW, et al. A Siamese long short-term memory architecture for human re-identification. Proceedings of the 14th European Conference on Computer Vision (ECCV). Amsterdam, The Netherlands. 2016. 135–153.
|
[9] |
Varior RR, Haloi M, Wang G. Gated Siamese convolutional neural network architecture for human re-identification. Proceedings of the 14th European Conference on Computer Vision (ECCV). Amsterdam, The Netherlands. 2016. 791–808.
|
[10] |
Hochreiter S, Schmidhuber J. Long short-term memory. Neural Computation, 1997, 9(8): 1735-1780. DOI:10.1162/neco.1997.9.8.1735 |
[11] |
Zheng L, Shen LY, Tian L, et al. Scalable person re-identification: A benchmark. Proceedings of 2015 IEEE International Conference on Computer Vision (ICCV). Santiago, Chile. 2015. 1116–1124.
|
[12] |
张兴福, 黄少滨. 基于马氏距离度量的局部线性嵌入算法. 模式识别与人工智能, 2012, 25(2): 318-324. DOI:10.3969/j.issn.1003-6059.2012.02.020 |
[13] |
张国云, 向灿群, 罗百通, 等. 一种改进的人脸识别CNN结构研究. 计算机工程与应用, 2017, 53(17): 180-185, 191. DOI:10.3778/j.issn.1002-8331.1612-0136 |
[14] |
Zheng ZD, Zheng L, Yang Y. A discriminatively learned CNN embedding for person reidentification. ACM Transactions on Multimedia Computing, Communications, and Applications, 2016, 14(1): 13. |
[15] |
Zheng ZD, Zheng L, Yang Y. Unlabeled samples generated by GAN improve the person re-identification baseline in vitro. Proceedings of 2017 IEEE International Conference on Computer Vision. Venice, Italy. 2017. 3774–3782.
|
[16] |
Zhang L, Xiang T, Gong SG. Learning a discriminative null space for person re-identification. Proceedings of 2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). Las Vegas, NV, USA. 2016. 1239–1248.
|