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

?

基于百度AI的人流量監(jiān)測(cè)系統(tǒng)

2020-12-26 05:08:06
關(guān)鍵詞:人流量視頻流攝像機(jī)

冉 涌

基于百度AI的人流量監(jiān)測(cè)系統(tǒng)

冉 涌

(重慶三峽職業(yè)學(xué)院 智能制造學(xué)院,中國(guó) 重慶 404155)

人流量實(shí)時(shí)監(jiān)測(cè)既有潛在的商業(yè)價(jià)值,更是保障公共安全的重要手段之一。視頻識(shí)別技術(shù)實(shí)現(xiàn)區(qū)域人流量監(jiān)測(cè)是目前最有效的手段,然而,開發(fā)其中的機(jī)器視覺算法耗時(shí)耗力。目前,一種更有效的解決方案是基于百度AI平臺(tái)提供的視覺識(shí)別API接口,結(jié)合實(shí)際需求做二次開發(fā)。采用C#語(yǔ)言開發(fā)客戶端監(jiān)控識(shí)別程序,完成攝像機(jī)連接以及百度AI平臺(tái)接入和數(shù)據(jù)交換等工作。其中,關(guān)鍵是通過(guò)多線程的方式,保證視頻流暢和網(wǎng)絡(luò)數(shù)據(jù)穩(wěn)定交互,處理好各類系統(tǒng)事件間的關(guān)系。實(shí)驗(yàn)結(jié)果表明,該方法能在多視角和不同攝像環(huán)境下,識(shí)別出人體,包括正面部分遮擋、背面、側(cè)面、頭頂4種姿態(tài);動(dòng)態(tài)人流量統(tǒng)計(jì)準(zhǔn)確率達(dá)97.5%。

人流量;百度AI;鑒權(quán);實(shí)時(shí)監(jiān)測(cè)

1 引言

人流量監(jiān)測(cè)是指在一個(gè)指定區(qū)域內(nèi)實(shí)時(shí)統(tǒng)計(jì)人員的流動(dòng)情況。在景區(qū)、車站、商場(chǎng)等人員密集的場(chǎng)所,實(shí)時(shí)監(jiān)測(cè)人流狀況,既有潛在的商業(yè)價(jià)值,更是保障公共安全的重要手段之一。傳統(tǒng)的光電傳感器檢測(cè)方式,只適合設(shè)置在狹窄的通道處,使其使用范圍受到很大限制。近年來(lái),眾多學(xué)者采用視頻識(shí)別技術(shù),監(jiān)測(cè)大范圍內(nèi)的人員流動(dòng)情況,取得了一定成效[1-3]。有的采用基于運(yùn)動(dòng)檢測(cè)的算法、有的采用基于機(jī)器學(xué)習(xí)的算法,在具體場(chǎng)景中,單獨(dú)開發(fā)、實(shí)現(xiàn)這些算法需要耗費(fèi)大量人力和資源,并且不便于功能擴(kuò)展和推廣應(yīng)用[4-7]。然而,百度AI(人工智能)平臺(tái)提供的API接口很好的解決了這一問題。本文采用C#語(yǔ)言開發(fā)客戶端程序,調(diào)用本地USB攝像機(jī)或者網(wǎng)絡(luò)攝像機(jī),連接百度AI平臺(tái),優(yōu)化程序結(jié)構(gòu)設(shè)計(jì),實(shí)現(xiàn)人流量動(dòng)態(tài)監(jiān)測(cè)統(tǒng)計(jì)功能。

2 百度AI平臺(tái)接入

百度AI平臺(tái)提供了人流量統(tǒng)計(jì)的動(dòng)態(tài)版,其主要功能是統(tǒng)計(jì)圖像中的人體數(shù)量和流動(dòng)趨勢(shì)。其核心功能包括:(1)靜態(tài)人數(shù)統(tǒng)計(jì):(2)動(dòng)態(tài)人數(shù)統(tǒng)計(jì)和跟蹤:(3)傳入監(jiān)控視頻抓拍圖片序列,進(jìn)行人體追蹤,返回每個(gè)人體框的坐標(biāo)和所屬編號(hào);(4)根據(jù)目標(biāo)軌跡判斷進(jìn)出區(qū)域行為,進(jìn)行動(dòng)態(tài)人流量統(tǒng)計(jì),返回指定區(qū)域進(jìn)出人數(shù)[8]。其提供了API接口,方便開發(fā)人員根據(jù)實(shí)際需要做二次開發(fā)。目前,在線訪問的API接口,對(duì)于普通用戶,只要在百度AI平臺(tái)注冊(cè)后,即可免費(fèi)使用。

