肖 巍, 盧勁伉, 李博深, 吳啟槊, 白英東, 潘 超
(長春工業(yè)大學 計算機科學與工程學院, 吉林 長春 130012)
人流量檢測是計算機視覺中的經(jīng)典問題,也是長期以來難以解決的問題。人流量檢測主要解決的是能在圖片或視頻幀中識別所有行人,包括位置和數(shù)量。人流量檢測技術具有廣泛的應用背景和工程價值,可以用于客流量統(tǒng)計與分析、智能系統(tǒng)等。目前主要面臨三大難題:
1)遮擋問題。在很多公共地點中,行人非常密集,存在嚴重遮擋,只能看到人體的一部分,這給檢測算法帶來了嚴重挑戰(zhàn)。
2)背景復雜問題。無論是室內(nèi)還是室外,人流量檢測一般面臨的背景都非常復雜,有些物體的外觀和形狀、顏色、紋理很像人體,導致算法無法準確區(qū)分。
3)檢測速度問題。人流量檢測一般采用復雜模型,運算量相當大,要達到實時非常困難,需要大量優(yōu)化。
近些年,隨著研究人員的投入和深度學習的發(fā)展。圖像分類[1]、目標識別[2]、 圖像分割和檢測[3]等得到了極大發(fā)展,很多優(yōu)秀的算法也隨之而來:
1)R-CNN網(wǎng)絡[4]。R-CNN(全稱Region-CNN)是第一個成功將深度學習應用到目標檢測上的算法。傳統(tǒng)的目標檢測方法大多以圖像識別為基礎。一般可以在圖片上使用窮舉法選出所有物體可能出現(xiàn)的區(qū)域框,對這些區(qū)域框提取特征,并使用圖像識別方法分類,得到所有分類成功的區(qū)域后,通過非極大值抑制輸出結果。R-CNN遵循傳統(tǒng)目標檢測思路,在提取特征這一步使用深度卷積網(wǎng)絡提取的特征代替?zhèn)鹘y(tǒng)的特征(如 SIFT、HOG 特征等)。
2)SPP-Net網(wǎng)絡[5]。SPP-Net是一種可以不用考慮圖像大小,輸出圖像固定長度的網(wǎng)絡結構,并且在圖像變形情況下表現(xiàn)穩(wěn)定?;舅枷胧?,輸入整張圖像,進行一次conv得到整張圖的Feature Map,然后找到每個候選框在Feature Map上的映射Patch,將此Patch作為每個候選框的卷積特征輸入到SPP layer和之后的層。這種方法節(jié)省了大量的前一個conv所花費的計算時間。所以SPP-Net在檢測速度上比R-CNN快24~102倍。
3)Fast RCNN[6]。Fast RCNN含有一個可以視為單層SPP-Net的網(wǎng)絡層 ----ROI Pooling,對每個不同的region都提取一個固定緯度的特征表示,并通過softmax函數(shù)進行類型識別。同時,把bbox regression加入到神經(jīng)網(wǎng)絡內(nèi)部,與region分類和并成multi-task模型,這兩個任務能夠共享卷積特征,并相互促進。執(zhí)行Fast RCNN時,首先輸入一張完整的圖片,卷積一次,其次每個候選框找到相應的映射,最后輸入映射Patch在第五個卷積層得到每個候選框的特征。Fast RCNN相對于R-CNN的提速原因在于: R-CNN對每個候選區(qū)域提取特征,而Fast RCNN是整張圖片只提取一次特征,原因在于Fast RCNN將候選框映射到conv5上,而SPP只需要計算一次特征,其余的操作在conv5上執(zhí)行。
4)Faster RCNN[7]。Faster RCNN網(wǎng)絡在Fast RCNN網(wǎng)絡的基礎上添加RPN,卷積特征輸入到RPN,得到圖片中候選框的特征信息。在不用尋找到每個候選框在Feature Map的情況下映射Patch,將此Patch作為每個候選框的卷積特征輸入到SPP layer和之后的層,進一步提高了物體檢測的速度和精度。
2016年,Kaiming He等[8]詳細提出了對于使用Faster RCNN實現(xiàn)對物體檢測方法,重點介紹了Faster RCNN網(wǎng)絡的結構和物體檢測方法。文中基于Faster RCNN 實現(xiàn)對人流量的檢測,檢測對象是公共地點的行人。針對檢測人流量這一場景下,發(fā)現(xiàn)Faster RCNN有進一步優(yōu)化的空間,文中在FasterRCNN中針對RPN網(wǎng)絡[7]做了優(yōu)化,重構了RPN網(wǎng)絡生成候選框的實現(xiàn)策略,提高了行人檢測的速度。
XML和JSON的主要成分:
XML:element、attribute和element content。
JSON:object、array、string、number、boolean(true/false)和null。
XML需要選擇怎么處理element content的換行,而JSON string則不需作這個選擇。XML映射數(shù)組沒大問題,就是數(shù)組元素tag比較重復冗余,JSON 比較易讀,JSON的true/false/null也容易統(tǒng)一至一般編程語言的對應語義。
傳統(tǒng)的Faster RCNN代碼只支持xml類型數(shù)據(jù)的讀取。文中補充了對JSON數(shù)據(jù)文件的讀取,需要JSON文件的key值有以下關鍵參數(shù):name(檢測圖片的相對路徑),num(圖片中的人數(shù)),annotation(圖片中所有行人的候選框信息,(x,y)表示框左上角點的坐標,w和h分別表示圖片的寬和高,坐標點與寬、高相加(x+w,y+h)表示框的右下角的坐標))。
對JSON文件讀取的補充使得項目更加完整,支持讀取JSON類型的數(shù)據(jù),兼容行也有提高。
傳入的圖片或視頻幀送入Faster RCNN網(wǎng)絡框架,先經(jīng)過RPN網(wǎng)絡[7]進行特征提取,得到特征圖片,特征圖片上的特征值數(shù)組計算機可以“看見”和“理解”。原始框架中RPN網(wǎng)絡的候選框生成策略:對于該圖片的每一個像素點,考慮有Kanchor=3*3個候選框,如圖1所示。
三種面積分別是128*128、256*256、512*512,每種面積的長寬比分別有1∶1,1∶2,2∶1。
文中的檢測對象是行人,根據(jù)百度之星比賽提供的開源數(shù)據(jù)集,計算了3 000張圖片中行人框的高比長,得到平均值為2.311,為了方便訓練按照四舍五入的方法得到結果為2。因此在訓練時保留(1∶2)的候選框,所以將原始的候選框生成策略(1∶1,1∶2,2∶1)*(128,256,512)改進為文中的(1∶2)*(128,256,512),只保留(1∶2)比例的候選框進行行人的檢測,更改后的Kanchor=1*3個候選框如圖2所示。
最終圖片生成候選框的總數(shù)為
Nanchor=WConv*HConv*Kanchor,
(1)
式中:WConv----圖片寬上的像素點數(shù);
HConv----圖片高上的像素點數(shù);
RPN網(wǎng)絡會生成region proposals,通過Softmax[7]判斷anchors屬于Foreground(前景)或者Background(背景),并得到偏移量,再利用bounding box regression修正anchors,獲得精確的proposals。而最后的Proposal層則負責綜合positive anchors和對應bounding box regression偏移量獲取proposals,同時剔除太小和超出邊界的proposals。
將proposals和圖片特征信息傳入ROI池化層[7]進行檢測,獲得每個候選框的得分,再經(jīng)過Classification進行類別分類,將最終結果傳入全連接層輸出圖片結果。
文中檢測圖片所花的時間單位為秒。原始的Faster RCNN網(wǎng)絡1 s內(nèi)可以檢測多張圖片,但是要實現(xiàn)實時檢測,還是存在延遲問題,文中設計以下方法解決時間上的延遲和同步問題。
文中支持兩種檢測方式:視頻檢測和直播檢測。兩種不同的檢測方法需要的時間軸也不同。視頻檢測時,時間軸為視頻中的時間。直播檢測時,時間軸為系統(tǒng)時間。
處理視頻時,先獲取到視頻的Rate(幀率),再把視頻截成視頻幀,將視頻幀送入Faster RCNN網(wǎng)絡進行檢測,檢測后的圖片保存到本地文件夾,并把在每張圖片上檢測到的人數(shù)信息累加到Shuman中,每檢測Rate個圖片后相當于檢測了視頻中的1 s,此時計算這1 s的人數(shù)信息Nhuman,
(2)
式中:Shuman----1 s內(nèi)人數(shù)信息的總數(shù);
Rate----幀率信息。
綜上所述,考慮到碳限額與交易政策,本文為有多種配方、生產(chǎn)多種鐵水產(chǎn)品的高爐煉鐵廠制定合理的生產(chǎn)計劃,并探討碳限額、碳價對生產(chǎn)的影響。
最后將檢測好的圖片合成視頻,并將Rate信息保存到JSON文件中,至此一段視頻處理完畢,獲得視頻中的人流量信息。
處理直播檢測功能時,設定時間t記錄系統(tǒng)經(jīng)過的時間,獲取攝像頭捕獲的圖片,將圖片送入Faster RCNN網(wǎng)絡檢測,檢測到的人數(shù)信息累加到Shuman中,每當執(zhí)行累加時,累加次數(shù)Ttimes加1,當t≥1 s時,計算Nhuman,
(3)
式中:Shuman----1 s內(nèi)人數(shù)信息的總數(shù);
Ttimes----累加的次數(shù)。
計算完成后,將Shuman和Ttimes清零,進入下一個循環(huán)。如此循環(huán),保證人數(shù)信息和系統(tǒng)時間軸同步,將60 s內(nèi)的圖片合成視頻,并將這60 s內(nèi)的人數(shù)信息保存到JSON文件中,保存的視頻和視頻信息實時更新,即完成了直播檢測,實現(xiàn)了直播到直播加檢測信息。
最終兩種檢測方式檢測到的Nhuman向上取整,結果保存到本地文件中,向上取整可以最大化地減小漏查、誤查所帶來的誤差,每隔60 s將內(nèi)存中的數(shù)據(jù)保存到JSON文件中,作為這60 s時間段內(nèi)的人數(shù)信息。
TCP協(xié)議提供的是面向?qū)ο蟮耐ㄐ艂鬏?,穩(wěn)定性相對較高,因此網(wǎng)頁端的數(shù)據(jù)傳輸采取TCP協(xié)議。但是現(xiàn)今的網(wǎng)絡通信中,無線網(wǎng)絡傳輸占有越來越高的比重,而無線網(wǎng)絡不同于有線網(wǎng)絡,數(shù)據(jù)丟失有可能是由于誤碼丟包,而不是網(wǎng)絡擁堵。
采用傳統(tǒng)的TCP協(xié)議,則會導致?lián)砣刂票粏⒂?,網(wǎng)絡性能將大幅下滑。
因此需要優(yōu)化無線網(wǎng)絡中的TCP協(xié)議。對于TCP協(xié)議,文中將其與自適應流媒體傳輸技術DASH(dynamic adaptive streaming over HTTP)[10]相結合,從而對TCP協(xié)議里面的擁塞控制算法進行相應優(yōu)化。這樣即可有效地防止在之前的擁塞控制算法超過空閑時間之后迅速降低擁塞窗口[10],將擁塞窗口的大小保持在一個相比之前更加恒定的值。
因此,這種技術能夠提供良好的使用體驗。
在檢測圖片和其所用的時間時,常常因為檢測的圖片太多、太密集,不方便對比,通過將密集的數(shù)據(jù)平滑化,使得數(shù)據(jù)清晰。根據(jù)人體功能學,人眼一次看50個數(shù)據(jù)的統(tǒng)計圖時會比較清晰,文中在繪制統(tǒng)計圖時將數(shù)據(jù)平滑化處理,橫坐標長度設置為50。
具體算法用偽代碼描述見表1。
表1 數(shù)據(jù)平滑化算法偽代碼
3.1.1 硬件
采用1 080ti顯卡和cuda驅(qū)動做計算,CPU為E5系列3核,內(nèi)存8 G。
3.1.2 軟件
操作系統(tǒng)采用Ubuntu,基于Tensorflow框架進行訓練,訓練前采用VGG-16作為權重初始值,迭代次數(shù)為40 000次。
選用VOC2007數(shù)據(jù)集和2019年軟件杯的測試視頻做測試數(shù)據(jù),分別用原始的FasterRCN網(wǎng)絡和做出修改的FasterRCNN網(wǎng)絡進行檢測。在同樣的環(huán)境下,對同一個測試視頻做檢測,記錄兩種網(wǎng)絡在檢測視頻的每一幀中所用的時間,進行對照實驗,將修改前后的檢測時間進行對比。實驗結果分別如圖3和圖4所示(平滑化2.5)。
圖4平滑化的目的是將橫坐標數(shù)據(jù)縮小為50,使結果看起來明顯,對比平滑化前橫坐標會有減少,如果數(shù)據(jù)小于50,不用做平滑化。
根據(jù)兩個網(wǎng)絡檢測時間的統(tǒng)計圖可以看出,經(jīng)過修改后的RPN網(wǎng)絡更適合用于行人檢測,不僅用于檢測圖片的時間短,而且檢測的準確率也略有提升,經(jīng)過多次檢測后得到數(shù)據(jù)見表2。
表2 RPN網(wǎng)絡修改前后對照表
修改前后檢測效果分別如圖5和圖6所示。
圖5和圖6為軟件杯比賽用于測試的視頻中的截圖,通過上面的結果分析,每張圖片檢測效率提升了2.5%左右,文中提供了一個檢測人流量算法生成候選框的思路,并通過實驗驗證了其速度提高的效果,也驗證了修改候選框生成策略對于人流量檢測的可行性,并在準確率和檢測時間兩個重要指標上都有提高。
隨著社會的不斷發(fā)展,公共地點的人流量壓力也逐漸加大。監(jiān)控人流量成為一個重要方式來保證人們的安全和交通的順暢。文中對原始Faster RCNN網(wǎng)絡存在的延時、滯后問題,提出了改進的Faster RCNN網(wǎng)絡,通過改進RPN、減少anchor的數(shù)量在保證準確率的前提下提高實時性。
利用VOC2007數(shù)據(jù)集進行訓練,在原始網(wǎng)絡和改進網(wǎng)絡上進行測試。實驗結果表明,減少anchor的數(shù)量和改進訓練模型的數(shù)據(jù)類型,可以在保證準確率的情況下,提高網(wǎng)絡的實時性,此網(wǎng)絡相比于原始網(wǎng)絡在檢測時間上平均每張圖片用時減少了2%。在直播檢測人流量過程中,幀率為15~25,可以相對有效地保證數(shù)據(jù)的實時性和檢測視頻的流暢度。
人流量檢測速度的提升對實時檢測公共地點的人流量有很重要的作用。檢測速度提高后能加快對人流量信息的檢測、統(tǒng)計人流量信息等,并通過網(wǎng)絡快速將結果信息傳送給工作人員。根據(jù)檢測到的信息做出相應的分析,實時了解公共地點的信息。未來可以將本產(chǎn)品用于及時檢測城市各個街道、車站的人流量信息,預防擁擠和踩踏事故的發(fā)生。另外,還可以將其用于檢測車輛等其他物體,實現(xiàn)多對象的檢測。