閆 河,李 煥,羅 成
(1.重慶理工大學,重慶 400054;2.重慶市兩江人工智能學院,重慶 401135)
在機械控制生產中,鐘料罐是必不可少的設備,而在視頻流中能夠準確、魯棒性地檢測與跟蹤送料口成為工業生產的重中之重。同時煉爐罐的負荷存在變化,轉速并非均勻。而且煉爐罐高溫易產生大量的煙霧,對送料口的檢測與跟蹤會有一定的干擾。
傳統圖像處理的目標檢測方法是通過手工設計特征來實現的,代表的特征有方向梯度直方圖HOG[1]、局部二值特征LBP[2]、尺度不變特征變換SIFT[3]等。分類器常見的有支持向量機SVM[4]、DPM[5]等。傳統的目標檢測存在2個主要的問題:一是需要手工的設計特征,滑動窗口的選擇往往沒有針對性,提取的特征不夠,最后檢測出來的目標存在漏檢及誤檢的問題,準確率低;二是對于多樣變化的物體,手工設計的特征魯棒性低。傳統視覺檢測和跟蹤算法受煉爐高溫產生煙霧的影響,易導致送料口檢測和跟蹤失效。
近年來,隨著AlexNet[6]網絡在ILS-VRC-2012比賽中取得勝利,深度學習中卷積神經網絡(CNN)[7]逐漸的走入研究者的視線中,卷積神經網絡具有快速特征提取和分類的特點。相比較于傳統的目標檢測,深度學習提取到的特征更多更豐富。基于此特征,研究人員提出了一系列目標檢測算法。在2014年Girshick等[8]提出了區域卷積神經網絡(RCNN),該網絡首次使用候選區域(region proposal)網絡代替傳統目標中使用的滑動窗口的方法,使用卷積神經網絡提取特征,輸入到支持向量機中訓練。該網絡訓練速度慢、占用磁盤空間大。在此基礎上Girshick[9]提出了快速區域網絡(fast RCNN),該網絡在最后一層之后加入ROI Pooling層,生成固定尺寸的特征圖,相較于RCNN訓練速度有所提升。Ren等[10]提出了超快速區域卷積神經網絡(faster RCNN)首次使用RPN(region proposal network)[11]代替原來的Selective Search[12]方法生成建議窗口,從最初的2 000個減少為300個,提取到的特征更多,訓練速度更快、準確高。在準確率的基礎上,為了提高檢測速率,Redmom等[13]提出了一種更為輕量級的Yolo網絡,該網絡的核心思想是將整張圖作為網絡的輸入,直接在輸出層分類和回歸,這樣保留了檢測目標全部的特征,訓練效果更好,在coco數據集[14]能跑45 fps。接著Redmom又提出了Yolo v2[15]和Yolo v3[16]網絡,其中Yolo v3速度更快,檢測準確率更高。實現了在coco數據集上51 ms時間內map達到57.9的效果。由此可見,Yolo v3網絡在兼顧準確率的同時,也能有很好的檢測速率。
在CVPR2016上,Yolo v3是由Redmom等人提出的一種端到端的網絡。它放棄了之前Faster RCNN網絡中使用Two Stage方法,在圖片上直接生成區域建議的步驟,而是直接將整張圖片作為卷積神經網絡的輸入,在輸出層直接回歸目標的位置及目標所屬的類別,極大地提高了目標檢測的準確率。
Yolo v3使用一個全新的、更深層次的卷積神經網絡Darknet-53,這個網絡是由多個殘差單元疊加組成的。相比較在Yolo V2中使用的Darknet_19網絡,該網絡主要是由連續的1×1和3×3的卷積層組成的,包含有53個卷積層和5個池化層,每個卷積層后面都會有一個批量歸一化層(batch normalization)[17]。為了解決過擬合的問題,加入了去droput處理。引入多尺度融合的思想,能夠更好地檢測小目標,網絡結構圖如圖1所示。