2.1 鑒權(quán)認(rèn)證機(jī)制

在百度AI平臺(tái),除了人流量監(jiān)測(cè)系統(tǒng)以外,還包含多種人工智能的應(yīng)用,都開放給用戶使用。為了保證各個(gè)應(yīng)用的安全和對(duì)各用戶訪問權(quán)限的控制,平臺(tái)采用訪問令牌(Access Token)的方式實(shí)現(xiàn)鑒權(quán)認(rèn)證。因此,用戶需要首先在平臺(tái)注冊(cè)賬號(hào),申請(qǐng)開通人流量監(jiān)測(cè)的應(yīng)用,并取得相應(yīng)的API Key和Secret Key。然后,向授權(quán)服務(wù)器地址發(fā)送請(qǐng)求,并在URL中帶上參數(shù),獲取Access Token。最后,服務(wù)器以JSON格式返回Access Token值以及有效期。

2.2 動(dòng)態(tài)人數(shù)統(tǒng)計(jì)與跟蹤

實(shí)現(xiàn)動(dòng)態(tài)人數(shù)統(tǒng)計(jì)與跟蹤,要先將本地視頻流做抽幀處理,要求幀率大于2幀/秒,然后,上傳到百度AI平臺(tái)。經(jīng)后臺(tái)引擎做圖像處理與識(shí)別后,返回每個(gè)人體框的坐標(biāo)及編號(hào)信息,并且可根據(jù)連續(xù)多幀圖像信息,形成運(yùn)動(dòng)軌跡,從而進(jìn)一步判定指定區(qū)域內(nèi)人員流動(dòng)情況。作為普通用戶,只需要從視頻流中抽取多幀圖像,百度平臺(tái)通過(guò)AI算法完成對(duì)每幀靜態(tài)圖像的識(shí)別與處理,將結(jié)果返回給用戶,多幀連續(xù)處理后,達(dá)到人流量的動(dòng)態(tài)監(jiān)測(cè)的目標(biāo)。

在連接百度平臺(tái)時(shí),請(qǐng)求參數(shù)中包含抽幀后的圖像(image)、監(jiān)測(cè)區(qū)域(area)等信息。其中,圖像要求進(jìn)行base64編碼后再通過(guò)URL編碼加入到http請(qǐng)求中。在C#中實(shí)現(xiàn)base64編碼,只需通過(guò)FileStream對(duì)象讀取圖像,然后以字節(jié)數(shù)組形式逐個(gè)轉(zhuǎn)換為base64字符串。處理函數(shù)如下:

public static String getFileBase64 (String file Name)

{

FileStream filestream=new FileStream(fileName, FileMode.Open);

byte[] arr = new byte[filestream.Length];

filestream.Read(arr, 0, (int)filestream.Length);

string baser64 = Convert.ToBase64String(arr);

filestream.Close();

return baser64;

}

在視頻畫面中,有一個(gè)監(jiān)測(cè)區(qū)域(area)的概念。area是需要上傳的參數(shù)之一,要求按順序依次給出每個(gè)頂點(diǎn)的x、y坐標(biāo),形成閉合多邊形區(qū)域。這個(gè)多邊形區(qū)域就是監(jiān)測(cè)區(qū)域,統(tǒng)計(jì)進(jìn)出人流數(shù)量,是以人像是否穿越該區(qū)域?yàn)榕袛鄻?biāo)準(zhǔn)。

了解這些上傳參數(shù)的構(gòu)成后,接下來(lái),只需要按照百度AI平臺(tái)要求的數(shù)據(jù)格式,發(fā)送請(qǐng)求。采用C#發(fā)送數(shù)據(jù)請(qǐng)求的流程如下;

(1)用HttpWebRequest類實(shí)例化一個(gè)對(duì)象request;

