国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于arm9和百度AI的視頻監(jiān)控與人臉識別

2018-01-04 10:59高熊孫先松
電腦知識與技術(shù) 2018年28期
關(guān)鍵詞:視頻監(jiān)控嵌入式系統(tǒng)人臉識別

高熊 孫先松

摘要:為了實(shí)現(xiàn)對某一地點(diǎn)的實(shí)時監(jiān)控,并對相關(guān)人員進(jìn)行人臉識別,以滿足特定場合的工作需求,該文對實(shí)時圖像的采集和人臉識別做了相應(yīng)的研究。該研究的硬件系統(tǒng)采用JZ2440開發(fā)板作為嵌入式硬件開發(fā)平臺,將USB攝像頭采集到的圖像數(shù)據(jù)通過UDP網(wǎng)絡(luò)傳輸協(xié)議傳輸給在Ubuntu上搭建的服務(wù)器,以實(shí)現(xiàn)實(shí)時監(jiān)控,在檢測到人臉時,服務(wù)器便通過百度AI提供的人臉識別SDK進(jìn)行人臉識別,并將人臉識別結(jié)果返回給服務(wù)器。該研究實(shí)現(xiàn)了圖像的采集,傳輸,解碼,顯示及人臉識別,在局域網(wǎng)內(nèi)進(jìn)行了軟件的調(diào)試和驗(yàn)證。

關(guān)鍵詞:視頻監(jiān)控;人工智能;人臉識別;嵌入式系統(tǒng);網(wǎng)絡(luò)編程;arm

中圖分類號:TP391 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2018)28-0182-03

隨著社會的不斷進(jìn)步,科學(xué)技術(shù)的迅猛發(fā)展,視頻監(jiān)控已經(jīng)出現(xiàn)在社會的各個角落,在短短的幾十年的時間里,視頻技術(shù)已經(jīng)發(fā)生了天翻地覆的變化,從早期的模擬監(jiān)控到數(shù)字監(jiān)控再到如今的遠(yuǎn)距離視頻監(jiān)控,可以通過網(wǎng)絡(luò)傳將圖像數(shù)據(jù)傳輸?shù)绞澜绲母鱾€角落。但這已經(jīng)不能滿足某些特定工作的場合的需求,如:交通、金融、醫(yī)療、小區(qū)門禁等場所都提出了人臉識別的要求,要求系統(tǒng)能夠自動檢測到圖像畫面中的人臉,并與圖片庫中的人臉進(jìn)行對比,得到最有可能的身份信息。如今自動人臉識別因?yàn)槠涓呖山邮苄允艿缴鐣鱾€部門的青睞,所以此研究的實(shí)用價值較高。

1 系統(tǒng)組成介紹

此系統(tǒng)的組成方式如圖1所示。此設(shè)計(jì)主要由三個部分組成,分別為圖像數(shù)據(jù)采集端、本地Linux服務(wù)器和百度AI服務(wù)器。各個部分的詳細(xì)分析如下:

1)圖像數(shù)據(jù)采集端是一個JZ2440開發(fā)板,該開發(fā)板的主控芯片是S3C2440,是一款由Samsung半導(dǎo)體公司推出的高性能、低功耗、高集成度并具有工業(yè)級溫度范圍和性能的微處理器,該芯片的主頻高達(dá)533MHZ,具有較低的內(nèi)核電壓。此芯片運(yùn)行速度較快,功耗較低,非常適合此系統(tǒng)設(shè)計(jì)。攝像頭采用的是UVC攝像頭,該攝像頭輸出是jepg格式的圖片幀對攝像頭的初始化后,開發(fā)板就不斷地采集圖像數(shù)據(jù),并將采集的圖片數(shù)據(jù)通過UDP網(wǎng)絡(luò)傳輸給本地Linux服務(wù)器,同時將采集到的jpeg格式的圖片幀通過libjpeg解碼成RGB565的圖片數(shù)據(jù)顯示在LCD上。并在進(jìn)行了人臉識別之后,將人臉識別的結(jié)果顯示在LCD上。

2)本地Linux服務(wù)器是搭建在Ubuntu16.04上,使用Qt5.5搭建。Qt的良好封裝機(jī)制使得Qt的模塊化程度非常高,可重用性較好,對于用戶開發(fā)來說是非常方便的,可以快速地搭建起服務(wù)器。并且,Qt使用第三方開源庫非常方便,能夠輕松的加入OpenCV庫和使用百度AI的人臉識別的SDK需要的第三方庫:lcurl、lcrypto、ljsoncpp。

