錢雯 王瑞 趙軒黎 童尚清 于家藝



摘要:互聯(lián)網(wǎng)時代,報警服務(wù)更注重的是精準(zhǔn)化和可視化,隨著2G的逐漸淘汰,4G的迅速發(fā)展,一種新的并且多功能模塊化的報警系統(tǒng)亟待問世。為實現(xiàn)公安信息化發(fā)展,該項目在“天網(wǎng)”“天智”“天算”[1]思想的帶領(lǐng)下,開發(fā)出實用的智能化的pc軟件及App,并將人臉識別與路線優(yōu)化技術(shù)等完美整合在系統(tǒng)中,使得公安機(jī)關(guān)服務(wù)能力呈現(xiàn)跨越式提升。
關(guān)鍵詞:人臉識別;路線優(yōu)化;4G;報警
中圖分類號:TP311? ? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2020)26-0182-03
1引言
4G與2G網(wǎng)絡(luò)相比,增添了傳輸視頻語音等多媒體的優(yōu)勢,可以更全面更快速地進(jìn)行報警;同時,4G報警系統(tǒng)也可以發(fā)揮物聯(lián)網(wǎng)的優(yōu)勢,利用GPS定位確定周圍監(jiān)控,將眾多監(jiān)控錄像進(jìn)行實時調(diào)取,分析圖像,從而使警方精準(zhǔn)地把控現(xiàn)場狀況。本項目利用人臉識別、大數(shù)據(jù)分析、路況優(yōu)化等技術(shù),為用戶提供4G時代不同情況下的報警方式,使警方與用戶更及時有效的溝通。
2總體設(shè)計
本文基于人工智能和大數(shù)據(jù)分析實現(xiàn)了一個智能化報警系統(tǒng),該系統(tǒng)將人臉識別、無線通信、嵌入式技術(shù)有機(jī)結(jié)合,將來自App客戶端的報警信息通過一系列數(shù)據(jù)處理傳達(dá)至終端,以配合警方對犯罪行為精準(zhǔn)打擊。
3硬件設(shè)計
本文硬件設(shè)計選用的是Linux系統(tǒng)的樹莓派4B+。樹莓派是樹莓派基金開發(fā)的開放式嵌入式系統(tǒng),是只有信用卡大小的基于ARM的微型電腦主板[2],以SD卡為內(nèi)存硬盤,具有所有PC基本功能。
3.1樹莓派配置
將從樹莓派官網(wǎng)下載的基于Linux系統(tǒng)的raspbian最新的鏡像文件用鏡像燒錄工具Win32Disklmager燒錄到已經(jīng)格式化的16G內(nèi)存的SD卡中,再將SD卡插入樹莓派卡槽中,接通電源開機(jī)運行,在raspi-config開啟攝像頭服務(wù)。
3.2 配置軟件motion
motion是在linux環(huán)境下使用的視頻捕捉軟件。使用命令行sudoapt-getinstallmotion安裝motion,配置motiondaemon守護(hù)進(jìn)程以使motion能在后臺運行,修改motion的配置文件后,使用sudoservicemotionstart命令啟動服務(wù),輸入sudomotion開啟motion在瀏覽器上即可看見監(jiān)控畫面。
3.3遠(yuǎn)程訪問
使用Frp穿透內(nèi)網(wǎng)監(jiān)控,監(jiān)控對象為樹莓派攝像頭實時監(jiān)控畫面,將index.html文件監(jiān)控畫面鏈接改為穿透后的鏈接,調(diào)整參數(shù)以使內(nèi)網(wǎng)穿透畫面的連續(xù)性與穩(wěn)定性得到保障,并將內(nèi)網(wǎng)穿透服務(wù)設(shè)置為開機(jī)自啟動。如此,即可在外網(wǎng)環(huán)境下訪問該網(wǎng)絡(luò)監(jiān)控。
4 軟件設(shè)計
4.1App
4.1.1軟件框架
App由Android Studio搭建,用Java語言編寫,分為報警App和警察端視頻通話App。報警App主要的功能有視頻報警、打字報警、當(dāng)前位置和個人信息。具體框架如圖2所示。
4.1.2 視頻報警
視頻報警實現(xiàn)正常報警環(huán)境下的報警功能,由報警App和警察端視頻通話App共同完成,在第三方平臺聲網(wǎng)Agora的基礎(chǔ)上實現(xiàn)音視頻通話功能。聲網(wǎng)在互聯(lián)網(wǎng)上構(gòu)建了專用于實時音視頻互動的實時互聯(lián)網(wǎng)(SD-RTN?),提供了簡單的SDK,讓應(yīng)用實現(xiàn)音視頻通話和全互動直播功能[3]。視頻報警由報警App進(jìn)行呼出,警察端視頻通話App接收通話請求。音視頻通話的API調(diào)用過程主要有:初始化RtcEngine、設(shè)置本地試圖、加入頻道、設(shè)置遠(yuǎn)端視圖、離開頻道、銷毀Engine[4]。
4.1.3 打字報警
打字報警實現(xiàn)非正常報警情況下的簡便報警,由報警端App以問卷形式快速收集報警原因、作案人相關(guān)信息,將問卷信息和地理位置、個人信息一起發(fā)送到警察端Web。
App和Web端的通信由socket經(jīng)由云端服務(wù)器轉(zhuǎn)發(fā)實現(xiàn)。轉(zhuǎn)發(fā)的內(nèi)容定義為消息類Message,包含客戶端編號和消息內(nèi)容,服務(wù)器端聲明靜態(tài)變量sessionMap來保存所有已連接的客戶端Web端為客戶端1,報警端App為客戶端2,3,4...,消息處理類通過重寫的構(gòu)造方法,得到消息發(fā)送方以及所有已連接客戶端,通過ObjectInputStream()和ObjectOutputStream()對Message對象進(jìn)行讀寫。發(fā)送的消息格式如下(姓名:**;性別:***;身份證號:***;當(dāng)前位置信息:***;報警原因:***;作案人是否攜帶兇器:**;作案人攜帶何種兇器:***;備注:***)。
4.1.4 當(dāng)前位置
獲取當(dāng)前位置在第三方平臺高德地圖的基礎(chǔ)上實現(xiàn)功能,獲取設(shè)備的當(dāng)前位置,并在地圖上顯示位置,反饋當(dāng)前地址。在主線程中獲得地圖對象AMap,設(shè)置定位監(jiān)聽并實現(xiàn)LocationSource接口,配置定位參數(shù),啟動定位,在地圖上標(biāo)注當(dāng)前位置[5],同時使用Toast反饋當(dāng)前位置的文本信息。當(dāng)前位置的文本信息會實時保存,在打字報警功能中和其他信息一起發(fā)送給Web端。
4.1.5個人信息
個人信息頁面用于編輯和保存?zhèn)€人的姓名、性別和身份證號等相關(guān)信息。信息存儲由SharedPreferences存儲實現(xiàn)。存儲過程如下:首先獲取SharedPreferences對象,再獲得SharedPreferences.Editor對象,向SharedPreferences.Editor對象中添加個人信息的數(shù)據(jù),最后通過commit()指令提交數(shù)據(jù)。存儲的數(shù)據(jù)通過SharedPreferences提供的getString()類獲取。
4.2 pc
4.2.1軟件構(gòu)架
本網(wǎng)頁通過idea軟件,前端組建用LayIM,后端技術(shù)包括Springboot,JPA,Redis,F(xiàn)reemarker,數(shù)據(jù)庫則采用MySQL,編寫語言為JAVA。
代碼流程如下:
(1)網(wǎng)頁代碼思路為首先搭建Springboot基本環(huán)境,分析初始化參數(shù),實現(xiàn)項目的熱部署,創(chuàng)建并用Lomnbok簡化實體,并在實體中添加映射關(guān)系。然后用Jackson拼接個人信息及好友分組,使用ftp連接池部署服務(wù)器,使用session控制登錄權(quán)限。進(jìn)而用消息總線處理信息并搭建Redis的發(fā)布與訂閱,使用Websocket進(jìn)行雙向通信,將聊天信息發(fā)送到服務(wù)端。最后優(yōu)化一些功能提高用戶舒適度:
(2)添加手機(jī)App與PC通信功能。利用管道流截取控制臺輸出,搭建多線程消息收發(fā)器。
4.2.2軟件功能
(1)實現(xiàn)PC端通信
(2)接收報警信息
4.3路況優(yōu)化
百度地圖JavaScript API GL v1.0是一套用JavaScript語言編寫的應(yīng)用程序接口。百度地圖JavaScript API支持HTTP和HTTPS,免費對外開放,可直接使用。接口使用無次數(shù)限制。JavaScript API GL使用了WebGL對地圖、覆蓋物等進(jìn)行渲染,支持3D視角展示地圖。GL版本接口基本向下兼容,遷移成本低。早期的v1.0版本支持了基本的3D地圖展示、基本地圖控件和覆蓋物,目前已經(jīng)更新到v3.0版本。
本質(zhì)上,Geolocation類是使用了HTML5瀏覽器提供的GeolocationAPI來進(jìn)行定位的。目前支持這一特性的瀏覽器有Internet Explorer、Firefox、Chrome、Safari以及Opera等。在支持HTML5的瀏覽器下,navigator對象下面有g(shù)eolocation屬性,其中有g(shù)etCurrentPosition()方法,可以通過瀏覽器向設(shè)備發(fā)起定位請求,瀏覽器會讓設(shè)備來發(fā)送相關(guān)指令到附近的上網(wǎng)設(shè)備。附近的上網(wǎng)設(shè)備接收到指令后會返回一個位置信息給用戶設(shè)備,從而使瀏覽器獲取定位信息。
而LocalCity類則是通過獲取用戶的IP地址,在百度數(shù)據(jù)庫中進(jìn)行查詢,從而獲取用戶地址。但是本接口只能進(jìn)行精確到城市的定位需求。
百度地圖的導(dǎo)航功能支持進(jìn)行摩托車路線規(guī)劃、公交路線規(guī)劃、騎行路線規(guī)劃和駕車路線規(guī)劃。本應(yīng)用中調(diào)用了百度地圖導(dǎo)航功能中的駕車路線規(guī)劃功能,查詢具體道路的實時擁堵評價和擁堵路段、擁堵距離、擁堵趨勢等信息,并且最高可以實現(xiàn)路況的分鐘級更新。
關(guān)鍵技術(shù)分析:在本應(yīng)用中,使用了var ctrl = new BMapLib.TrafficControl({ showPanel: true });創(chuàng)建遮蓋層并添加路況控制面板。此外,百度地圖API還提供了預(yù)測功能。本應(yīng)用利用ctrl.showTraffic({ predictDate: hour + 2 });設(shè)置路況預(yù)測為當(dāng)前時刻的未來兩小時。為了方便用戶操作,還利用了map.enableScrollWheelZoom();語句啟用了滾輪放大與縮小。
4.4人臉識別
近幾年,人臉識別技術(shù)由于其識別的快捷可靠性,在人們工作生活中扮演著越來越重要的角色,網(wǎng)上關(guān)于人臉識別的開源技術(shù)也有很多,著名的有虹軟和百度等,此次我主要采用Python的第三方庫face_recognition和OpenCV來實現(xiàn)人臉識別功能,利用PyQt5來制作界面。
OpenCV提供的視覺處理算法非常豐富,并且它部分以C語言編寫,加上其開源的特性,處理得當(dāng),不需要添加新的外部支持也可以完整的編譯鏈接生成執(zhí)行程序,所以很適合來做算法的移植,而且它致力于真實世界的實時應(yīng)用,通過優(yōu)化的C代碼的編寫對其執(zhí)行速度帶來了可觀的提升,并且可以通過購買Intel的IPP高性能多媒體函數(shù)庫(Integrated Performance Primitives)得到更快的處理速度。
face_recognition號稱是世界上最簡單的基于Python的人臉識別庫,是在大名鼎鼎的深度學(xué)習(xí)框架dlib上做的整合,dlib模型在LFW(Labeled Faces in the Wild)能有99.38%的準(zhǔn)確率。隨著這些年的深度學(xué)習(xí)技術(shù)和GPU的使用,face_recognition中的DCNN可以更好的特征提取。DCNN近期已經(jīng)成功用在如人臉檢測、關(guān)鍵點定位、人臉識別和驗證等方面。另外face_recognition提供了相應(yīng)的命令行工具,可以通過命令行來對圖片文件夾進(jìn)行人臉識別,非常的便捷。
PyQt是一個用于創(chuàng)建GUI應(yīng)用程序的跨平臺工具包,它將Python與Qt庫融為一體。這樣做的最大好處就是在保留了Qt高運行效率的同時,大大提高了開發(fā)效率。因為,使用Python語言開發(fā)程序要比使用C++語言開發(fā)程序快得多。PyQt對Qt做了完整的封裝,幾乎可以用PyQt做Qt能做的任何事情。
人臉識別主要包括四個組成部分,分別為:人臉圖像采集及檢測、人臉圖像預(yù)處理、人臉圖像特征提取以及匹配與識別。
(1)人臉圖像采集及檢測
給定想要識別的人臉的圖片用face_recognition中的face_encoding函數(shù)對其進(jìn)行編碼(將人臉圖片映射成一個128維的特征向量)。
(2)人臉圖像預(yù)處理
由于128維的人臉編碼是一個numpyndarray類型(即矩陣),并不能將數(shù)據(jù)存進(jìn)服務(wù)器的數(shù)據(jù)庫中,因此必須進(jìn)行類型轉(zhuǎn)換,利用Python的numpy庫將矩陣轉(zhuǎn)為列表,再將列表里的每個元素轉(zhuǎn)為字符串,再用字符串拼接的方式拼成一個字符串,這時就可以把特征值存進(jìn)數(shù)據(jù)庫里了。
(3)人臉圖像特征提取
利用OpenCV的VideoCapture函數(shù)讀取攝像頭傳過來的畫面,并用read函數(shù)讀取每一幀的圖像,利用OpenCV的resize縮放函數(shù)改變圖像的大小,圖像越小,所做的計算就少,然后再對圖像重復(fù)做人臉圖像采集及檢測部分的工作。
(4)匹配與識別
從服務(wù)器的人臉編碼數(shù)據(jù)庫中讀出人臉信息,比較特征提取得到的人臉圖像編碼和數(shù)據(jù)庫中讀出的人臉信息編碼,利用face_recognition中的compare_faces函數(shù)計算兩張人臉特征向量的內(nèi)積,通過設(shè)置一個閾值,若距離在閾值范圍之內(nèi),則認(rèn)為是同一個人,返回數(shù)據(jù)庫中關(guān)于該人臉的信息描述(姓名和犯罪史等)。
5結(jié)語
本文通過分析4G報警系統(tǒng)傳輸視頻語音等多媒體和物聯(lián)網(wǎng)的優(yōu)勢,構(gòu)建了基于人工智能和大數(shù)據(jù)的4G報警系統(tǒng),包括了硬件與軟件的設(shè)計,是一種多端聯(lián)合、智能化的4G報警系統(tǒng),具有一定的實用價值。本設(shè)計主要是面向報警民眾和警察,其將眾多相對成熟的技術(shù)加以結(jié)合,實現(xiàn)簡單、移植性強(qiáng)。采用本設(shè)計具有廣闊的應(yīng)用前景。
參考文獻(xiàn):
[1] 蔡燕敏,孔維通.基于樹莓派網(wǎng)絡(luò)監(jiān)控系統(tǒng)的研究[J].實驗室科學(xué),2015,18(6):87-90.
[2] 馮志輝.使用樹莓派實現(xiàn)網(wǎng)絡(luò)監(jiān)控系統(tǒng)[J].電子技術(shù)與軟件工程,2015(5):85.
[3] 舒文瓊.聲網(wǎng)Agora:實時音視頻通信成大勢所趨[J].通信世界,2015(31):41.
[4] 佚名.Agora-實現(xiàn)視頻通話[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.
【通聯(lián)編輯:代影】