(2)設(shè)置request對(duì)象的Method和KeepAlive等屬性;

(3)將圖像、監(jiān)測(cè)區(qū)域等參數(shù)寫入buffer數(shù)組;

(4)調(diào)用GetRequestStream()方法獲取用于寫入請(qǐng)求數(shù)據(jù)的 Stream 實(shí)例;

(5)將buffer數(shù)組寫入request對(duì)象中;

(6)調(diào)用GetResponse()方法獲取響應(yīng)對(duì)象response;

(7)通過(guò)StreamReader讀取響應(yīng)結(jié)果。

3 攝像機(jī)連接

實(shí)現(xiàn)人流量的動(dòng)態(tài)監(jiān)測(cè),需要獲取實(shí)時(shí)的視頻流數(shù)據(jù),通常的手段是連接本地?cái)z像機(jī)或者網(wǎng)絡(luò)攝像機(jī)獲取數(shù)據(jù),同時(shí),要將視頻顯示到用戶窗體界面中。

本地?cái)z像頭視頻流的獲取,可使用AForge庫(kù)中的FilterInfoCollection類實(shí)例化對(duì)象,輸入?yún)?shù)是FilterCategory類的靜態(tài)屬性VideoInputDevice,其可捕獲與本機(jī)相連的所有視頻輸入設(shè)備。獲取視頻流后再和VideoSourcePlayer綁定實(shí)現(xiàn)視頻流實(shí)時(shí)顯示。其中,AForge庫(kù)是一個(gè)基于C#設(shè)計(jì)的程序框架,它包含機(jī)器視覺與圖像處理以及人工智能等類庫(kù)模塊,直接調(diào)用這些庫(kù),可大大提供程序開發(fā)效率。

網(wǎng)絡(luò)攝像機(jī)視頻流的獲取,通過(guò)AForge庫(kù)中的MJPEGStream類實(shí)例化對(duì)象后,綁定到VideoSourcePlayer對(duì)象上。其關(guān)鍵是作為參數(shù)傳入的URL地址要根據(jù)攝像機(jī)的要求,添加用戶名和密碼信息。URL地址形式為:“http://192.168. 1.35:81/videostream.cgi?user=admin&pwd=888888&.mjpg”。

該地址由IP地址、端口號(hào)、用戶名和密碼四部分拼接而成。

在客戶端窗體中監(jiān)視視頻的顯示采用AForge庫(kù)的VideoSourcePlayer控件,使用該控件時(shí),操作步驟如下:

(1)實(shí)例化對(duì)象,并指定VideoSource 屬性,表明視頻流的來(lái)源,其類型為IVideoSource;

(2)注冊(cè)NewFame事件,每當(dāng)有新的一幀數(shù)據(jù)到來(lái)時(shí),觸發(fā)該事件,便于抽幀后做圖形處理;

(3)處理完成后,從時(shí)間委托中取消NewFrame,停止視頻采集。

4 程序結(jié)構(gòu)設(shè)計(jì)

無(wú)論是使用本地?cái)z像機(jī)還是網(wǎng)絡(luò)攝像機(jī),客戶端主要完成視頻數(shù)據(jù)采集、顯示、與百度平臺(tái)交互數(shù)據(jù),響應(yīng)用戶操作請(qǐng)求幾項(xiàng)工作。那么,主程序的工作流程如下:(1)連接攝像機(jī),判斷視頻數(shù)據(jù)流返回是否成功;(2)如果連接不成功,則提示用戶檢查設(shè)備或網(wǎng)絡(luò);(3)如果連接設(shè)備成功,則綁定視頻流數(shù)據(jù)到VidSoucePlayer對(duì)象,用于在界面上顯示視頻以及后續(xù)的數(shù)據(jù)處理結(jié)果;(4)連接百度AI平臺(tái),完成鑒權(quán)操作;(5)如果鑒權(quán)不成功,則拋出異常,其中可能是網(wǎng)絡(luò)故障或者API Key、Secret Key錯(cuò)誤,在用戶界面給出相應(yīng)提示;(6)鑒權(quán)成功,則啟動(dòng)用于控制抽幀頻率的定時(shí)器。其中,定時(shí)時(shí)間間隔的設(shè)置應(yīng)比理論計(jì)算值略小,系統(tǒng)要求幀率至少2幀/秒,理論時(shí)長(zhǎng)為500ms,考慮實(shí)際的程序響應(yīng)耗時(shí),可將該值設(shè)置為400ms;(7)后續(xù)工作在系統(tǒng)事件響應(yīng)程序中完成。主程序流程圖如圖1所示。