此部分主要負(fù)責(zé)接收開發(fā)板傳輸過來的jpeg格式的圖像數(shù)據(jù),并通過OpenCV視覺庫將jpeg格式的圖片解碼成RGB888格式的數(shù)據(jù)并顯示出來。當(dāng)OpenCV檢測到圖像中有人臉之后便將當(dāng)前的圖片幀傳給百度AI服務(wù)器,百度AI然后將人臉識別的結(jié)果返回給本地Linux服務(wù)器并顯示,本地Linux服務(wù)器同時將人臉識別的結(jié)果通過tcp/ip協(xié)議傳送給開發(fā)板。

3)百度AI提供了一套開放的人臉識別的算法,并提供了SDK,方便開發(fā)人員開發(fā)。開發(fā)人員首先在百度AI創(chuàng)建一個應(yīng)用,百度AI會提供一個API Key和Secret Key關(guān)聯(lián)此應(yīng)用。在進(jìn)行人臉識別之前首先往這個應(yīng)用上傳一組人臉庫,在進(jìn)行人臉識別時便將采集到的人臉和人臉庫中的人臉對比,返回相似度最高的人臉,可以通過返回值中的“scores”來判斷是否為一個人,此值得變化范圍為0到100。

2 系統(tǒng)軟件設(shè)計(jì)

此系統(tǒng)的軟件設(shè)計(jì)主要包括兩個部分的軟件設(shè)計(jì):數(shù)據(jù)采集端的軟件設(shè)計(jì)和本地Linux服務(wù)器端的軟件設(shè)計(jì)。為了實(shí)現(xiàn)人機(jī)交互界面數(shù)據(jù)采集端和本地Linux服務(wù)器端的軟件設(shè)計(jì)都是基于Qt編寫的。

2.1 數(shù)據(jù)采集端的軟件設(shè)計(jì)

數(shù)據(jù)采集端的軟件流程如圖2所示,開發(fā)板上電后首先便是啟動嵌入式Linux系統(tǒng),為了能使UVC攝像頭能夠正常運(yùn)行我們要將UVC驅(qū)動編譯進(jìn)內(nèi)核,內(nèi)核版本選用的是linux-3.4.2。為了能夠解碼jpeg格式的圖像數(shù)據(jù),我們事先需要交叉編譯libjpeg并移植到開發(fā)板上,libjpeg的版本是libjpeg-turbo-1.2.1,交叉編譯工具的版本為arm-linux-gcc4.4.3,移植到開發(fā)板的Qt版本為qt-everywhere-opensource-src-5.6.0。

程序執(zhí)行后,首先便進(jìn)行了UDP發(fā)送端和TCP/IP客戶端的設(shè)置,UDP用來發(fā)送圖像數(shù)據(jù),TCP/IP用來接收本地Linux服務(wù)器傳來的人臉識別的結(jié)果信息。UDP不提供可靠性的傳輸,但它傳輸速度很快,對于圖像的傳輸來說,傳輸數(shù)據(jù)量大,對于可靠性要求不嚴(yán),所以我們選用UDP來傳送圖像數(shù)據(jù)。TCP/IP提供的是可靠的數(shù)據(jù)傳輸,對于識別結(jié)果來說,我們需要其傳輸可靠,所以我們選用TCP/IP傳輸結(jié)果信息。

接下來是對攝像頭的初始化工作,為了能減小圖像傳輸占用的帶寬,我們設(shè)置攝像頭的輸出的圖片幀大小為320*240,但開發(fā)板的LCD大小為270*272,所以還需要將采集大的圖片進(jìn)行放大處理以實(shí)現(xiàn)LCD的全屏顯示,該設(shè)計(jì)采用的圖像縮放算法為近鄰取樣插值法。

最后便是對圖像的采集、傳輸、解碼、顯示。對于采集到的每一幀圖片,先通過UDP傳輸給本地Linux服務(wù)器,然后對這幀圖片進(jìn)行解碼并顯示在開發(fā)板的LCD上。使用開源庫libjpeg對圖片幀進(jìn)行解碼,需要注意的是,對于從內(nèi)存中讀取jpeg圖片數(shù)據(jù)和從文件中讀取jpeg圖片數(shù)據(jù)使用的是libjpeg庫里兩個不同的函數(shù),分別為jpeg_mem_src()和jpeg_stdio_src(),在此設(shè)計(jì)中,直接使用的是內(nèi)存中的數(shù)據(jù),所以使用jpeg_mem_src()對圖片進(jìn)行解碼。

