王崇國 石剛 陳田希 劉丹妮 王志遠 周司宇



摘要:針對人員密集場所人流量統計準確度較低,實時性較差的問題,提出采用基于OpenCV的算法實時進行人流量分析。首先,用Tensorflow中的視頻分解為圖像算法將采集到的視頻分解為幀,對采集到的視頻幀圖像進行灰度化,去噪聲等預處理增強前景物體邊緣;其次,通過基于MobileNet V2的SSD算法進行模型訓練,meanshift算法進行跟蹤檢測實現人流量計數;最后,將實時數據通過展示系統輸出并實現數據的可視化。結果表明,算法具有較高準確性和實時性。
關鍵詞:深度學習;OpenCV;SSD
中圖分類號:TP212? ? ? ? ?文獻標識碼: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
隨著現代社會逐步變得智能化,計算機視覺和圖像處理已經廣泛應用到工業,醫療,軍事,通信以及航空航天等各個領域。其中對于視頻的處理具有廣闊的應用前景,監控在很多地方發揮著至關重要的作用,例如安保和巡查工作等,但觀察監控中的視頻卻是一件相當乏味的工作。所以我們利用深度學習等知識,希望將人類從這一乏味的工作中解放出來。
現實中,當面臨海量的視頻數據時,視頻數據的非結構化特點,使得計算機很難得到視頻中具體有效的數據。如何讓視頻中的非結構化信息自動化的加工生成結構化的數據,是當前研究的一個重要熱點。通過對視頻信息的結構化,可以得到超過人工值守獲取更多更有價值的信息。然而,隨著科技水平的不斷提高,攝像頭的清晰度越來越高、每秒幀數也在增加,成本卻不斷在降低。但是加工和處理視頻所需的計算資源卻也在不斷增長。如果加上人流量監控等功能,背后需要更為龐大的計算資源支持。否則無法進行實時處理,從而導致視頻結構化設想難以在現實中全面應用。
針對以上問題,本文提出的基于OpenCV的人流量檢測算法,首先用Tensorflow中的算法將采集到的視頻分解為幀,對采集到的視頻幀圖像進行灰度化、去噪聲等預處理增強前景物體邊緣,減少外界干擾;其次,通過基于MobileNet V2的SSD算法進行模型的訓練,meanshift算法進行跟蹤檢測實現人流量計數;最后,將實時數據通過展示系統輸出并實現數據的可視化。測試結果表明,算法在以往的基礎上提高了準確性和實時性。
1設計思路
人流量統計系統主要包括采集人像信息,圖像預處理,跟蹤識別,計數四部分。對于采集到的視頻幀圖像先進行灰度化處理和去噪聲比處理,為方便統計結果,結合SSD模型和HOG特征提取和SVM分類器進行人體目標的識別,使識別的目標符合人物形象的40%即可作為一個目標量。之后結合Android平臺的推流系統,以及封裝opencv、OpenKinect、videoInput等方法在Android平臺上進行結果處理功能,為精確統計數人流量和有效避免障礙物遮擋和目標變形,計數采用Meanshift的算法。
2圖像預處理
2.1 圖像灰度化
由于平均值法和最大值法在灰度化時的效果較加權平均法效果較差,所以采用加權平均法。
加權平均法中,由于人眼對綠色敏感最高,對藍色敏感最低,故采用心理學灰度公式(1):
以上公式中表示三個通道的權值,且三者之和為1。
2.2 圖像去噪聲
采用中值濾波法,該方法擁有諸多優點,同時存在丟失圖像細節的缺陷。為避免這種缺陷,采用基于個數的中值濾波法。該方法需設定一閾值T,用以限制鄰域內像素點與中心像素點灰度差絕對值的范圍,從而將含噪圖像中的像素點的屬性劃分為以下三類:噪點、圖像邊緣以及平坦區域。以3*3窗口為例,假設中心像素點為8,定義m為中心像素點灰度差分的絕對值大于閾值T的相鄰像素點的個數,則當m≤2時,中心像素點為平坦區域點;當2 3 跟蹤檢測技術 3.1 帶有MobileNet v2的SSD算法 設計采用了帶有MobileNet v2的SSD算法,如圖1所示。和MobileNet V1相比,MobileNet V2改進有兩點:1)Linear Bottlenecks,為了保證模型的表達能力,去掉了小維度輸出層后面的非線性激活層;2)Inverted Residual block,該結構先擴增再縮減,與residual block正好相反,因此shotcut連接的是維度縮減后的feature map。 當stride=1時,才會使用elementwise 的sum將輸入和輸出特征連接; stride=2時,無short cut連接輸入和輸出特征。 SSD算法的檢測精度和速度都非常出色,主要是采用了基于回歸的模式,可以直接在網絡中回歸出物體的位置和類別。同時利用基于區域的相關概念,在檢測過程中,使用許多候選區域作為ROI。 SSD的骨干網絡是基于傳統的圖像分類網絡,經過卷積層和池化層的處理,可以得到特征圖,從而在特征圖上進行回歸,得到物體的位置和類別。 SSD對多個特征圖進行分析,對于神經網絡,淺層的特征圖適合進行小物體的檢測;而較深的特征圖適合大物體的檢測。 3.2 meanshift算法 meanshift算法實際是一種基于密度的聚類算法。其主要思路是計算某一點A與其周圍半徑R內的向量距離的平均值M,計算出該點下一步移動方向(A=M+A)。如果該點不在發生變化時,該點就會與周圍的區域點形成一個類簇,計算出這個類簇與其他類簇的距離,當該距離小于閾值時,會合并為一個類簇,否則就單獨形成一個類簇,以此類推,直到所有點被選取。 對于給定的n維空間中的m個樣本點,i=1...m,對于其中一個樣本X,它的均值漂移向量為式(2): 其中Sh指的是一個半徑為h的球狀領域,定義為式(3): meanshift算法根據反向投影圖和輸入的方框進行meanshift迭代,它是向中心移動,就是向反向投影圖中概率大的地方移動,所以始終會移動到目標上。 4 系統實現 使用安卓端推流,將攝像頭采集的視頻推到服務器上。Android端首先進行了用戶的登錄注冊,登錄后可以查看攝像頭所錄視頻,將視頻傳到服務器端。在安卓端的代碼開發中進行了Butter Knife的安裝。Butter Knife通過注解的方式來替代android中view的相關操作。減少大量的findViewById以及setOnClickListener代碼,且對性能的影響較小。使用JavaCV中的utility類方便在Java平臺上調用這些接口。 基于Tensorflow的人流量監測系統對輸入的圖像進行處理,首先用智能攝像頭采集視頻,用Tensorflow中的視頻分解為圖像算法,將采集到的視頻分解為幀,分解后的圖片保存到一個文件夾中作為訓練集。開始要在config配置文件中定義訓練任務,配置好相應的路徑,然后執行命令開始訓練。最后導出訓練模型,然后在視頻流上使用它,從視頻源中提取單幀,通過OpenCV的VedioCapture方法完成。 5 系統測試 對該軟件的主要功能進行測試,首先對視頻進行取幀,從而進行檢測,測試結果如圖2所示。 從圖片中可以看出,人流量識別正確率相對較高,但在人流特別密集的情況下有些人并未識別出來,對算法仍需進行改進。 6結語 基于OpenCV來研究人流量檢測的相關方法,與一些目標檢測的算法進行了比較,最終在檢測時選取了帶有MobileNet v2的SSD算法,該算法相對來說在檢測精度和速度方面都有了一定的提高。該系統人流量識別正確率相對較高,算法具有較高準確性和實時性。 參考文獻: [1]卜秋月.基于OpenCV的人臉識別系統的設計與實現[D].吉林大學,2015. [2]吳曉陽.基于OpenCV的運動目標檢測與跟蹤[D].浙江大學,2008. [3]牛秋月,李超,唐國良.基于智能監控視頻的人流量統計[J].電子技術與軟件工程,2018(4):64-66. 【通聯編輯:代影】