系統(tǒng)事件響應(yīng)程序主要包含由視頻顯示(VideoSoucePlayer)對(duì)象產(chǎn)生的3個(gè)事件。一是繪圖(Paint)事件。在該事件中,根據(jù)識(shí)別到的人體坐標(biāo)位置,繪制跟蹤框到視頻窗口中,同時(shí),將統(tǒng)計(jì)的人流量結(jié)果數(shù)據(jù)繪制到視頻中;二是新幀(NewFrame)事件。視頻中每來(lái)一個(gè)新的幀數(shù)據(jù),則觸發(fā)該事件,在其中要判斷定時(shí)時(shí)間是否到,如果定時(shí)時(shí)間到,則抽取當(dāng)前幀的數(shù)據(jù),將其上傳到百度AI平臺(tái)處理,并獲取返回的結(jié)果;三是視頻窗口中的鼠標(biāo)單擊(MouseClick)事件。該事件提供給用戶在視頻中通過(guò)鼠標(biāo)繪制一個(gè)多邊形,

圖1 主程序流程圖

實(shí)現(xiàn)自定義監(jiān)測(cè)區(qū)域。這三個(gè)事件的結(jié)構(gòu)如圖2所示。在系統(tǒng)設(shè)計(jì)上,考慮到程序包含有用于與客戶交互的應(yīng)用界面、視頻流數(shù)據(jù)獲取、網(wǎng)絡(luò)數(shù)據(jù)交換等幾項(xiàng)操作。所以,要將不同任務(wù)交給不同線程處理,保證程序運(yùn)行流暢。在響應(yīng)NewFrame事件的處理函數(shù)中,采用定時(shí)器每隔400ms抽取一幀圖像來(lái)處理,并用線程池ThreadPool創(chuàng)建新的線程完成網(wǎng)絡(luò)數(shù)據(jù)交換工作。

圖2 VideoSoucePlayer對(duì)象事件

另外,由百度AI平臺(tái)處理后的結(jié)果數(shù)據(jù),作為全局變量存儲(chǔ),多個(gè)事件處理函數(shù)可訪問該數(shù)據(jù),返回的結(jié)果形式為JSON格式的字符串。例如:

{" person_num": 1,

" person_Info ": [{"ID": 58,

"location": {

"width": 160,

"top": 255,

"height": 137,

"left": 300}

}],

"person_count": {"in": 0, "out": 0},

"log_id": 2944060039282210706

}

表示當(dāng)前幀監(jiān)控畫面中有1個(gè)人,人體框左上角頂點(diǎn)坐標(biāo)位置在(300,255),寬度160 ,高度137,當(dāng)前幀進(jìn)入?yún)^(qū)域的瞬時(shí)人數(shù)為0,當(dāng)前幀離開區(qū)域的瞬時(shí)人數(shù)也為0,人體的ID編號(hào)為58,幀編號(hào)為2944060039282210706。特別注意,返回的進(jìn)出區(qū)域人數(shù)是當(dāng)前幀的瞬時(shí)結(jié)果,然而,實(shí)際工程中往往需要累計(jì)一段時(shí)間內(nèi),總的進(jìn)出區(qū)域人數(shù)。實(shí)現(xiàn)該功能,只需要在獲取平臺(tái)的JSON數(shù)據(jù)后,判斷當(dāng)前幀編號(hào)與上次是否發(fā)生變化,如果幀編號(hào)發(fā)生改變,則將該幀對(duì)應(yīng)的進(jìn)出人數(shù)分別累加到統(tǒng)計(jì)的總數(shù)中。