當(dāng)開發(fā)板接收到本地Linux服務(wù)器發(fā)送的人臉識別的結(jié)果時,便暫停在LCD上顯示攝像頭采集的數(shù)據(jù),將接收到的結(jié)果顯示在LCD上,顯示結(jié)果5秒鐘之后便繼續(xù)顯示攝像頭采集到的數(shù)據(jù)。

2.2 本地Linux服務(wù)器軟件設(shè)計(jì)

本地Linux服務(wù)器端的軟件流程如圖3所示,此設(shè)計(jì)中服務(wù)器端的軟件需要用到opencv庫和百度AI提供的人臉識別的c++的SDK,而SDK又需要用到另外三個開源庫lcurl、lcrypto、ljsoncpp,所以我們在Linux平臺上安裝好這四個庫,其版本分別為opencv-3.2.0、curl_7.47.0-1ubuntu2.5、OpenSSL_1.0.2g-1ubuntu4.10、jsoncpp-1.6.5。

程序運(yùn)行時,首先便設(shè)置了UDP接收端和TCP/IP服務(wù)器端,分別負(fù)責(zé)接收圖像數(shù)據(jù)和發(fā)送人臉識別的結(jié)果。

接下來便是接收來著開發(fā)板的圖片幀數(shù)據(jù),通過opencv來對jpeg格式的圖片幀進(jìn)行解碼,解碼成RGB888格式的數(shù)據(jù),然后顯示在Qt的QLbale控件上,對于直接從內(nèi)存中獲得圖片數(shù)據(jù),在該設(shè)計(jì)中使用的是imdecode()函數(shù)。

在本程序中有兩種人臉識別的模式,分別是手動操作和自動檢測。程序運(yùn)行時,Linux服務(wù)器端顯示的是某處的實(shí)時監(jiān)控,如果運(yùn)行在手動模式,當(dāng)需要進(jìn)行人臉識別時,由操作者手動操作,調(diào)用百度AI人臉識別的SDK來進(jìn)行人臉識別;當(dāng)運(yùn)行在自動模式時,通過opencv來檢測畫面中是否有人臉,如果發(fā)現(xiàn)人臉,則自動調(diào)用SDK來進(jìn)行人臉識別,在本設(shè)計(jì)中使用的是Haar特征分類器來檢測畫面中是否含有人臉,在opencv3中此特征分類器已經(jīng)被訓(xùn)練好,可以方便的使用它。為了節(jié)約系統(tǒng)資源,提高軟件運(yùn)行效率,運(yùn)行在自動模式時并不是對每一幀圖片進(jìn)行人臉檢測,在此設(shè)計(jì)中是隔2秒檢測一下圖像中是否含有人臉。

當(dāng)操作者發(fā)現(xiàn)圖像中有人臉或者是opencv檢測到圖片中有人臉掉用了SDK后,本地Linux服務(wù)器會接收來自百度AI服務(wù)器返回來的消息并顯示出來,同時也會將檢測見過通過TCP/IP協(xié)議發(fā)送給開發(fā)板,供其顯示。

除此主要功能外,服務(wù)器端還有對圖像的拍照、錄像功能,對百度AI的人臉庫有增加、刪除、查詢等功能。在百度AI服務(wù)端,人臉庫是由“組”組成,“組”又是由各個“人臉”組成,“人臉”又包含“uid”和“user_info”兩個信息。在同一“組”中,是允許兩個同樣“uid”的“人臉”存在的,為了方便的管理人臉庫中的人員信息,防止此種情況的發(fā)生,在此設(shè)計(jì)中將人臉庫的人員信息同樣儲存了一份在本地?cái)?shù)據(jù)庫中,當(dāng)要添加人臉庫中的人員時首先查詢本地?cái)?shù)據(jù)庫是否還有此“uid”,若有,則拒絕添加,同樣,當(dāng)刪除某一個人員時,若本地?cái)?shù)據(jù)庫中沒有此“uid”時則拒絕刪除,這里使用的數(shù)據(jù)庫為sqlite3。

3 結(jié)果測試

3.1 當(dāng)沒有進(jìn)行人臉識別時,采集端和Linux服務(wù)器的顯示

