張明偉,蔡堅勇,2,3,4,李 科,程 玉,曾遠強
1(福建師范大學 光電與信息工程學院,福州 350007)
2(福建師范大學 醫學光電科學與技術教育部重點實驗室,福州 350007)
3(福建師范大學 福建省光子技術重點實驗室,福州 350007)
4(福建師范大學 福建省光電傳感應用工程技術研究中心,福州 350007)
目標檢測的場景分為室內和室外,室內環境的變化雖然不如室外環境那么復雜,但它們對于運動物體的檢測也將產生顯著的影響.由于對室內人員檢測的需求性更強,本文主要研究室內人員的檢測.比如,教室學生檢測就是室內場景下人員檢測的一個重要的方向.針對教育中的室內人員檢測問題,本文完全可以通過計算機視覺的相關技術——目標檢測,從而解決教室學生檢測問題.
有關目標檢測的技術,分為傳統算法和深度學習算法.傳統算法主要分為目標實例檢測與傳統目標類別檢測.自2010年,深度學習成為計算機視覺的主要研究方向,使用卷積神經網絡進而大幅提高了圖像檢測的準確率,因此越來越多的人將深度學習的思想應用到目標檢測類別檢測中.在這方面,基于深度學習的目標檢測與識別算法已經成為主流,主要有三大類:基于快速CNN的目標檢測技術,如R-CNN、Mask RCNN[1]等;基于回歸學習的目標檢測與識別,如SSD[2]、YOLO等;基于學習搜索的目標檢測與識別,如AttentionNet、FSRL[3]等.其中YOLO系列的算法是一個端對端的模型,其模型結構復雜度要優于R-CNN系列,很適合對實時性要求較高的應用場景[4].
本文采用回歸的目標檢測與識別方法,以深度學習網絡YOLO v3為基礎,將教室中的學生作為待檢測目標.因為檢測目標只有室內人員,為了降低模型的冗余度和提高檢測的精確度,提出一種DE-YOLO神經網絡結構,對網絡的結構進行改進,并對層級結構中的參數進行調整,使得不僅減少模型的占用空間大小,而且能準確識別教室中的學生.通過本文對DE-YOLO和YOLO v3的實驗結果對比,DE-YOLO運行速度明顯優于YOLO v3,同時保證了預測準確率.并且基于內存大小為8 GB和型號為Inter i5的CPU硬件環境處理,不使用GPU情況下,檢測速度提升了3FPS.
2016年Joseph Redmond 等人提出了YOLO (You Only Look Once)算法,它主要基于回歸學習,實現用單一網絡對圖片只要看一次就能檢測與識別目標[5].通過完善發展,于2018年提出YOLO v3,也是目前效率最高的版本[6].YOLO v3依然保持了YOLO v2的快速檢測,并大大提高了識別的正確率,尤其是在小目標的檢測與識別上,識別率也有較大的提升.相對于YOLO v2,YOLO v3結合ResNet的思想,運用了若干個ResNet模塊[6].YOLO v3在網絡框架方面,大量使用具有良好表征能力的3×3和1×1的卷積層,并網絡結構中不斷穿插著一些ResNet.最終YOLO v3整體的網絡結構中包含了53個卷積層,因此Joseph Redmond也把它稱為Darknet-53,如圖1所示.

圖1 Darknet-53網絡結構圖
借鑒Faster RCNN的思想,YOLO v3還引入了多尺度預測方式.每種尺度預測3個boxes,anchor的設計方式依然使用聚類,將其按照大小均分給3種尺度[7].同時網絡結構中最后的分類器也從Softmax函數改為logistic函數,使得能夠支持多種類型目標的檢測與定位.
2017年 Huang 等提出了 DenseNet (Densely connected convolutional Networks)網絡[8],主要對ResNet和Inception兩種網絡的對比學習:如果卷積神經網絡在每個單元的輸入及輸出之間有更短的連接,它實質上有更深、更精準、訓練更高效的特點.DenseNet的本質是在于對目標特征的學習,通過的表征信息的最大化利用,來達到網絡模型的最簡化和最優化,盡可能降低參數冗余.
DenseNet網絡結構中內嵌3個dense block,每個dense block中串連著4個卷積層,在每個dense block中,可以把每個卷積層之前所有前置卷積層的輸出匯總為輸入.每個dense block的結構如圖2所示,層與層之間可以用池化層相連.
DenseNet引入這樣的dense block有如下優點:
(1)由于網絡中每層都會接受前面所有層的特征輸入,為了避免隨著網絡層數的增加,后面層的特征維度增長過快,在每個階段之后進行下采樣時,會首先通過一個卷積層將特征維度壓縮至當前輸入的一半,再進行池化操作,即解決梯度消失的問題;
(2)通過每層之間的跳躍連接,加強了網絡模塊之間的信息交流,其本質就是特征的復用.與ResNet不同的是,這樣的密集型連接,使得信息流更大,不是簡單的疊加效果,使得小模型產生大數據.

