王 偉, 何 姣, 石 強
(1 貴州電子科技職業學院, 電氣工程系, 貴陽550025;2 中國核動力研究設計院 第一研究所, 四川 樂山614100)
隨著物聯網的發展,大數據、云計算、人工智能等新興的科學技術開始走進生活,徹底顛覆了幾千年來固有的生產方式和思維習慣,尤其是在安防行業,在新時代科學技術日新月異的浪潮下,傳統安防系統發生了翻天覆地的變化。 比如智能家居系統讓遠在異地的人們隨時隨地掌控家中的情況;智慧農業系統可以結合天氣的變化自適應調節環境參數;智能交通系統運用攝像機,結合先進的圖像處理算法,成功的在道路、車輛和駕駛員三者之間建立了一條監控屏障等。 雖然安防系統在各行各業發展相對成熟,但由于存在網絡延遲、軟硬件成本過高、圖像識別率低和安全性差等問題,導致了安防系統的普及受到限制。 據相關數據統計,我國的民用智能安防產品普及率只有10%左右[1]。 如何采取最優的辦法,解決上述問題成為打開安防市場的關鍵。
目前,大多數圖像算法多著眼于提高圖像處理速度和識別精度,針對復雜背景、目標遮擋、圖像模糊等問題研究甚少。 本文就以復雜背景下目標識別作為切入點,借助阿里云和嵌入式Linux 平臺,以及MATLAB 等優秀的仿真軟件,剖析多種經典目標識別算法,通過比較和分析,最終得出YOLO v3 算法具有檢測速度快、精度高等優點,并且在其基礎上,改進算法處理結構[2],使得YOLO v3 算法在捕捉和處理異常目標上更具優勢。
在設計整體框架之前,先后對當地企業食安云公司和潤可信息科技有限公司進行了實地調研,調研的主要內容包括方案可行性分析、技術開發要點和實用價值等,并且專訪了相關專業的教授,請他們提出寶貴意見,結合目前市場短板,最終設計了基于云平臺的目標識別系統,整體框架如下圖1 所示。

圖1 系統總體框架Fig.1 Overall framework of the system
主要設計思路:通過網關,將原始的圖像數據上傳到阿里云服務器,然后借助部署的服務器處理程序進行圖像分析和數據保存,移動終端、web 平臺負責與JavaEE 三層架構建立高速信息交互通道,用于異常數據檢索和查詢。
為解決復雜背景下目標識別過程中遇到的關鍵問題,首先要研究傳統算法在目標識別中存在的優勢和劣勢,進一步改進已有的算法結構,提升程序運行效率,本文分別從硬件結構、軟件結構和界面設計三方面進行功能設計。
網關是系統硬件結構的核心, 本文采用Samsung S3C6410 作為主控。 針對所需的模塊,在原有的功能板基礎上進行了接口擴展。 為了充分利用CPU 多核資源,提高數據的吞吐率,滿足圖像采集和網絡上傳過程中數據并行處理的需求,本文提出了一種基于嵌入式Linux 系統下的網關設計方案,即在硬件系統上移植Linux 操作系統[3]。 經過論證與檢驗,該方案提供的多線程、圖像化編程技術可以穩定的為云服務器輸送大量的數據資源,為數據分析提供了保障。 硬件結構模塊化設計如圖2所示。
復雜背景下目標識別系統軟件架構是一種基于B/S 架構的數據管理方案,如圖3 所示。 該方案由客戶端、云平臺服務器和手持移動終端等三部分構成。 在客戶端用戶可以實現信息注冊、網關登錄、數據信息采集和網絡傳送等功能。 云服務器端主要負責圖像算法分析,通過搭建不同的算法,在多種復合場景下,從識別率、處理速度、模糊等角度進行性能比較,結合JavaEE 三層架構建立信息反饋通道,查找不足并適當改進程序結構,最終得到最優算法部署方案。 移動終端和web 平臺依靠HTTP 請求,建立與云服務器信息交互通道,針對MySQL 數據庫收集的異常信息,使用戶可以在大眾平臺上實時查閱[4]。

圖2 硬件結構設計Fig.2 Hardware structure design

