基于重识别技术的行人检索系统
发布时间:2020-06-17
摘要:近年来,商场,公园,游乐场等人员密集的地方总会传出孩子走丢的消息,人们的安全意识不断加强,传统的行人检索系统会运用人脸识别技术,但在很多实际场景中,人脸识别技术作用并不突出,因为很多时候,摄像头根本无法抓拍到行人清晰的正面照。行人重识别作为人脸识别的补充,可以有效解决实际应用中跨设备、跨场景的问题,使行人检索更有效率。本文介绍的行人检索系统将目标检测和行人重识别融合为一个框架来进行行人检索,来实现当前大型智能监控系统的实时目标匹配需求。
关键词:行人重识别、行人检索
0.引言
传统的行人检索系统当摄像头没有拍到行人清晰的正面照时,人脸识别技术也不能发挥作用。为了实现监控环境下的行人检索,提高检索效率,本文介绍的系统采用PyQt绘制界面,将目标检测和行人重识别融合为一个框架来进行行人检索,来实现当前大型智能监控系统的实时目标匹配需求。
1、系统相关技术介绍
1.1 PyQt绘制界面
PyQt是一个创建GUI应用程序的工具包。它实现了一个Python模块集。它有超过300类,将近6000个函数和方法。它是一个多平台的工具包,可以运行在所有主要操作系统上,包括UNIX,Windows和Mac。
PYQT将Python与Qt库融为一体,Python 具有简洁清晰的语法和丰富强大的库,能够将其他语言编写的代码模块连接在一起。Qt 是一个性能卓越的跨平台的图形用户界面应用程序开发框架。制作程序UI界面,可以利用UI制作工具和编写纯代码这两种方式实现。
PyQt自带了和Qt同样强大灵活的可视化GUI设计工具Qt Designer, 可以更为方便地定制界面,加快开PyQt程序的速度。PyQt处理事件的核心机制是信号和槽,当某个对象的状态发生改变时,信号由该对象发射出去,槽用于接收信号。事件循环创建之后,建立信号和槽的连接实现对象之间的通信。这种机制不同于回调机制,使用信号和槽可以使程序更加简洁,当所开发的程序越大时,PyQt的这个优势就越为明显。
1.2 Tensorflow
TensorFlow 是一个端到端开源机器学习平台。它拥有一个全面而灵活的生态系统,其中包含各种工具、库和社区资源,可助力研究人员推动先进机器学习技术的发展,并使开发者能够轻松地构建和部署由机器学习提供支持的应用。
TensorFlow覆盖多种语言和平台,本系统采用的是基于python的TensorFlow核心开源库来实现。
1.3 神经网络迁移学习
基于神经网络的机器学习是目前很火的一个领域,但这并不意味着可以快速的入门并上手神经网络。如何建立良好的模型,增强其泛化能力,并降低资源的消耗使得模型能部署到生产环境也是重要的问题。
迁移学习的基础就是存在相应的神经网络模型,网络的参数已被优化,且模型开源,允许他人遵循相关的软件授权许可进行二次的开发。然后其他开发者就能利用现有的模型进行一个调整,快速的开发出系统。这在为开发者节省很多时间和金钱的同时,还能获取到良好的结果。
1.4 行人重识别技术
行人重识别技术是计算机视觉领域的重要部分,最开始是在基于图片的情况下,将图片中的人体特征提取出来,进行数据化。从2010年以后,很多学者开始对基于视频的行人重识别进行研究。深度学习使行人重识别技术有了很大的发
展,利用深度卷积神经网络来进行检测,准确率大幅提升。
2、系统功能实现
包含步骤为:(1)利用摄像头在商场的人口密集处选取合适角度采集视频数据;(2)将采集到的视频数据输入到训练好的行人检测模型中裁剪出行人图片;(3)对采集到的行人图片进行标注上下衣服颜色和性别,用于训练;(4)将从行人检测模型中获取的行人图片输入到分类器中识别行人特征(上衣颜色,裤子颜色,性别),根据图片的特征储存到特定文件夹,并将特征值写入数据库;(5)在客户端选择行人特征查找,选择对应的图片,同时将其余所有监控中视频实时输入行人监测模型,获取行人图片;(6)计算选择目标图片和行人检测模型实时输出的图片之间的欧式距离,匹配近似度最高的行人图片,在监控视频中用红色框将其标出。
5ee2e9fd23ee7_html_282abb7847ce4597.gif
图表 1行人检索系统流程图
3、技术难点
3.1 PYQT技术部分
首先,软件界面用Qt Designer绘制,可提高编写界面的速度。将设计好的界面文件保存为“.ui”格式并转换为“.py”文件,Python可以将转换后的文件当成库文件直接调用,此文件为界面文件。GUI界面设计并转换完成后再新建一个逻辑文件,完成界面后台的控制逻辑实现,即程序中对象间的通信。界面文件和逻辑文件是两个相对独立的文件,通过这种方法可实现界面与业务逻辑的分离。
其次,行人检测与行人重识别的过程耗时较长,在界面主线程中直接调用函数会造成界面无响应的情况,只能强制退出程序。将界面主线程与函数功能线程分开可以保证前端界面始终能响应用户的操作。
3.2行人检测模型的选取
想要对神经网络进行迁移学习,首先要找到一个合适的模型结果。在TensorFlow中,提供了一组目标检测模型ZOO,包含了多个基于COCO数据集训练完成的目标检测模型,包含主流的SSD和Faster RCNN,可以检测多达80种物体。
在测试电脑配置为英特尔G4560+GTX950的条件下,对三个模型进行了测试,SSD Mobilenet V1 COCO Model模型的精度较低,但是速度很快;Faster RCN Inception V2 COCO Model模型精度较高,速度较慢;Faster RCN NAS COCO Model模型精度最高,但速度也最慢。最后选取了精度和速度适中的Faster RCN NAS COCO Model。
3.3数据的持久化
当行人检测模型检测并裁剪出目标图片时,需要输入到特征提取模型中提取出行人的上衣、下衣颜色以及性别等参数。图片以及参数都需要进行本地持久化处理,以用于行人再识别的特征匹配。
可以采用前后端分离的形式,该系统前端基于PyQt开发,后端可以选用Springboot或php开发,搭配免费的Mysql数据库储存数据。但是这样需要对系统同时部署前后端两套应用,成本较高,于是决定将系统做成独立的单端软件。
没有数据库的辅助,项目中使用文件名称的方式来记录目标图片对应的特征。在经过特征提取模型后,通过正则表达,输出或解析出目标图片的特征。
3.4标注数据
为了使模型更加贴合场景,提高模型的准确度,需采用当前商场场景下的行人数据进行模型训练,所以对裁剪下的行人图像进行标注,包括上衣颜色、下衣颜色和性别。人工标注费时费力,而自动图像标注(AIA)是图像检索领域一项具有挑战性的任务。考虑到卷积神经网络需要大量的训练图像和收集大规模有标签数据集的困难,采用迁移学习的方法从ImageNet分类任务中迁移已经训练好的中层参数到其他视觉识别任务中[1]。
3.5多标签分类
从视频中采集的行人图像共有三个属性,包括上衣颜色、下衣颜色和性别。上衣颜色和下衣颜色属性分别有八个标签待分类,性别为二分类问题。在不考虑标签与标签之间相关性的情况下,可以采取直接将多类问题转换为多个二分类问题的方法。此方法虽然不能建模多个标签间的关联,但是有较高的效率。
3.6行人重识别
传统的ReID会采取提取姿态、视角和光线不变的手工特征,学习一个基于这些特征的相似性度量来进行重识别。使用简单但是对于滑动窗口的区域选择策略没有针对性,计算时间长,并且没有很好地鲁棒性。
基于深度学习的行人重识别方法根据训练损失可以分为基于表征学习和度量学习, 根据特征是否考虑局部特征可以分为基于全局特征和基于局部特征, 根据数据不同可以分为基于单帧图像和基于视频序列的方法。其中度量学习比表征学习使用的更加广泛, 性能表现也略微优于表征学习;融合全局和局部特征在行人重识别领域也渐渐变得流行, 图片切块的方法简单但是需要图片比较规范化, 利用姿态点信息比较精确但是需要额外的姿态估计模型,耗时较长;基于视频序列的方法和单帧方法相比, 序列方法无论是从思路的多样性上, 还是从结果性能上, 都还存在一定的差距[2]。
综合考量,基于度量学习的行人重识别方法最适合用于本系统中。
如果您需要安排自己的人工智能方面的论文,可参考:人工智能专业论文如何选刊
4、结束语
该系统实现了可用于商场的行人检索系统,但还有很多值得改进的方面:首先,对于行人图像的属性,只采用三个属性对模型精度是不利的;其次,在多标签分类中没有考虑标签与标签之间相关性,在多属性多标签的情况下,讨论标签的关联性更有利于提高系统精度。——论文作者:庹鑫 李振威 郭崇山 户春雨