李 瞳, 李 彤, 赵宏伟
(吉林大学 软件学院, 长春 130012)
随着社会经济发展, 视频监控与人们生活的联系越来越紧密。能否快速、 高效地从海量监控视频中检索到需要的信息, 尤其是识别特定特征人物, 显得尤为重要。视频内容实现快速自动检索, 可大大减轻对视频人物检索的人工负担, 在公共安全等应用方面有广阔的应用前景。
自本世纪初人工智能飞速发展以来, 结合机器学习、 深度学习的图像识别技术取得了重大突破, 为图像的非人工辨别提供了新的思路。模拟人脑工作的神经网络的提出, 以及Lecun提出的卷积神经网络(CNN)[1]等, 大大提升了图像识别的速度、 精度, 解决了图像处理的诸多困难。诸多学者纷纷对此进行深入研究, 构建了诸如inception v3、 ResNet等神经网络模型以及TensorFlow、 caffe等深度学习框架[2-4], 极大地推动了计算机视觉的发展。但是在视频检索上, 仍有诸多问题有待解决。首先, 获取的视频原始数据往往存在码率小、 分辨率低等情况, 导致其截取的图片模糊, 虽可以人工识别, 但是增加了人工工作量。其次, 识别人物处于运动过程中时, 其脸部角度的不同、 表情的不同, 都为计算机识别造成障碍。最后, 对于某一人物的识别, 其数据往往较少, 无法训练专门的识别模型。基于上述分析, 设计一个视频检索系统, 用户输入模糊检索信息, 系统会自动识别判定, 从监控视频中将所需要的人物进行模糊识别和定位, 确定其在视频中的大致时间位置, 再根据检索内容选定特定人物进行精准识别。为人工确认与筛选节省时间, 能快速地定位所需要寻找的人物与信息。
笔者为解决上述问题, 基于对残差神经网络的迁移学习, 设计并实现了一套视频快速检索系统, 并通过实验验证了系统的准确性。
图1 系统架构Fig.1 System structure
系统具有图像识别、 分类等功能, 其架构如图1所示。首先训练分类模型, 选取大量人物图片作为训练集图片, 对神经网络分类器进行训练, 得到分类模型。处理原始视频, 将得到的视频, 每2 s读取一帧, 对该帧进行人脸检测和人脸特征提取, 如果识别成功则在该帧上进行标注, 并将其储存在本地硬盘上, 以其在视频中所处的时间位置为其进行命名, 并将视频与截图的路径等信息存储到数据库中。
图像识别分为3个步骤。
1) 对图片人检测, 标记人脸位置, 对其进行特征提取, 得到特征向量。
2) 对人脸进行模糊分类识别, 将得到的分类信息存储到数据库中。
3) 对上述结果进行精准识别, 将得到的人脸特征向量与目标人脸特征向量集进行对比, 判断是否是目标对象; 将识别结果在该帧中进行标注, 并进行存储和显示。
数据库设计了视频信息表、 图片信息表和分类信息表等3张基本表。视频信息表存储视频路径及相应信息, 包括时间和地点等基本信息。图片信息表存储视频截图的信息, 包括其中人物的分类标注, 也要存相应的时间和地点等。分类信息表存储分类集信息, 实验中分类设计为男、 女和孩子。
数据表结构设计如下。
视频信息表Video: {vid,name,location,time}。
图片信息表PhotofromVi: {pid,vid,name,lication,timeinvideo,classification}。
分类信息表Classfication: {cid,cname,alias}, 在分类信息表中, 对分类信息的存储, 会加入别名这一项, 为分类扩展与检索精度提升提供接口。
图2 分类模型训练过程Fig.2 Classification model training process
系统的核心工作是图像识别。图像经过预处理得到特征向量, 经过训练好的分类神经网络模型进行模糊分类, 通过对比特征值进行精准识别。
分类器训练过程如图2所示。网络分类实质是迁移学习的应用, 由两部分组成: 人脸定位与特征提取的数据预处理和分类神经网络(以下简称分类器)。
图片人脸位置检测有3种方式:
1) 基于haar特征级联[5]进行人脸检测, 速度快, 精度、 效果相对较差;
2) 使用HOG(Histogram of Oriented Gradient)算法[6-10], 速度快, 识别精度、 效果相对较好;
3) 使用卷积神经网络, 速度慢, 识别精度好, 总体效果比较好。
考虑时间以及识别精度等条件与实验环境的限制, 实验设计采用HOG算法。首先, 将所得图片转化为灰度图像, 灰度
G=0.3R+0.59G+0.11B
(1)
对其进行Gamma校正。然后, 对这些图像在水平与垂直方向求其梯度与梯度方向, 选取一块窗口在图像上滑动, 提取每个窗口的HOG特征值。最后调用opencv中已经训练好的SVM分类器进行进行识别, 得到人脸位置。
将检测到的人脸进行特征向量抽取, 使用Dlsib库中已经训练好的残差网络(ResNet)模型, 得到一个128维的人脸特征向量。
图3 分类神经网络结构Fig.3 Neural network classifier structure schematic
分类神经网络结构如图3所示。其输入层由128个神经元构成, 将128维的人脸特征向量作为输入, 隐藏层由500个神经元构成, 输出层由系统的分类个数决定, 现阶段只有3个: 输入层、 隐藏层和输出层全连接。输出层将输出onehot串判断相应的图像分类。训练这个模型, 要首先将给定的数据集通过人脸检测和识别转化为128维的人脸特征向量(即通过ResNet模型进行预处理), 并存储到文件中, 再以128维的人脸特征向量集为输入进行模型训练。
读取给定视频, 每隔2 s(可调整)读取一帧, 对该帧进行数据预处理, 具体过程与上述过程一致, 得到一个128维的人脸特征向量。将得到的人脸特征向量通过训练好的图像分类模型进行分类, 将分类结果在该帧中进行标注, 并进行存储与展示。
对模糊识别后得到的人物图像数据进行人工鉴别, 确定要寻找的目标人物, 将目标人物的图片进行预处理, 等待检索。重新对视频进行处理, 并对图像进行数据预处理。如果该帧没有人脸则舍弃; 否则, 由于一张图片上可能有多个人脸, 所以, 将提取的特征向量集合一一与上述存储的目标人物图像预处理后的特征向量使用最小二乘法进行对比, 再将该相似度与给定阈值比较。若该相似度小于等于阈值, 则该人脸为目标人物, 否则该人脸不是要识别的对象。最后, 将该帧上识别到的目标人物进行标注并进行存储和显示。
实验设计中, 操作系统为windows10, 程序设计语言为python, 所使用的库有: Face Recognition库(基于Dlib库)以及Opencv库。分类训练模型的训练数据来自IMDB数据集, 人工选取了20~30岁左右的男性与女性, 以及年龄低于15岁的孩子各200张图片作为训练集。孩子的图片训练集如图4所示。
图4 孩子图片训练集Fig.4 Child picture dataset
输入上述数据集到网络中首先定位人脸位置, 之后进行特征提取, 得到每张图片的128维向量, 图5为部分向量。
图5 128维特征向量Fig.5 128 dimension feature vector
利用上述人工神经网络进行训练, 得到训练模型。选取5张图片作为测试集进行精确度测试, 其平均精度达到了92%以上, 得到图6所示结果。
图6 模型精准度测试结果Fig.6 Model accuracy test results
实验设计选取了3组长度分别为230 s、 296 s、 357 s的3段视频作为原始视频数据, 对其进行截图。在视频1中选取两个人物, 其中对人物1截取6张截图, 人物2截取5张截图。在视频2中选取了3个人物, 其中对人物1截取7张截图, 人物2截取2张截图, 人物3截取4张截图。在视频3中选取3个人物, 其中对人物1截取4张截图, 人物2截取10张截图, 人物3截取3张截图。图7展示了在视频2中的截图信息。
图7 实验视频2中的截图Fig.7 Screenshot in experiment video 2
在系统中输入女1号(csfamle)进行模糊识别。系统在图片上标记人脸位置, 并标注其分类, 识别结果如图8所示。
将模糊识别结果与图片选取截图进行精准识别, 得到精准分类结果, 如图9所示, 可以看到系统将其分类信息标记在图片上, 表明系统找到目标人物。
图8 模糊识别结果 图9 精准识别结果 Fig.8 Fuzzy recognition results Fig.9 Accurate recognition results
基于图像识别技术, 笔者提出一种新的监控视频人物检索系统。通过实验, 得到系统运行效果数据。实验结果表明, 系统可以快速定位视频内人物信息, 对目标人物进行精准识别。系统的进一步研究, 可以考虑如下两方面: 首先, 根据检测目标扩充分类, 由于监控视频中信息过于复杂, 分类种类也不仅仅局限于人物识别, 还包括诸如车辆、 商店等物体识别, 为检索创造更多更精准的信息; 其次, 进一步提升检索效率, 可以在分类信息与所得截图之间建立相应的数据结构, 使其检索速度提升。