圖3 軟件架構圖Fig.3 Software architecture
在復雜背景下,處理圖像的步驟一般是將整張圖像送到準備好的訓練集進行特征分析和提取,再借助分類器歸類,由于檢測目標往往只占實際圖像的很小一部分,如果采用這種方式作為檢測手段,勢必造成大量計算機資源浪費,圖像檢測速度也隨之降低。 為了提高檢測效率,本文提出了一種“先分割,再檢測”的處理方案。
目前,能夠實現目標與背景分離的算法很多,比如:背景差分法、光流場法、ViBe 算法等。 背景差分法魯棒性差,自然環境下場景參數的變換對檢測結果有很大影響;光流場法算法復雜度高,執行效率低;ViBe 算法對靜止物體或者局部移動的物體,容易產生誤判和孤立噪聲,幾種分割算法的比較如表1 所示。 相比之下,幀間差分法在抗噪聲、運算速度、算法復雜度上具有很大優勢。

表1 幾種背景分割算法比較Tab.1 Comparison of several background segmentation algorithms
3.1.1 算法原理
幀間差分法原理上又分為二幀差分法和三幀差分法。 由于二幀差分法在目標移動過快的情況下,經常出現重影和噪聲,所以本文采用三幀差分法對目標進行分割,原理如圖4 所示。

圖4 三幀差分法原理框圖Fig.4 Principle block diagram of three frame difference method
隨機選取攝像頭實時采集的三張連續的圖像,分別記為: Fn(x,y)、Fn-1(x,y) 和Fn+1(x,y), 將原始圖像灰度化處理后,得到灰度圖像fn(x,y)、fn-1(x,y) 和fn+1(x,y), 再對三幀灰度圖做差分處理,運算公式如下:

根據得到的差分圖像,選取合適的灰度閾值T,再進行閾值化處理,為了能夠讓閾值自適應環境光照的變化,特提出新的約束條件T′,T′在T 的基礎上,考慮了圖像整體光線變化參數,當光線變化較弱時,T′ = T,反之光線突變時,T′?T,公式(2)如下:

其中B (x,y) 為閾值化后的背景像素點,M (x,y) 為閾值化后的目標變化像素點, Rn(x,y)是閾值化圖像。 使用二值化圖像Rn(x,y) 和Rn+1(x,y) 進行與運算和形態學處理,得到Pn(x,y),公式(3)如下所示。 記錄Pn(x,y) 的像素點的突變位置,返回原圖像Fn(x,y),再按照定位點對圖像分割和邊沿擴充,最終得到分割后的目標圖像。

3.1.2 算法實現
該算法的實現依托于開源機器視覺庫OpenCV 3.4.8,結合QT 界面,最終在UBUNTU 環境下實現了基于三幀差分法背景目標分離。 通過對比發現,兩張連續的圖片差分操作以后,運動物體的輪廓出現了重影和噪聲,隨著物體移動速度的遞增,重影的距離也在變化。 為了消除重影,本文在微調閾值的基礎上,將得到的兩張差分后的二值化圖再次與運算,最大限度消除重影。 最后根據處理結果,采用連通性分析函數查找物體邊界,并對邊界進行與運算(maxrect=maxrect|rect)保留最大邊界,適當擴充框選范圍后,分割目標如圖5 所示。

圖5 幀間差分法目標分割圖Fig.5 Target segmentation by frame difference method
復雜場景下的目標識別是安防監控系統部署的一項重要內容,檢測的準確性和運算速度直接影響著系統的其他環節。 如何解決復雜場景、遮擋、光照參數變化導致的系統誤判,以及不同距離下目標大小變化問題,對于安防監控行業的發展具有深遠的意義[5]。 本文從深度學習模型出發,研究了多種算法,通過性能對比,最終得出YOLO V3 在目標檢測領域具有卓越的優勢,如表2 所示。
3.2.1 YOLO V3 算法
YOLO V3 是Joseph Redmon 等在YOLO V1 和YOLO V2 版本上開發的基于回歸的目標識別算法[6]。 它沿用Darknet 框架,并在此基礎上將網絡層升級,由原來Imagenet 訓練的53 層網絡,增加到106 層底層框架,主要針對檢測任務堆疊了53 層網絡[7]。 該算法的基本思想借鑒了殘差網絡Resnet的做法,在Darknet-53 的某些卷積網絡中設置了shortcut connections,通過采樣卷積方向變換和特征圖融合,最終得到3 種不同尺度特征圖(13?13, 26?26, 52?52),再次采用9 種尺度的先驗框對特征圖進行檢測, 13?13 特征圖使用較大的先驗框,用于檢測大object;26?26 特征圖使用中等先驗框,檢測中等object;52?52 特征圖使用較小先驗框,用于檢測小object[8],結果表明該算法尤其適用視距較遠的小目標。