圖2 密集卷積塊結構圖
本文正是對DenseNet的上述優點的充分考慮,在YOLO v3上提出DE-YOLO網絡,達到對目標特征的重復的學習和利用,使得算法在室內人員檢測方面有著更優的效果.
本文考慮到室內人員檢測時,存在檢測目標比較密集,且先驗框大小不一.比如,教室中學生的檢測就是一個很好的例子.所以,首先需要對數據集進行預處理,再對網絡層級結構進行刪減和替換,并將密集連接的思想更新進去,搭建一個全新的網絡,最后達到設計的效果.
當神經網絡來檢測一幅圖像中的多個目標時,其實網絡實際上需要大量的先驗框執行預測,并只顯示出它確定為一個對象的那些檢測結果.由于R-CNN系列中先驗框的高度和寬度都是手動設置的,客觀性較差.如果選取的的先驗框的高度和寬度比較合適,所得的模型的性能將更優,使得預測效果更好.所以,YOLO v3中為了針對數據集的目標框大小進行聚類分析,可采用K-means算法.
K-means算法是一種經典的聚類算法,通常使用歐幾里得度量等方式作為兩個樣本相似程度的評價指標[9].因為先驗框設置的最初目的是為了使得ground truth與預測框的重合度盡可能高,即式(1)中的交并比IOU的值越接近為1越好.但是由于這些經驗值不一定適用于對室內人員檢測的場景,會對最終的檢測產生一定的干擾.例如使用歐幾里得度量會讓大的邊界區域比小的邊界區域更易出現誤差,導致精確度下降.我們希望通過先驗框來獲取良好的IOU,因為它不受邊界框的尺寸影響.因此我們選擇新的方式來表達IOU,如下[10]:

其中,centre表示為類簇中心,box表示為目標,IOU(box,centre)表示類簇中心框和目標框的交并比.交并比IOU表示預測框的準確程度,其公式為:

其中,bbgt表示真實框,bbdt表示預測框.
由于K-means算法具有收斂于局部最優解的特性,所以本文起初會選取多組初始值,對其分別運行算法,如果獲得目標函數值最小,則選取這一組方案作為最后聚類結果.最終的聚類結果受初始化的影響很大,一般采用隨機的方式生成中心點[11],對于比較有特點的數據集可采用一些啟發式的方法選取中心點.如果目標的邊界框大小太多,反而會增加一定的計算量而導致效率降低.所以,實驗選取K=[1,20],統計出不同錨點框數量(K的大小)下所對應的IOU值,具體的關系 如圖3所示.

圖3 錨點框數量與平均交并比的關系
根據圖中錨點框數量與平均交并比的關系可知,在K=6之后,曲線變化趨于穩定,且先驗框數量合理,不會帶來過多的計算開銷,所以本文得到的6個聚類的中心為(10,14)、(23,27)、(37,58)、(81,92)、(136,169)、(344,319).
根據Joseph Redmond的工作,YOLO v3在COCO和VOC數據集上分在32×32、16×16、8×8這3個不同的尺度上進行預測[12],最后判斷最終結果,如圖4所示.

圖4 YOLO v3多尺度預測方式
圖4中YOLO v3分別在3個尺度上對目標進行預測:尺度1上,在基礎網絡之后添加一些卷積層再輸出box信息;尺度二上,在尺度1進行上采樣再與16×16大小的特征圖相加,卷積輸出box信息;尺度3上,與尺度2類似,使用了32×32大小的特征圖.
隨著網絡層數的加深,雖然ResNet模塊可以緩解梯度爆炸的現象,使得精確度不會隨之降低.但是,這是基于網絡結構可以比較復雜,對內存占用沒有較高要求的前提下.為了盡可能減少網絡結構的復雜度,降低網絡模型對內存的占用,并保證較高的精確度.使用Dense block模塊將表現的比ResNet模塊更好.
本文借鑒DenseNet網絡的思想,為了壓縮模型并提高特征信息的復用率,需要對網絡結構進行調整.考慮到在32×32、16×16尺度的特征圖上,包含較多的表征信息,而在8×8尺度上的表征學習能力有限.所以將YOLO v3這三個尺度上的ResNet模塊替換為與其維度相適應的Dense block模塊,其更新的網絡如圖5所示.通過對尺度2、尺度3構建這樣一種密集連接的網絡結構,使得不同維度學習到的表征信息得以極致的利用和匯總,為下一步的精準預測提供的有效的保證.
實驗環境如表1所示.

