王 偉, 何 姣, 石 強
(1 貴州電子科技職業(yè)學院, 電氣工程系, 貴陽550025;2 中國核動力研究設計院 第一研究所, 四川 樂山614100)
隨著物聯(lián)網(wǎng)的發(fā)展,大數(shù)據(jù)、云計算、人工智能等新興的科學技術開始走進生活,徹底顛覆了幾千年來固有的生產(chǎn)方式和思維習慣,尤其是在安防行業(yè),在新時代科學技術日新月異的浪潮下,傳統(tǒng)安防系統(tǒng)發(fā)生了翻天覆地的變化。 比如智能家居系統(tǒng)讓遠在異地的人們隨時隨地掌控家中的情況;智慧農(nóng)業(yè)系統(tǒng)可以結(jié)合天氣的變化自適應調(diào)節(jié)環(huán)境參數(shù);智能交通系統(tǒng)運用攝像機,結(jié)合先進的圖像處理算法,成功的在道路、車輛和駕駛員三者之間建立了一條監(jiān)控屏障等。 雖然安防系統(tǒng)在各行各業(yè)發(fā)展相對成熟,但由于存在網(wǎng)絡延遲、軟硬件成本過高、圖像識別率低和安全性差等問題,導致了安防系統(tǒng)的普及受到限制。 據(jù)相關數(shù)據(jù)統(tǒng)計,我國的民用智能安防產(chǎn)品普及率只有10%左右[1]。 如何采取最優(yōu)的辦法,解決上述問題成為打開安防市場的關鍵。
目前,大多數(shù)圖像算法多著眼于提高圖像處理速度和識別精度,針對復雜背景、目標遮擋、圖像模糊等問題研究甚少。 本文就以復雜背景下目標識別作為切入點,借助阿里云和嵌入式Linux 平臺,以及MATLAB 等優(yōu)秀的仿真軟件,剖析多種經(jīng)典目標識別算法,通過比較和分析,最終得出YOLO v3 算法具有檢測速度快、精度高等優(yōu)點,并且在其基礎上,改進算法處理結(jié)構(gòu)[2],使得YOLO v3 算法在捕捉和處理異常目標上更具優(yōu)勢。
在設計整體框架之前,先后對當?shù)仄髽I(yè)食安云公司和潤可信息科技有限公司進行了實地調(diào)研,調(diào)研的主要內(nèi)容包括方案可行性分析、技術開發(fā)要點和實用價值等,并且專訪了相關專業(yè)的教授,請他們提出寶貴意見,結(jié)合目前市場短板,最終設計了基于云平臺的目標識別系統(tǒng),整體框架如下圖1 所示。
圖1 系統(tǒng)總體框架Fig.1 Overall framework of the system
主要設計思路:通過網(wǎng)關,將原始的圖像數(shù)據(jù)上傳到阿里云服務器,然后借助部署的服務器處理程序進行圖像分析和數(shù)據(jù)保存,移動終端、web 平臺負責與JavaEE 三層架構(gòu)建立高速信息交互通道,用于異常數(shù)據(jù)檢索和查詢。
為解決復雜背景下目標識別過程中遇到的關鍵問題,首先要研究傳統(tǒng)算法在目標識別中存在的優(yōu)勢和劣勢,進一步改進已有的算法結(jié)構(gòu),提升程序運行效率,本文分別從硬件結(jié)構(gòu)、軟件結(jié)構(gòu)和界面設計三方面進行功能設計。
網(wǎng)關是系統(tǒng)硬件結(jié)構(gòu)的核心, 本文采用Samsung S3C6410 作為主控。 針對所需的模塊,在原有的功能板基礎上進行了接口擴展。 為了充分利用CPU 多核資源,提高數(shù)據(jù)的吞吐率,滿足圖像采集和網(wǎng)絡上傳過程中數(shù)據(jù)并行處理的需求,本文提出了一種基于嵌入式Linux 系統(tǒng)下的網(wǎng)關設計方案,即在硬件系統(tǒng)上移植Linux 操作系統(tǒng)[3]。 經(jīng)過論證與檢驗,該方案提供的多線程、圖像化編程技術可以穩(wěn)定的為云服務器輸送大量的數(shù)據(jù)資源,為數(shù)據(jù)分析提供了保障。 硬件結(jié)構(gòu)模塊化設計如圖2所示。
復雜背景下目標識別系統(tǒng)軟件架構(gòu)是一種基于B/S 架構(gòu)的數(shù)據(jù)管理方案,如圖3 所示。 該方案由客戶端、云平臺服務器和手持移動終端等三部分構(gòu)成。 在客戶端用戶可以實現(xiàn)信息注冊、網(wǎng)關登錄、數(shù)據(jù)信息采集和網(wǎng)絡傳送等功能。 云服務器端主要負責圖像算法分析,通過搭建不同的算法,在多種復合場景下,從識別率、處理速度、模糊等角度進行性能比較,結(jié)合JavaEE 三層架構(gòu)建立信息反饋通道,查找不足并適當改進程序結(jié)構(gòu),最終得到最優(yōu)算法部署方案。 移動終端和web 平臺依靠HTTP 請求,建立與云服務器信息交互通道,針對MySQL 數(shù)據(jù)庫收集的異常信息,使用戶可以在大眾平臺上實時查閱[4]。
圖2 硬件結(jié)構(gòu)設計Fig.2 Hardware structure design
圖3 軟件架構(gòu)圖Fig.3 Software architecture
在復雜背景下,處理圖像的步驟一般是將整張圖像送到準備好的訓練集進行特征分析和提取,再借助分類器歸類,由于檢測目標往往只占實際圖像的很小一部分,如果采用這種方式作為檢測手段,勢必造成大量計算機資源浪費,圖像檢測速度也隨之降低。 為了提高檢測效率,本文提出了一種“先分割,再檢測”的處理方案。
目前,能夠?qū)崿F(xiàn)目標與背景分離的算法很多,比如:背景差分法、光流場法、ViBe 算法等。 背景差分法魯棒性差,自然環(huán)境下場景參數(shù)的變換對檢測結(jié)果有很大影響;光流場法算法復雜度高,執(zhí)行效率低;ViBe 算法對靜止物體或者局部移動的物體,容易產(chǎn)生誤判和孤立噪聲,幾種分割算法的比較如表1 所示。 相比之下,幀間差分法在抗噪聲、運算速度、算法復雜度上具有很大優(yōu)勢。
表1 幾種背景分割算法比較Tab.1 Comparison of several background segmentation algorithms
3.1.1 算法原理
幀間差分法原理上又分為二幀差分法和三幀差分法。 由于二幀差分法在目標移動過快的情況下,經(jīng)常出現(xiàn)重影和噪聲,所以本文采用三幀差分法對目標進行分割,原理如圖4 所示。
圖4 三幀差分法原理框圖Fig.4 Principle block diagram of three frame difference method
隨機選取攝像頭實時采集的三張連續(xù)的圖像,分別記為: Fn(x,y)、Fn-1(x,y) 和Fn+1(x,y), 將原始圖像灰度化處理后,得到灰度圖像fn(x,y)、fn-1(x,y) 和fn+1(x,y), 再對三幀灰度圖做差分處理,運算公式如下:
根據(jù)得到的差分圖像,選取合適的灰度閾值T,再進行閾值化處理,為了能夠讓閾值自適應環(huán)境光照的變化,特提出新的約束條件T′,T′在T 的基礎上,考慮了圖像整體光線變化參數(shù),當光線變化較弱時,T′ = T,反之光線突變時,T′?T,公式(2)如下:
其中B (x,y) 為閾值化后的背景像素點,M (x,y) 為閾值化后的目標變化像素點, Rn(x,y)是閾值化圖像。 使用二值化圖像Rn(x,y) 和Rn+1(x,y) 進行與運算和形態(tài)學處理,得到Pn(x,y),公式(3)如下所示。 記錄Pn(x,y) 的像素點的突變位置,返回原圖像Fn(x,y),再按照定位點對圖像分割和邊沿擴充,最終得到分割后的目標圖像。
3.1.2 算法實現(xiàn)
該算法的實現(xiàn)依托于開源機器視覺庫OpenCV 3.4.8,結(jié)合QT 界面,最終在UBUNTU 環(huán)境下實現(xiàn)了基于三幀差分法背景目標分離。 通過對比發(fā)現(xiàn),兩張連續(xù)的圖片差分操作以后,運動物體的輪廓出現(xiàn)了重影和噪聲,隨著物體移動速度的遞增,重影的距離也在變化。 為了消除重影,本文在微調(diào)閾值的基礎上,將得到的兩張差分后的二值化圖再次與運算,最大限度消除重影。 最后根據(jù)處理結(jié)果,采用連通性分析函數(shù)查找物體邊界,并對邊界進行與運算(maxrect=maxrect|rect)保留最大邊界,適當擴充框選范圍后,分割目標如圖5 所示。
圖5 幀間差分法目標分割圖Fig.5 Target segmentation by frame difference method
復雜場景下的目標識別是安防監(jiān)控系統(tǒng)部署的一項重要內(nèi)容,檢測的準確性和運算速度直接影響著系統(tǒng)的其他環(huán)節(jié)。 如何解決復雜場景、遮擋、光照參數(shù)變化導致的系統(tǒng)誤判,以及不同距離下目標大小變化問題,對于安防監(jiān)控行業(yè)的發(fā)展具有深遠的意義[5]。 本文從深度學習模型出發(fā),研究了多種算法,通過性能對比,最終得出YOLO V3 在目標檢測領域具有卓越的優(yōu)勢,如表2 所示。
3.2.1 YOLO V3 算法
YOLO V3 是Joseph Redmon 等在YOLO V1 和YOLO V2 版本上開發(fā)的基于回歸的目標識別算法[6]。 它沿用Darknet 框架,并在此基礎上將網(wǎng)絡層升級,由原來Imagenet 訓練的53 層網(wǎng)絡,增加到106 層底層框架,主要針對檢測任務堆疊了53 層網(wǎng)絡[7]。 該算法的基本思想借鑒了殘差網(wǎng)絡Resnet的做法,在Darknet-53 的某些卷積網(wǎng)絡中設置了shortcut connections,通過采樣卷積方向變換和特征圖融合,最終得到3 種不同尺度特征圖(13?13, 26?26, 52?52),再次采用9 種尺度的先驗框?qū)μ卣鲌D進行檢測, 13?13 特征圖使用較大的先驗框,用于檢測大object;26?26 特征圖使用中等先驗框,檢測中等object;52?52 特征圖使用較小先驗框,用于檢測小object[8],結(jié)果表明該算法尤其適用視距較遠的小目標。
表2 基于深度學習部分模型性能對比Tab.2 Performance comparison of some models based on deep learning
3.2.2 算法改進思想
在眾多目標檢測的算法中,并不是層數(shù)越深的卷積網(wǎng)絡提取特征能力越強,網(wǎng)絡的加深則會導致過擬合、梯度彌散和梯度爆炸等問題的產(chǎn)生[9],這對于檢測模型訓練會產(chǎn)生一定的影響。
YOLO V3 采用Darknet-53 框架提取特征圖,內(nèi)含5 組殘差網(wǎng)絡(Resnet),層與層之間使用順序連接的方式。 2017 年稠密卷積神經(jīng)網(wǎng)絡DenseNet,打破了Resnet 的順序連接方式,通過前饋神經(jīng)網(wǎng)絡建立跨層連接,解決了隨著檢測網(wǎng)絡深度的增加而產(chǎn)生的退化問題,殘差模塊和密集卷積網(wǎng)絡結(jié)構(gòu)對比如圖6 所示。
圖6 殘差模塊和密集卷積網(wǎng)絡結(jié)構(gòu)對比Fig.6 Structure comparison between residual module and dense convolutionnetwork
比較發(fā)現(xiàn),密集卷積網(wǎng)絡的引入,減少了實驗參數(shù),提升整體運算效率,如圖7 所示。 圖7(a)是稠密卷積神經(jīng)網(wǎng)絡變種在不同參數(shù)下的test error 統(tǒng)計曲線;圖7(b)的曲線圖則得出稠密卷積神經(jīng)網(wǎng)絡只需要1/3 或者更少參數(shù),所得的test error 統(tǒng)計幾乎和殘差網(wǎng)絡相同;圖7(c)顯示100 層密集卷積網(wǎng)絡的trainning loss,以及test error 曲線幾乎等價于1001 層的殘差網(wǎng)絡[10]。
圖7 參數(shù)和計算復雜度對比結(jié)果Fig.7 Comparison results of parameters and calculation complexity
3.2.3 實驗分析
YOLO V3 算法對計算機硬件性能要求極高,由于條件有限,這里主要采用Ubuntu 64 位系統(tǒng)、開源機器視覺庫、Darknet 和keras 深度學習框架等進行模擬測試[11],實驗結(jié)果表明:改進后的YOLO V3 算法不僅對運動目標檢測性能優(yōu)越,對于多目標種類的識別、目標遮擋和不同視距下目標大小變化的識別具有較好的檢測效果,如圖8 所示。
圖8 YOLO V3 算法編譯識別結(jié)果Fig.8 Results of Yolo V3 algorithm compilation and recognition
通過對上述算法分析可得:幀間差分法能夠較為簡單迅速的檢測運動目標,但對于復雜背景環(huán)境參數(shù)較為敏感,容易造成誤判;改進后的YOLO v3算法綜合檢測性能優(yōu)越,唯一缺點是程序結(jié)構(gòu)復雜。結(jié)合兩種算法的優(yōu)勢與劣勢,本文提出一種基于目標分割檢測的處理思路,如下圖9 所示。 第一步,將標定后的攝像頭,放在檢測目標出沒的位置,實時采集圖像以待后臺處理;第二步,對圖像數(shù)據(jù)抽幀檢測,被抽中的圖像利用幀間差分法進行過濾,如果檢測到目標存在,則調(diào)用src 函數(shù)裁剪目標區(qū)域;第三步,針對裁剪的圖像再次調(diào)用YOLO v3 算法進行目標分類檢測,根據(jù)掃描的結(jié)果進行歸類,從而判定物體的屬性。
圖9 目標分割檢測處理流程Fig.9 Target segmentation detection processing flow
為了驗證改進前后算法性能變化,本文針對不同分辨率的圖像進行了大量的實驗,最終得出圖10所示曲線,通過對曲線分析得出如下結(jié)論:
1)圖像越大,算法執(zhí)行時間越長。
2)改進算法結(jié)構(gòu)后,節(jié)省了無效背景分析所占用的時間,程序整體的運行效率大幅度提升。
圖10 改進前后運行時間對比Fig.10 Comparison of operation time before and after improvement
本文對復雜背景下目標識別系統(tǒng)進行了詳細研究和設計,說明了組成該系統(tǒng)的硬件架構(gòu)和軟件功能,重點分析了目標檢測算法實現(xiàn)的過程,以及算法改進的思路。 在保證精度的前提下,通過優(yōu)化算法結(jié)構(gòu),降低數(shù)據(jù)樣本的復雜度,為提升圖像處理速度提供了一種可靠的思路,希望在未來的研究過程中,能夠創(chuàng)造更大的價值。