表2 基于深度學習部分模型性能對比Tab.2 Performance comparison of some models based on deep learning
3.2.2 算法改進思想
在眾多目標檢測的算法中,并不是層數越深的卷積網絡提取特征能力越強,網絡的加深則會導致過擬合、梯度彌散和梯度爆炸等問題的產生[9],這對于檢測模型訓練會產生一定的影響。
YOLO V3 采用Darknet-53 框架提取特征圖,內含5 組殘差網絡(Resnet),層與層之間使用順序連接的方式。 2017 年稠密卷積神經網絡DenseNet,打破了Resnet 的順序連接方式,通過前饋神經網絡建立跨層連接,解決了隨著檢測網絡深度的增加而產生的退化問題,殘差模塊和密集卷積網絡結構對比如圖6 所示。

圖6 殘差模塊和密集卷積網絡結構對比Fig.6 Structure comparison between residual module and dense convolutionnetwork
比較發現,密集卷積網絡的引入,減少了實驗參數,提升整體運算效率,如圖7 所示。 圖7(a)是稠密卷積神經網絡變種在不同參數下的test error 統計曲線;圖7(b)的曲線圖則得出稠密卷積神經網絡只需要1/3 或者更少參數,所得的test error 統計幾乎和殘差網絡相同;圖7(c)顯示100 層密集卷積網絡的trainning loss,以及test error 曲線幾乎等價于1001 層的殘差網絡[10]。

圖7 參數和計算復雜度對比結果Fig.7 Comparison results of parameters and calculation complexity
3.2.3 實驗分析
YOLO V3 算法對計算機硬件性能要求極高,由于條件有限,這里主要采用Ubuntu 64 位系統、開源機器視覺庫、Darknet 和keras 深度學習框架等進行模擬測試[11],實驗結果表明:改進后的YOLO V3 算法不僅對運動目標檢測性能優越,對于多目標種類的識別、目標遮擋和不同視距下目標大小變化的識別具有較好的檢測效果,如圖8 所示。

圖8 YOLO V3 算法編譯識別結果Fig.8 Results of Yolo V3 algorithm compilation and recognition
通過對上述算法分析可得:幀間差分法能夠較為簡單迅速的檢測運動目標,但對于復雜背景環境參數較為敏感,容易造成誤判;改進后的YOLO v3算法綜合檢測性能優越,唯一缺點是程序結構復雜。結合兩種算法的優勢與劣勢,本文提出一種基于目標分割檢測的處理思路,如下圖9 所示。 第一步,將標定后的攝像頭,放在檢測目標出沒的位置,實時采集圖像以待后臺處理;第二步,對圖像數據抽幀檢測,被抽中的圖像利用幀間差分法進行過濾,如果檢測到目標存在,則調用src 函數裁剪目標區域;第三步,針對裁剪的圖像再次調用YOLO v3 算法進行目標分類檢測,根據掃描的結果進行歸類,從而判定物體的屬性。

圖9 目標分割檢測處理流程Fig.9 Target segmentation detection processing flow
為了驗證改進前后算法性能變化,本文針對不同分辨率的圖像進行了大量的實驗,最終得出圖10所示曲線,通過對曲線分析得出如下結論:
1)圖像越大,算法執行時間越長。
2)改進算法結構后,節省了無效背景分析所占用的時間,程序整體的運行效率大幅度提升。

圖10 改進前后運行時間對比Fig.10 Comparison of operation time before and after improvement
本文對復雜背景下目標識別系統進行了詳細研究和設計,說明了組成該系統的硬件架構和軟件功能,重點分析了目標檢測算法實現的過程,以及算法改進的思路。 在保證精度的前提下,通過優化算法結構,降低數據樣本的復雜度,為提升圖像處理速度提供了一種可靠的思路,希望在未來的研究過程中,能夠創造更大的價值。