基于人工智能和大数据分析的4G报警系统
2020-11-02钱雯王瑞赵轩黎童尚清于家艺
钱雯 王瑞 赵轩黎 童尚清 于家艺
摘要:互联网时代,报警服务更注重的是精准化和可视化,随着2G的逐渐淘汰,4G的迅速发展,一种新的并且多功能模块化的报警系统亟待问世。为实现公安信息化发展,该项目在“天网”“天智”“天算”[1]思想的带领下,开发出实用的智能化的pc软件及App,并将人脸识别与路线优化技术等完美整合在系统中,使得公安机关服务能力呈现跨越式提升。
关键词:人脸识别;路线优化;4G;报警
中圖分类号:TP311 文献标识码:A
文章编号:1009-3044(2020)26-0182-03
1引言
4G与2G网络相比,增添了传输视频语音等多媒体的优势,可以更全面更快速地进行报警;同时,4G报警系统也可以发挥物联网的优势,利用GPS定位确定周围监控,将众多监控录像进行实时调取,分析图像,从而使警方精准地把控现场状况。本项目利用人脸识别、大数据分析、路况优化等技术,为用户提供4G时代不同情况下的报警方式,使警方与用户更及时有效的沟通。
2总体设计
本文基于人工智能和大数据分析实现了一个智能化报警系统,该系统将人脸识别、无线通信、嵌入式技术有机结合,将来自App客户端的报警信息通过一系列数据处理传达至终端,以配合警方对犯罪行为精准打击。
3硬件设计
本文硬件设计选用的是Linux系统的树莓派4B+。树莓派是树莓派基金开发的开放式嵌入式系统,是只有信用卡大小的基于ARM的微型电脑主板[2],以SD卡为内存硬盘,具有所有PC基本功能。
3.1树莓派配置
将从树莓派官网下载的基于Linux系统的raspbian最新的镜像文件用镜像烧录工具Win32Disklmager烧录到已经格式化的16G内存的SD卡中,再将SD卡插入树莓派卡槽中,接通电源开机运行,在raspi-config开启摄像头服务。
3.2 配置软件motion
motion是在linux环境下使用的视频捕捉软件。使用命令行sudoapt-getinstallmotion安装motion,配置motiondaemon守护进程以使motion能在后台运行,修改motion的配置文件后,使用sudoservicemotionstart命令启动服务,输入sudomotion开启motion在浏览器上即可看见监控画面。
3.3远程访问
使用Frp穿透内网监控,监控对象为树莓派摄像头实时监控画面,将index.html文件监控画面链接改为穿透后的链接,调整参数以使内网穿透画面的连续性与稳定性得到保障,并将内网穿透服务设置为开机自启动。如此,即可在外网环境下访问该网络监控。
4 软件设计
4.1App
4.1.1软件框架
App由Android Studio搭建,用Java语言编写,分为报警App和警察端视频通话App。报警App主要的功能有视频报警、打字报警、当前位置和个人信息。具体框架如图2所示。
4.1.2 视频报警
视频报警实现正常报警环境下的报警功能,由报警App和警察端视频通话App共同完成,在第三方平台声网Agora的基础上实现音视频通话功能。声网在互联网上构建了专用于实时音视频互动的实时互联网(SD-RTN?),提供了简单的SDK,让应用实现音视频通话和全互动直播功能[3]。视频报警由报警App进行呼出,警察端视频通话App接收通话请求。音视频通话的API调用过程主要有:初始化RtcEngine、设置本地试图、加入频道、设置远端视图、离开频道、销毁Engine[4]。
4.1.3 打字报警
打字报警实现非正常报警情况下的简便报警,由报警端App以问卷形式快速收集报警原因、作案人相关信息,将问卷信息和地理位置、个人信息一起发送到警察端Web。
App和Web端的通信由socket经由云端服务器转发实现。转发的内容定义为消息类Message,包含客户端编号和消息内容,服务器端声明静态变量sessionMap来保存所有已连接的客户端Web端为客户端1,报警端App为客户端2,3,4...,消息处理类通过重写的构造方法,得到消息发送方以及所有已连接客户端,通过ObjectInputStream()和ObjectOutputStream()对Message对象进行读写。发送的消息格式如下(姓名:**;性别:***;身份证号:***;当前位置信息:***;报警原因:***;作案人是否携带凶器:**;作案人携带何种凶器:***;备注:***)。
4.1.4 当前位置
获取当前位置在第三方平台高德地图的基础上实现功能,获取设备的当前位置,并在地图上显示位置,反馈当前地址。在主线程中获得地图对象AMap,设置定位监听并实现LocationSource接口,配置定位参数,启动定位,在地图上标注当前位置[5],同时使用Toast反馈当前位置的文本信息。当前位置的文本信息会实时保存,在打字报警功能中和其他信息一起发送给Web端。
4.1.5个人信息
个人信息页面用于编辑和保存个人的姓名、性别和身份证号等相关信息。信息存储由SharedPreferences存储实现。存储过程如下:首先获取SharedPreferences对象,再获得SharedPreferences.Editor对象,向SharedPreferences.Editor对象中添加个人信息的数据,最后通过commit()指令提交数据。存储的数据通过SharedPreferences提供的getString()类获取。
4.2 pc
4.2.1软件构架
本网页通过idea软件,前端组建用LayIM,后端技术包括Springboot,JPA,Redis,Freemarker,数据库则采用MySQL,编写语言为JAVA。
代码流程如下:
(1)网页代码思路为首先搭建Springboot基本环境,分析初始化参数,实现项目的热部署,创建并用Lomnbok简化实体,并在实体中添加映射关系。然后用Jackson拼接个人信息及好友分组,使用ftp连接池部署服务器,使用session控制登录权限。进而用消息总线处理信息并搭建Redis的发布与订阅,使用Websocket进行双向通信,将聊天信息发送到服务端。最后优化一些功能提高用户舒适度:
(2)添加手机App与PC通信功能。利用管道流截取控制台输出,搭建多线程消息收发器。
4.2.2软件功能
(1)实现PC端通信
(2)接收报警信息
4.3路况优化
百度地图JavaScript API GL v1.0是一套用JavaScript语言编写的应用程序接口。百度地图JavaScript API支持HTTP和HTTPS,免费对外开放,可直接使用。接口使用无次数限制。JavaScript API GL使用了WebGL对地图、覆盖物等进行渲染,支持3D视角展示地图。GL版本接口基本向下兼容,迁移成本低。早期的v1.0版本支持了基本的3D地图展示、基本地图控件和覆盖物,目前已经更新到v3.0版本。
本质上,Geolocation类是使用了HTML5浏览器提供的GeolocationAPI来进行定位的。目前支持这一特性的浏览器有Internet Explorer、Firefox、Chrome、Safari以及Opera等。在支持HTML5的浏览器下,navigator对象下面有geolocation属性,其中有getCurrentPosition()方法,可以通过浏览器向设备发起定位请求,浏览器会让设备来发送相关指令到附近的上网设备。附近的上网设备接收到指令后会返回一个位置信息给用户设备,从而使浏览器获取定位信息。
而LocalCity类则是通过获取用户的IP地址,在百度数据库中进行查询,从而获取用户地址。但是本接口只能进行精确到城市的定位需求。
百度地图的导航功能支持进行摩托车路线规划、公交路线规划、骑行路线规划和驾车路线规划。本应用中调用了百度地图导航功能中的驾车路线规划功能,查询具体道路的实时拥堵评价和拥堵路段、拥堵距离、拥堵趋势等信息,并且最高可以实现路况的分钟级更新。
关键技术分析:在本应用中,使用了var ctrl = new BMapLib.TrafficControl({ showPanel: true });创建遮盖层并添加路况控制面板。此外,百度地图API还提供了预测功能。本应用利用ctrl.showTraffic({ predictDate: hour + 2 });设置路况预测为当前时刻的未来两小时。为了方便用户操作,还利用了map.enableScrollWheelZoom();语句启用了滚轮放大与缩小。
4.4人脸识别
近几年,人脸识别技术由于其识别的快捷可靠性,在人们工作生活中扮演着越来越重要的角色,网上关于人脸识别的开源技术也有很多,著名的有虹软和百度等,此次我主要采用Python的第三方库face_recognition和OpenCV来实现人脸识别功能,利用PyQt5来制作界面。
OpenCV提供的视觉处理算法非常丰富,并且它部分以C语言编写,加上其开源的特性,处理得当,不需要添加新的外部支持也可以完整的编译链接生成执行程序,所以很适合来做算法的移植,而且它致力于真实世界的实时应用,通过优化的C代码的编写对其执行速度带来了可观的提升,并且可以通过购买Intel的IPP高性能多媒体函数库(Integrated Performance Primitives)得到更快的处理速度。
face_recognition号称是世界上最简单的基于Python的人脸识别库,是在大名鼎鼎的深度學习框架dlib上做的整合,dlib模型在LFW(Labeled Faces in the Wild)能有99.38%的准确率。随着这些年的深度学习技术和GPU的使用,face_recognition中的DCNN可以更好的特征提取。DCNN近期已经成功用在如人脸检测、关键点定位、人脸识别和验证等方面。另外face_recognition提供了相应的命令行工具,可以通过命令行来对图片文件夹进行人脸识别,非常的便捷。
PyQt是一个用于创建GUI应用程序的跨平台工具包,它将Python与Qt库融为一体。这样做的最大好处就是在保留了Qt高运行效率的同时,大大提高了开发效率。因为,使用Python语言开发程序要比使用C++语言开发程序快得多。PyQt对Qt做了完整的封装,几乎可以用PyQt做Qt能做的任何事情。
人脸识别主要包括四个组成部分,分别为:人脸图像采集及检测、人脸图像预处理、人脸图像特征提取以及匹配与识别。
(1)人脸图像采集及检测
给定想要识别的人脸的图片用face_recognition中的face_encoding函数对其进行编码(将人脸图片映射成一个128维的特征向量)。
(2)人脸图像预处理
由于128维的人脸编码是一个numpyndarray类型(即矩阵),并不能将数据存进服务器的数据库中,因此必须进行类型转换,利用Python的numpy库将矩阵转为列表,再将列表里的每个元素转为字符串,再用字符串拼接的方式拼成一个字符串,这时就可以把特征值存进数据库里了。
(3)人脸图像特征提取
利用OpenCV的VideoCapture函数读取摄像头传过来的画面,并用read函数读取每一帧的图像,利用OpenCV的resize缩放函数改变图像的大小,图像越小,所做的计算就少,然后再对图像重复做人脸图像采集及检测部分的工作。
(4)匹配与识别
从服务器的人脸编码数据库中读出人脸信息,比较特征提取得到的人脸图像编码和数据库中读出的人脸信息编码,利用face_recognition中的compare_faces函数计算两张人脸特征向量的内积,通过设置一个阈值,若距离在阈值范围之内,则认为是同一个人,返回数据库中关于该人脸的信息描述(姓名和犯罪史等)。
5结语
本文通过分析4G报警系统传输视频语音等多媒体和物联网的优势,构建了基于人工智能和大数据的4G报警系统,包括了硬件与软件的设计,是一种多端联合、智能化的4G报警系统,具有一定的实用价值。本设计主要是面向报警民众和警察,其将众多相对成熟的技术加以结合,实现简单、移植性强。采用本设计具有广阔的应用前景。
参考文献:
[1] 蔡燕敏,孔维通.基于树莓派网络监控系统的研究[J].实验室科学,2015,18(6):87-90.
[2] 冯志辉.使用树莓派实现网络监控系统[J].电子技术与软件工程,2015(5):85.
[3] 舒文琼.声网Agora:实时音视频通信成大势所趋[J].通信世界,2015(31):41.
[4] 佚名.Agora-实现视频通话[EB/OL]. https://docs.agora.io/cn/Video/start_call_android?platform=Android,2019.
[5] 佚名.概述-Android 定位SDK|高德地圖API[EB/OL].https://docs.agora.io/cn/Video/start_call_android?platform=Android,2018.11.30.
[6]佚名.jspopularGL | 百度地图API SDK[J]. http://lbsyun.baidu.com/index.php?title=jspopularGL,2020.
【通联编辑:代影】