采集端顯示如圖4所示:

本地Linux服務(wù)器端的顯示如圖5所示:

在此情況下采集端和本地Linux服務(wù)器顯示的是監(jiān)控處的實(shí)時畫面。

3.2 當(dāng)采集到人臉并進(jìn)行了人臉識別的顯示如下所示

采集端的顯示如圖6所示:

調(diào)用百度AI人臉識別的SDK之后,百度AI會返回人臉庫中與識別人臉相似度最高的人臉信息。在結(jié)果中,“l(fā)og_id”表示每次識別的日志id,每次識別的“l(fā)og_id”都不一樣;“faceliveness”活體分?jǐn)?shù),主要用于判斷是否為二次翻拍,限制用戶用翻拍照片來進(jìn)行識別,百度AI提供的參考閾值為0.393241,當(dāng)“faceliveness”的值大于此閾值時,則表明檢測到的是活體;“group_id”表示返回的人臉儲存在百度AI人臉庫的哪個組中,在該設(shè)計(jì)中,將人臉都儲存在組名為“group_1”的組中;“scores”表示返回的人臉和被檢測的人臉的相似程度,此結(jié)果的變化范圍為0到100,在實(shí)際使用時,到分?jǐn)?shù)高于85時則可判斷為同一個人;“uid”和“user_info”則分別表示,在進(jìn)行人臉注冊時所填寫的人員id和人員信息。

4 結(jié)論與展望

本文主要研究了圖像的傳輸和百度AI人臉識別的相關(guān)技術(shù),基本實(shí)現(xiàn)了視頻監(jiān)控和人臉識別的相關(guān)功能。但也有不足之處,jpeg格式的圖片數(shù)據(jù)與rgb格式的圖片數(shù)據(jù)相比雖然占用更少的空間,不斷傳輸jpeg格式的圖片幀來實(shí)現(xiàn)視頻監(jiān)控依然占用了較大的網(wǎng)絡(luò)帶寬,在今后的研究中可以將圖片幀編碼成H.264格式來傳輸視頻流,則會使系統(tǒng)占用更少的帶寬和更加的穩(wěn)定可靠。

參考文獻(xiàn):

[1] 余金遙.基于GPRS的圖像數(shù)據(jù)無線傳輸系統(tǒng)研究[J].電腦知識與技術(shù),2017,13(28):201-203.

[2] 王寶珠,程杰.基于ARM11的視頻監(jiān)控系統(tǒng)的設(shè)計(jì)[J].電子與設(shè)計(jì)工程,2013(3).

[3] 塔娜.基于ARM的人臉識別系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].長春:東北師范大學(xué),2009.

[4] 劉恒洋,王森.基于ARM的視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2007,23(7).

[5] (美)理查德·史蒂文斯,(美)拉戈.UNIX環(huán)境高級編程[M].北京:人民郵電出版社,2015.

[6] 楊樹青,王歡.Linux環(huán)境下C編程指南[M].北京:清華大學(xué)出版社,2008.

[7] (美)福達(dá).SQL必知必會[M].北京:人民郵電出版社,2013.

[8] 霍亞飛.Qt Creator快速入門[M].北京:北京航空航天大學(xué)出版社,2016.

【通聯(lián)編輯:唐一東】

猜你喜歡
視頻監(jiān)控嵌入式系統(tǒng)人臉識別
人臉識別 等
揭開人臉識別的神秘面紗
嵌入式系統(tǒng)課程“中斷、異常與事件”教學(xué)實(shí)踐及啟示
面向?qū)嵺`創(chuàng)新人才培養(yǎng)的嵌入式系統(tǒng)教學(xué)研究
基于類獨(dú)立核稀疏表示的魯棒人臉識別
基于K-L變換和平均近鄰法的人臉識別
团风县| 蓝山县| 深水埗区| 灵石县| 睢宁县| 河北省| 英德市| 迁安市| 嵊泗县| 赫章县| 尚义县| 团风县| 裕民县| 泗洪县| 鹤峰县| 黎平县| 富蕴县| 女性| 保德县| 沁水县| 台北县| 元氏县| 朝阳区| 乐山市| 文登市| 西平县| 辽中县| 岐山县| 阳谷县| 延庆县| 富源县| 溆浦县| 白山市| 色达县| 正蓝旗| 昌乐县| 永登县| 沁源县| 衡水市| 平乡县| 娄烦县|