王崇國 石剛 陳田?!⒌つ荨⊥踔具h(yuǎn) 周司宇
摘要:針對人員密集場所人流量統(tǒng)計準(zhǔn)確度較低,實時性較差的問題,提出采用基于OpenCV的算法實時進行人流量分析。首先,用Tensorflow中的視頻分解為圖像算法將采集到的視頻分解為幀,對采集到的視頻幀圖像進行灰度化,去噪聲等預(yù)處理增強前景物體邊緣;其次,通過基于MobileNet V2的SSD算法進行模型訓(xùn)練,meanshift算法進行跟蹤檢測實現(xiàn)人流量計數(shù);最后,將實時數(shù)據(jù)通過展示系統(tǒng)輸出并實現(xiàn)數(shù)據(jù)的可視化。結(jié)果表明,算法具有較高準(zhǔn)確性和實時性。
關(guān)鍵詞:深度學(xué)習(xí);OpenCV;SSD
中圖分類號:TP212? ? ? ? ?文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2021)07-0235-02
Abstract:Aiming at the low accuracy and poor real-time performance of pedestrian flow statistics in densely populated places, this paper proposes an algorithm based on OpenCV for real-time traffic analysis. Firstly, the video is decomposed into frames by using Tensorflow's video decomposition algorithm, and the collected video frame images are grayed and denoised to enhance the edge of the foreground object; secondly, the foreground object edge is enhanced by using MobileNet The SSD algorithm of V2 is used to train the model, and the meanshift algorithm is used to track and detect the pedestrian flow. Finally, the real-time data is output through the display system and the data visualization is realized. Experimental results show that the algorithm has high accuracy and real-time performance.
Keywords:deep learning; OpenCV; SSD
隨著現(xiàn)代社會逐步變得智能化,計算機視覺和圖像處理已經(jīng)廣泛應(yīng)用到工業(yè),醫(yī)療,軍事,通信以及航空航天等各個領(lǐng)域。其中對于視頻的處理具有廣闊的應(yīng)用前景,監(jiān)控在很多地方發(fā)揮著至關(guān)重要的作用,例如安保和巡查工作等,但觀察監(jiān)控中的視頻卻是一件相當(dāng)乏味的工作。所以我們利用深度學(xué)習(xí)等知識,希望將人類從這一乏味的工作中解放出來。
現(xiàn)實中,當(dāng)面臨海量的視頻數(shù)據(jù)時,視頻數(shù)據(jù)的非結(jié)構(gòu)化特點,使得計算機很難得到視頻中具體有效的數(shù)據(jù)。如何讓視頻中的非結(jié)構(gòu)化信息自動化的加工生成結(jié)構(gòu)化的數(shù)據(jù),是當(dāng)前研究的一個重要熱點。通過對視頻信息的結(jié)構(gòu)化,可以得到超過人工值守獲取更多更有價值的信息。然而,隨著科技水平的不斷提高,攝像頭的清晰度越來越高、每秒幀數(shù)也在增加,成本卻不斷在降低。但是加工和處理視頻所需的計算資源卻也在不斷增長。如果加上人流量監(jiān)控等功能,背后需要更為龐大的計算資源支持。否則無法進行實時處理,從而導(dǎo)致視頻結(jié)構(gòu)化設(shè)想難以在現(xiàn)實中全面應(yīng)用。
針對以上問題,本文提出的基于OpenCV的人流量檢測算法,首先用Tensorflow中的算法將采集到的視頻分解為幀,對采集到的視頻幀圖像進行灰度化、去噪聲等預(yù)處理增強前景物體邊緣,減少外界干擾;其次,通過基于MobileNet V2的SSD算法進行模型的訓(xùn)練,meanshift算法進行跟蹤檢測實現(xiàn)人流量計數(shù);最后,將實時數(shù)據(jù)通過展示系統(tǒng)輸出并實現(xiàn)數(shù)據(jù)的可視化。測試結(jié)果表明,算法在以往的基礎(chǔ)上提高了準(zhǔn)確性和實時性。
1設(shè)計思路
人流量統(tǒng)計系統(tǒng)主要包括采集人像信息,圖像預(yù)處理,跟蹤識別,計數(shù)四部分。對于采集到的視頻幀圖像先進行灰度化處理和去噪聲比處理,為方便統(tǒng)計結(jié)果,結(jié)合SSD模型和HOG特征提取和SVM分類器進行人體目標(biāo)的識別,使識別的目標(biāo)符合人物形象的40%即可作為一個目標(biāo)量。之后結(jié)合Android平臺的推流系統(tǒng),以及封裝opencv、OpenKinect、videoInput等方法在Android平臺上進行結(jié)果處理功能,為精確統(tǒng)計數(shù)人流量和有效避免障礙物遮擋和目標(biāo)變形,計數(shù)采用Meanshift的算法。
2圖像預(yù)處理
2.1 圖像灰度化
由于平均值法和最大值法在灰度化時的效果較加權(quán)平均法效果較差,所以采用加權(quán)平均法。
加權(quán)平均法中,由于人眼對綠色敏感最高,對藍(lán)色敏感最低,故采用心理學(xué)灰度公式(1):
以上公式中表示三個通道的權(quán)值,且三者之和為1。
2.2 圖像去噪聲
采用中值濾波法,該方法擁有諸多優(yōu)點,同時存在丟失圖像細(xì)節(jié)的缺陷。為避免這種缺陷,采用基于個數(shù)的中值濾波法。該方法需設(shè)定一閾值T,用以限制鄰域內(nèi)像素點與中心像素點灰度差絕對值的范圍,從而將含噪圖像中的像素點的屬性劃分為以下三類:噪點、圖像邊緣以及平坦區(qū)域。以3*3窗口為例,假設(shè)中心像素點為8,定義m為中心像素點灰度差分的絕對值大于閾值T的相鄰像素點的個數(shù),則當(dāng)m≤2時,中心像素點為平坦區(qū)域點;當(dāng)2 3 跟蹤檢測技術(shù) 3.1 帶有MobileNet v2的SSD算法 設(shè)計采用了帶有MobileNet v2的SSD算法,如圖1所示。和MobileNet V1相比,MobileNet V2改進有兩點:1)Linear Bottlenecks,為了保證模型的表達(dá)能力,去掉了小維度輸出層后面的非線性激活層;2)Inverted Residual block,該結(jié)構(gòu)先擴增再縮減,與residual block正好相反,因此shotcut連接的是維度縮減后的feature map。 當(dāng)stride=1時,才會使用elementwise 的sum將輸入和輸出特征連接; stride=2時,無short cut連接輸入和輸出特征。 SSD算法的檢測精度和速度都非常出色,主要是采用了基于回歸的模式,可以直接在網(wǎng)絡(luò)中回歸出物體的位置和類別。同時利用基于區(qū)域的相關(guān)概念,在檢測過程中,使用許多候選區(qū)域作為ROI。 SSD的骨干網(wǎng)絡(luò)是基于傳統(tǒng)的圖像分類網(wǎng)絡(luò),經(jīng)過卷積層和池化層的處理,可以得到特征圖,從而在特征圖上進行回歸,得到物體的位置和類別。 SSD對多個特征圖進行分析,對于神經(jīng)網(wǎng)絡(luò),淺層的特征圖適合進行小物體的檢測;而較深的特征圖適合大物體的檢測。 3.2 meanshift算法 meanshift算法實際是一種基于密度的聚類算法。其主要思路是計算某一點A與其周圍半徑R內(nèi)的向量距離的平均值M,計算出該點下一步移動方向(A=M+A)。如果該點不在發(fā)生變化時,該點就會與周圍的區(qū)域點形成一個類簇,計算出這個類簇與其他類簇的距離,當(dāng)該距離小于閾值時,會合并為一個類簇,否則就單獨形成一個類簇,以此類推,直到所有點被選取。 對于給定的n維空間中的m個樣本點,i=1...m,對于其中一個樣本X,它的均值漂移向量為式(2): 其中Sh指的是一個半徑為h的球狀領(lǐng)域,定義為式(3): meanshift算法根據(jù)反向投影圖和輸入的方框進行meanshift迭代,它是向中心移動,就是向反向投影圖中概率大的地方移動,所以始終會移動到目標(biāo)上。 4 系統(tǒng)實現(xiàn) 使用安卓端推流,將攝像頭采集的視頻推到服務(wù)器上。Android端首先進行了用戶的登錄注冊,登錄后可以查看攝像頭所錄視頻,將視頻傳到服務(wù)器端。在安卓端的代碼開發(fā)中進行了Butter Knife的安裝。Butter Knife通過注解的方式來替代android中view的相關(guān)操作。減少大量的findViewById以及setOnClickListener代碼,且對性能的影響較小。使用JavaCV中的utility類方便在Java平臺上調(diào)用這些接口。 基于Tensorflow的人流量監(jiān)測系統(tǒng)對輸入的圖像進行處理,首先用智能攝像頭采集視頻,用Tensorflow中的視頻分解為圖像算法,將采集到的視頻分解為幀,分解后的圖片保存到一個文件夾中作為訓(xùn)練集。開始要在config配置文件中定義訓(xùn)練任務(wù),配置好相應(yīng)的路徑,然后執(zhí)行命令開始訓(xùn)練。最后導(dǎo)出訓(xùn)練模型,然后在視頻流上使用它,從視頻源中提取單幀,通過OpenCV的VedioCapture方法完成。 5 系統(tǒng)測試 對該軟件的主要功能進行測試,首先對視頻進行取幀,從而進行檢測,測試結(jié)果如圖2所示。 從圖片中可以看出,人流量識別正確率相對較高,但在人流特別密集的情況下有些人并未識別出來,對算法仍需進行改進。 6結(jié)語 基于OpenCV來研究人流量檢測的相關(guān)方法,與一些目標(biāo)檢測的算法進行了比較,最終在檢測時選取了帶有MobileNet v2的SSD算法,該算法相對來說在檢測精度和速度方面都有了一定的提高。該系統(tǒng)人流量識別正確率相對較高,算法具有較高準(zhǔn)確性和實時性。 參考文獻(xiàn): [1]卜秋月.基于OpenCV的人臉識別系統(tǒng)的設(shè)計與實現(xiàn)[D].吉林大學(xué),2015. [2]吳曉陽.基于OpenCV的運動目標(biāo)檢測與跟蹤[D].浙江大學(xué),2008. [3]牛秋月,李超,唐國良.基于智能監(jiān)控視頻的人流量統(tǒng)計[J].電子技術(shù)與軟件工程,2018(4):64-66. 【通聯(lián)編輯:代影】