圖1 Darkent-53網絡部分結構圖
Yolo網絡使用的端到端的思想,就是將整張圖片作為神經網絡的輸入,提取特征、檢測速度比較快。但是在檢測小目標的時候效果較差,這是因為神經網絡中低層中的特征語義信息相對較少,但是目標位置信息準確。高層的特征語義信息比較豐富,感受野大,但是位置信息就相對較少。為了解決這個問題,Yolo網絡借鑒了FPN[18]思想,采用上采樣融合的方式,融合3個尺度(13×13,26×26,52×52),在多個尺度的特征圖(feature map)上單獨檢測、預測目標的位置以及類別,最終對小目標的檢測效果有比較明顯的提升。
Yolo v3繼續使用在Yolo v2中K-means[19]聚類方式做Anchor Box[20]的初始化,這種通過加入先驗知識的方式,不需要提前對目標的位置坐標進行訓練,而是為每種下采樣尺度設定3種先驗框,總共聚類9種,具有最大感受野的目標,應用較大的先驗框,比較適合檢測較大的對象。具有最小感受野的目標,應用較小的先驗框,比較適合檢測較小的目標。
在預測目標的類別時候,拋棄以往使用的softmax分類器,改為使用logistic分類器的輸出進行預測。這是因為softmax只支持單一的類別預測,而logistic能夠支持多標簽多類別的對象。
Yolo v3網絡在目標檢測領域取得了較好的效果,原文獻中的網絡是基于COCO數據集進行訓練的,該數據集包含90種類別的目標,目標之間尺度變化大、特征明顯。而本文中主要是使用Yolo v3網絡對送料口進行檢測與跟蹤,送料口不屬于數據集中的一類,且屬于小目標,需要對Yolo v3網絡進行適當的改進,以便適用于送料口數據集的檢測。基于數據集的聚類方法改進如下。
在Yolo v3網絡中借鑒Faster RCNN網絡提出的anchor boxes方法作為先驗框,對目標進行預測。而在Faster RCNN網絡中需要提前手工設定先驗框,然后在之后的訓練中調整anchor boxes的尺寸,這是按照研究者的經驗而定,人工主觀性比較強。如果能以某種方式,自動地選擇一個合適的先驗框,這樣卷積神經網絡將會更容易的學習,做出更準確的檢測。為了解決這個問題,Yolo v3網絡中采用維度聚類的方法,使用K-means方法計算出anchor boxes的個數和尺寸,對數據集的目標預測框大小進行聚類。
K-means方法中通常使用曼哈頓距離、歐式距離等計算方式來判斷兩點間的距離,然后當檢測目標較小,先驗框的尺寸較大的時候,使用這種方式得到的誤差也更大。當使用歐式距離作為計算公式的時候,大的候選框比小的候選框會產生更多的錯誤,從而影響檢測結果。為了讓預測框與groundtruth的交并比(IOU)更大,并且IOU是與anchor boxes的尺寸無關的,且能夠適用于本文中的送料口數據集,本文使用一種新的距離公式,有:

式中:centroid表示簇的中心;box表示檢測目標的邊框信息;IOU表示簇中心框的值與聚類得到的框的交并比。其中IOU交并比公式為:

式中:A表示真實框;B表示預測框。IOU交并比越大,表示預測的值越準確。
本文使用送料口數據集進行聚類分析研究,選取K=1,2,3,4,5,6,7,8,9,得到的結果中心個數K與距離之間的關系,如圖2所示。