圖5 DE-YOLO網絡結構

表1 實驗環境
為了保證實驗結果的可靠性,數據集的選用十分重要.Pascal Visual Object Calsses (VOC)[13]是計算機視覺領域中的一個公認的數據集,具有一定權威性.本文選用VOC2012數據集,并提取了數據集中1000張不同的person照片.隨機抽取820張圖片作為訓練集,80張圖片作為驗證集,100張圖片作為測試集.
數據集用labelImg軟件標注完成后,分別對YOLO v3和DE-YOLO網絡進行訓練.實驗過程中,網絡的學習率(learning rate)為10–4,梯度下降的優化器選用Adma,以便快速收斂并正確學習,訓練迭代次數為1000.實際訓練過程中,為了避免過擬合情況的出現,每迭代50次對模型進行保存,輸出后綴為.h5文件.
本文算法流程圖大致如圖6所示.

圖6 算法流程圖
從圖中可以看出,實驗分為訓練和測試兩個部分,分別對訓練數據和測試數據進行預處理.通過對訓練集的K-means聚類分析,得到相應目標特征,并通過DE-YOLO模型進行訓練.最后進行測試并模型評估.
本文方法總體流程圖,如圖7所示.

圖7 室內人員檢測方法流程圖
為了避免數據集中的常出現的類不平衡的現象,使得無論正負樣本如何變化,都不影響模型表達的準確性.本文采用準確率P(precision)、召回率R(recall)、精確率ACC(accuracy)、F1值(F1-score)值作為評價指標,通過ROC曲線圖來評估其模型的性能[14].
precision表示被分為正例的示例中實際為正例的比例,其中設TP為將正類預測為正類數,FP為將負類預測為正類數,公式如下:

recall是覆蓋率的度量,度量有多少個正例被分為正例,其中設FN為將正類預測為負類數,公式如下:

accuracy是被分類正確的樣本數占總樣本的比例,其中設TN為將負類預測為負類數,公式如下:

F1為p recision和 r ecall的加權平均調和,公式如下:

為了評估DE-YOLO性能,與YOLO v3進行對比,其迭代次數與精確率關系對比如表2所示.DE-YOLO算法較于YOLO v3算法更能有效的對室內的人員進行檢測.

表2 迭代次數與精確率關系對比(單位:%)
從表2中可以看出,DE-YOLO在迭代800次的精確率已達到93.01%,與YOLO v3迭代1000次時的精確率相差無幾.當DE-YOLO迭代1000次時,比YOLO v3的精確率提高了2.38%.對于DE-YOLO網絡誤檢情況,選取部分經典的實驗結果,如圖8和圖9所示.

圖8 DE-YOLO誤檢情況(a)

圖9 DE-YOLO誤檢情況(b)
在圖8和圖9中存在的誤檢情況,主要是由于神經網絡很難區分現實與畫像中的人物,只要是是符合目標的特征的對象,都將被檢測輸出,很難避免.
繪制YOLO v3和DE-YOLO的ROC曲線,如圖10所示.這里引入AUC (Area Under roc Curve)概念,即ROC曲線下的面積大小[15].AUC的值越接近為1,則模型性能越突出.由圖10可得,本文的DE-YOLO模型性能優于YOLO v3的原網絡.

圖10 ROC曲線圖
本文提出了一種基于密集型連接的DE-YOLO卷積神經網絡,旨在通過網絡之間的密集型,連接提高其通道中的特征信息的利用率,并減少內存占用空間.另外,網絡通過K-means對數據集的預處理,提高對室內人員檢測的精確性.通過實驗表明,DE-YOLO在保證與YOLO v3相近正確率的情況下,減少了模型大小和內存占用空間,可以將模型大小從235 MB減少至33 MB,實現了輕量化處理.另外,由于存在數據較少、目標標注引入干擾背景的問題,DE-YOLO檢測的精確度提升會遇到瓶頸,同時網絡結構如何進一步的壓縮和裁剪也是一個值得研究的方向,后期的工作將針對這些問題進入深入的研究.