百度AI平臺(tái)返回結(jié)果,雖然可以包含跟蹤框渲染后的圖片信息,但直接獲取該結(jié)果,會(huì)大大增加網(wǎng)絡(luò)數(shù)據(jù)量,影響系統(tǒng)的整體性能。因此,通常只要求返回人體框的坐標(biāo)和ID信息,然后,在客戶端自己繪制跟蹤框。該功能是在VideoSourcePlayer的Paint事件處理函數(shù)中完成。從全局變量result中取得坐標(biāo)信息,采用繪制多邊形函數(shù)DrawPolygon實(shí)時(shí)繪制跟蹤框,同時(shí),將進(jìn)出區(qū)域人數(shù)信息繪制到視頻顯示窗體左上角。

5 測(cè)試與分析

客戶端測(cè)試界面如圖3所示。左邊區(qū)域是當(dāng)前攝像機(jī)的監(jiān)控畫面,右邊文本框是實(shí)時(shí)返回的檢測(cè)結(jié)果數(shù)據(jù)。根據(jù)用戶需要,提供了連接本地?cái)z像機(jī)或者網(wǎng)絡(luò)攝像機(jī)的選擇。為了方便調(diào)試,讓用戶能實(shí)時(shí)觀察人體進(jìn)出區(qū)域時(shí)的運(yùn)動(dòng)軌跡,給人體框添加了聚類點(diǎn),當(dāng)聚類點(diǎn)跨過(guò)設(shè)定的檢測(cè)邊框時(shí),統(tǒng)計(jì)的進(jìn)出人體數(shù)量會(huì)有相應(yīng)變化。

圖3 客戶端監(jiān)測(cè)界面

實(shí)驗(yàn)1:測(cè)試人體檢測(cè)效果。首先,連接本地USB攝像頭,分辨率640*480,焦距4mm,置于水平角度,對(duì)戴口罩的人體正面,背面,側(cè)面3種姿態(tài),經(jīng)多次測(cè)試,都能正確檢測(cè)。然后,連接網(wǎng)絡(luò)攝像機(jī),分辨率640*480,焦距3.6mm,置于2.8米高度,俯視視角,多測(cè)測(cè)試,證明同樣能準(zhǔn)確檢測(cè)出人體目標(biāo)。其中的一組測(cè)試截圖如圖4所示。該實(shí)驗(yàn)說(shuō)明百度AI平臺(tái)人體檢測(cè)算法的是通過(guò)頭、肩等特征實(shí)現(xiàn),具有較好的適應(yīng)性。

圖4 測(cè)試人體檢測(cè)效果

實(shí)驗(yàn)2:采用實(shí)驗(yàn)1的網(wǎng)絡(luò)攝像頭做動(dòng)態(tài)監(jiān)測(cè),將監(jiān)控畫面的下半部分指定為監(jiān)測(cè)區(qū)域,測(cè)試結(jié)果如表1所示。漏檢的主要原因是受網(wǎng)絡(luò)速度影響,導(dǎo)致與百度平臺(tái)交互數(shù)據(jù)的過(guò)程中,部分幀數(shù)據(jù)延遲,人體穿越監(jiān)測(cè)區(qū)域時(shí),沒有形成完整的軌跡。針對(duì)這一個(gè)問題,有兩種方法改善。一是,在客戶端, 對(duì)每幀數(shù)據(jù)的人體框做聚類后,自主開發(fā)軌跡形成和判斷進(jìn)出區(qū)域的算法,只將人體識(shí)別算法交給百度AI平臺(tái)完成;二是,不使用網(wǎng)絡(luò)在線訪問的方式,而采用百度正在測(cè)試的離線SDK開發(fā)包;

表1 動(dòng)態(tài)監(jiān)測(cè)結(jié)果

6 結(jié)語(yǔ)