圖2 K-means聚類圖
由圖2可以看出,當K=4的時候,折線開始變得平緩。因此針對本文中送料口數據集,選擇anchor boxes的數量為4,在預測框上設定4個聚類中心框,可以得到比較好IOU的值,在本文的訓練集上使用K-means方法得到的4種尺寸大小為(15,43),(16,25),(22,38),(40,75)。
由圖1可知,Yolo v3網絡在COCO數據集上分別對52×52,26×26,13×13大小的分辨率圖像進行預測,而本文只檢測送料口,且屬于小目標,通過K-means方法聚類得到的最大anchor boxes尺寸大小為(40,75),如果使用52×52尺度上預測,會導致誤檢的現象,因此本文針對送料口數據集的情況,僅使用26×26和13×13尺度下預測,每種尺度有2種anchor boxes。
本文實驗室環境下,讓視頻流中勻速轉動的鐘料罐不斷采集每一幀的圖片,自建大量有煙霧干擾的圖片樣本,總共1 100張。然后將整理得到的照片統一裁剪416×416像素,以適應Yolo v3網絡訓練集大小。為了擴充數據集的數量,增加樣本的多樣性,對圖片進行數據增強,比如隨機裁剪、旋轉、翻轉等,將數據集增加到2 500張。通過數據增強的方法不會丟失圖片的特征,可以增加數據集的多樣性。圖3表示使用LabelImg工具制作數據集的過程。得到矩形框的位置信息(Xmin,Ymin,Xmax,Ymax)和目標類別的信息。然后制作成VOC數據集的格式,并按照訓練集∶測試集∶驗證集=7∶2∶1的比例進行分配數據集。

圖3 數據集制作圖
為了驗證Yolo v3網絡在本文中對送料口的檢測效果,實驗平臺采用的是Inter(R)Xeon(R)cpu E5-2630 v4,GPU采用的是英偉達K80顯卡,操作系統為win7 64位,深度學習框架:darknet-53。
針對送料口數據集,需要對Yolo V3的網絡訓練過程進行適當的改變。載入權重模型,epoch訓練50次,訓練的batch_size為6,學習率為0.001。大概訓練12 h后Loss值趨于穩定,基本收斂,得到最終的檢測模型。
不同閾值檢測效果對比。在深度學習檢測過程中,可以為目標設定一個閾值,低于該值的預測框都會被拋棄,不顯示出來。在原文中,作者使用的閾值score=0.35,為了在本文的數據集中得到最佳的閾值,對比6組不同閾值大小進行試驗(見圖4),不同閾值下的數據如表1所示。

表1 不同閾值下的數據
圖4為6組不同閾值大小的實驗結果,當閾值過高或過低的時候,漏檢或誤檢率較高。當閾值score=0.5的時候檢測效果較好。

圖4 不同閾值對比圖
表1中預測框的個數表示為在當前閾值下,生成的預測框平均個數。由表1可知,在閾值score=0.5的時候,誤檢率最低.因此本文中使用改進的后的Yolo v3網絡進行檢測,采用閾值為0.5,能得到較好的檢測結果。
為了驗證改進后的Yolo v3網絡的性能,在本文實驗中使用送料口測試集對訓練完成的模型進行檢測,分別計算準確率和召回率以及檢測速率,其中準確率計算公式為:

式(3)中:Tp表示正確檢測出來的送料口數量;Fp表示被誤檢的送料口數量。
由表2可知,與Yolo v3方法以及傳統的目標檢測HOG+SVM進行對比,本文方法準確率達到了97.20%,改變聚類方法及多尺度特征融合的方式,能夠準確地檢測目標,而原文中Yolo v3網絡使用6種anchor boxes方式以及閾值設置的不正確,會導致目標的漏檢以及誤檢的情況。而傳統的目標檢測方法需要經過一系列人為的手工設定特征,進行多步驟圖像預處理,且在受煉爐高溫產生煙霧的影響下,檢測準確率以及檢測速度都不及深度學習方法。

表2 實驗數據
而在工業生產中,非勻速轉動送料口,位置及形狀都發生變化,再加上煙霧及周圍環境的干擾,使得傳統的目標檢測方法很難檢測出來。本文中改進后的Yolo v3網絡具有極強的泛化性和魯棒性,檢測速度達到30幀/s,基本上能滿足工業上的需求。圖5表示多幀效果。

圖5 多幀效果圖
針對在實驗場景下送料口的檢測與跟蹤問題,本文提出了基于Yolo v3改進的目標檢測方法。根據本文中數據集中的尺度,對網絡結構做出改進,使用K-means聚類的方法,得到最適合本數據集的尺寸大小。經實驗表明,本文改進的網絡在檢測準確率以及檢測速度上,基本能滿足工業控制生產的要求。