基于百度AI平臺(tái)提供的API接口,采用C#語(yǔ)言開發(fā)人流量監(jiān)測(cè)的客戶端程序,是一種實(shí)現(xiàn)人流量監(jiān)測(cè)統(tǒng)計(jì)的高效方案。介紹了采用AForge庫(kù)連接攝像機(jī)的方法,以及通過(guò)Access Token認(rèn)證后, 與百度平臺(tái)交換數(shù)據(jù)的方法。為了保證視頻流暢播放和數(shù)據(jù)交互同步完成,處理好各種系統(tǒng)事件的響應(yīng),采用多線程方式優(yōu)化了程序結(jié)構(gòu)。實(shí)驗(yàn)結(jié)果表明這種開發(fā)方式既能快速實(shí)現(xiàn)人流量監(jiān)測(cè)功能,又有較高的準(zhǔn)確性。人流量統(tǒng)計(jì)準(zhǔn)確率達(dá)97.5%,并且還可通過(guò)2種手段進(jìn)一步優(yōu)化提高。另外,采用API方式實(shí)現(xiàn)人流量監(jiān)測(cè),也為算法研究者提供了基礎(chǔ),使其能快速掌握項(xiàng)目的業(yè)務(wù)邏輯,也為算法優(yōu)化提供了一個(gè)對(duì)比的基準(zhǔn)。

[1]楊帆.基于人流量檢測(cè)的改進(jìn)CN算法[J]. 計(jì)算機(jī)工程與設(shè)計(jì),2020,41(02):411-416.

[2]殷濤,崔佳冬. 視頻監(jiān)控行人流量統(tǒng)計(jì)系統(tǒng)的設(shè)計(jì)[J].電子科技,2019,32(12):48-52.

[3]Chen L,Lu Y,Sheng Q, et al. Estimating Pedestrian Volume Using Street View Images: a Large-scale Validation Test[J]. Computers, Environment and Urban Systems,2020, 81.

[4]王存娥,楊延寧,任新成,等. 室內(nèi)人流量 監(jiān)測(cè)系統(tǒng)設(shè)計(jì)[J].自動(dòng)化儀表, 2018,39(09):49-51.

[5]李佐龍,王幫海,盧增.多尺度特征融合重建的行人檢測(cè)方法[J].計(jì)算機(jī)工程與應(yīng)用,2020(5):14.

[6]李歡,陳先橋,施輝,等. 基于SSD的行人頭部檢測(cè)方法[J].計(jì)算機(jī)工程與設(shè)計(jì), 2020,41(03): 827-832.

[7]曹帥,張曉偉,馬健偉.基于跨尺度特征聚合網(wǎng)絡(luò)的多尺度行人檢測(cè)[J].北京航空航天大學(xué)學(xué)報(bào),2020(5):69.

[8]百度AI開放平臺(tái).人流量統(tǒng)計(jì)動(dòng)態(tài)版[EB/OL].2019-11-25https://ai.baidu.com/ai-doc/ BODY/wk3cpyyog.

TP391.41

A

1672-1047(2020)06-0143-04

10.3969/j.issn.1672-1047.2020.06.38

2020-10-23

冉涌,男,碩士,講師。研究方向:無(wú)線傳感器網(wǎng)絡(luò)、智能信號(hào)處理。

[責(zé)任編輯:羅幼平]

猜你喜歡
人流量視頻流攝像機(jī)
邊緣實(shí)時(shí)視頻流分析系統(tǒng)配置動(dòng)態(tài)調(diào)整算法研究
基于視頻流傳輸中的擁塞控制研究
提高高職院校圖書館現(xiàn)刊閱覽室人流量的策略研究
看監(jiān)控?cái)z像機(jī)的4K之道
三級(jí)客運(yùn)汽車站服務(wù)能力影響因素分析
攝像機(jī)低照成像的前世今生
新安訊士Q6155-E PTZ攝像機(jī)
美國(guó)視頻流市場(chǎng)首現(xiàn)飽和征兆
小吃店選址實(shí)戰(zhàn)經(jīng)驗(yàn)
如何消除和緩解“攝像機(jī)恐懼癥”
新聞前哨(2015年2期)2015-03-11 19:29:25
浠水县| 青阳县| 高唐县| 金溪县| 馆陶县| 上饶市| 垦利县| 宜阳县| 万宁市| 延川县| 行唐县| 丰镇市| 确山县| 丹巴县| 慈利县| 罗平县| 临潭县| 玉树县| 通州区| 穆棱市| 固安县| 江安县| 永定县| 台东县| 喜德县| 林口县| 台南市| 河池市| 南涧| 陆河县| 高清| 辉南县| 元阳县| 三河市| 新沂市| 泌阳县| 柞水县| 观塘区| 乃东县| 芦山县| 保康县|