張明偉,蔡堅勇,2,3,4,李 科,程 玉,曾遠(yuǎn)強(qiáng)
1(福建師范大學(xué) 光電與信息工程學(xué)院,福州 350007)
2(福建師范大學(xué) 醫(yī)學(xué)光電科學(xué)與技術(shù)教育部重點(diǎn)實(shí)驗(yàn)室,福州 350007)
3(福建師范大學(xué) 福建省光子技術(shù)重點(diǎn)實(shí)驗(yàn)室,福州 350007)
4(福建師范大學(xué) 福建省光電傳感應(yīng)用工程技術(shù)研究中心,福州 350007)
目標(biāo)檢測的場景分為室內(nèi)和室外,室內(nèi)環(huán)境的變化雖然不如室外環(huán)境那么復(fù)雜,但它們對于運(yùn)動物體的檢測也將產(chǎn)生顯著的影響.由于對室內(nèi)人員檢測的需求性更強(qiáng),本文主要研究室內(nèi)人員的檢測.比如,教室學(xué)生檢測就是室內(nèi)場景下人員檢測的一個重要的方向.針對教育中的室內(nèi)人員檢測問題,本文完全可以通過計算機(jī)視覺的相關(guān)技術(shù)——目標(biāo)檢測,從而解決教室學(xué)生檢測問題.
有關(guān)目標(biāo)檢測的技術(shù),分為傳統(tǒng)算法和深度學(xué)習(xí)算法.傳統(tǒng)算法主要分為目標(biāo)實(shí)例檢測與傳統(tǒng)目標(biāo)類別檢測.自2010年,深度學(xué)習(xí)成為計算機(jī)視覺的主要研究方向,使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)而大幅提高了圖像檢測的準(zhǔn)確率,因此越來越多的人將深度學(xué)習(xí)的思想應(yīng)用到目標(biāo)檢測類別檢測中.在這方面,基于深度學(xué)習(xí)的目標(biāo)檢測與識別算法已經(jīng)成為主流,主要有三大類:基于快速CNN的目標(biāo)檢測技術(shù),如R-CNN、Mask RCNN[1]等;基于回歸學(xué)習(xí)的目標(biāo)檢測與識別,如SSD[2]、YOLO等;基于學(xué)習(xí)搜索的目標(biāo)檢測與識別,如AttentionNet、FSRL[3]等.其中YOLO系列的算法是一個端對端的模型,其模型結(jié)構(gòu)復(fù)雜度要優(yōu)于R-CNN系列,很適合對實(shí)時性要求較高的應(yīng)用場景[4].
本文采用回歸的目標(biāo)檢測與識別方法,以深度學(xué)習(xí)網(wǎng)絡(luò)YOLO v3為基礎(chǔ),將教室中的學(xué)生作為待檢測目標(biāo).因?yàn)闄z測目標(biāo)只有室內(nèi)人員,為了降低模型的冗余度和提高檢測的精確度,提出一種DE-YOLO神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),對網(wǎng)絡(luò)的結(jié)構(gòu)進(jìn)行改進(jìn),并對層級結(jié)構(gòu)中的參數(shù)進(jìn)行調(diào)整,使得不僅減少模型的占用空間大小,而且能準(zhǔn)確識別教室中的學(xué)生.通過本文對DE-YOLO和YOLO v3的實(shí)驗(yàn)結(jié)果對比,DE-YOLO運(yùn)行速度明顯優(yōu)于YOLO v3,同時保證了預(yù)測準(zhǔn)確率.并且基于內(nèi)存大小為8 GB和型號為Inter i5的CPU硬件環(huán)境處理,不使用GPU情況下,檢測速度提升了3FPS.
2016年Joseph Redmond 等人提出了YOLO (You Only Look Once)算法,它主要基于回歸學(xué)習(xí),實(shí)現(xiàn)用單一網(wǎng)絡(luò)對圖片只要看一次就能檢測與識別目標(biāo)[5].通過完善發(fā)展,于2018年提出YOLO v3,也是目前效率最高的版本[6].YOLO v3依然保持了YOLO v2的快速檢測,并大大提高了識別的正確率,尤其是在小目標(biāo)的檢測與識別上,識別率也有較大的提升.相對于YOLO v2,YOLO v3結(jié)合ResNet的思想,運(yùn)用了若干個ResNet模塊[6].YOLO v3在網(wǎng)絡(luò)框架方面,大量使用具有良好表征能力的3×3和1×1的卷積層,并網(wǎng)絡(luò)結(jié)構(gòu)中不斷穿插著一些ResNet.最終YOLO v3整體的網(wǎng)絡(luò)結(jié)構(gòu)中包含了53個卷積層,因此Joseph Redmond也把它稱為Darknet-53,如圖1所示.
圖1 Darknet-53網(wǎng)絡(luò)結(jié)構(gòu)圖
借鑒Faster RCNN的思想,YOLO v3還引入了多尺度預(yù)測方式.每種尺度預(yù)測3個boxes,anchor的設(shè)計方式依然使用聚類,將其按照大小均分給3種尺度[7].同時網(wǎng)絡(luò)結(jié)構(gòu)中最后的分類器也從Softmax函數(shù)改為logistic函數(shù),使得能夠支持多種類型目標(biāo)的檢測與定位.
2017年 Huang 等提出了 DenseNet (Densely connected convolutional Networks)網(wǎng)絡(luò)[8],主要對ResNet和Inception兩種網(wǎng)絡(luò)的對比學(xué)習(xí):如果卷積神經(jīng)網(wǎng)絡(luò)在每個單元的輸入及輸出之間有更短的連接,它實(shí)質(zhì)上有更深、更精準(zhǔn)、訓(xùn)練更高效的特點(diǎn).DenseNet的本質(zhì)是在于對目標(biāo)特征的學(xué)習(xí),通過的表征信息的最大化利用,來達(dá)到網(wǎng)絡(luò)模型的最簡化和最優(yōu)化,盡可能降低參數(shù)冗余.
DenseNet網(wǎng)絡(luò)結(jié)構(gòu)中內(nèi)嵌3個dense block,每個dense block中串連著4個卷積層,在每個dense block中,可以把每個卷積層之前所有前置卷積層的輸出匯總為輸入.每個dense block的結(jié)構(gòu)如圖2所示,層與層之間可以用池化層相連.
DenseNet引入這樣的dense block有如下優(yōu)點(diǎn):
(1)由于網(wǎng)絡(luò)中每層都會接受前面所有層的特征輸入,為了避免隨著網(wǎng)絡(luò)層數(shù)的增加,后面層的特征維度增長過快,在每個階段之后進(jìn)行下采樣時,會首先通過一個卷積層將特征維度壓縮至當(dāng)前輸入的一半,再進(jìn)行池化操作,即解決梯度消失的問題;
(2)通過每層之間的跳躍連接,加強(qiáng)了網(wǎng)絡(luò)模塊之間的信息交流,其本質(zhì)就是特征的復(fù)用.與ResNet不同的是,這樣的密集型連接,使得信息流更大,不是簡單的疊加效果,使得小模型產(chǎn)生大數(shù)據(jù).
圖2 密集卷積塊結(jié)構(gòu)圖
本文正是對DenseNet的上述優(yōu)點(diǎn)的充分考慮,在YOLO v3上提出DE-YOLO網(wǎng)絡(luò),達(dá)到對目標(biāo)特征的重復(fù)的學(xué)習(xí)和利用,使得算法在室內(nèi)人員檢測方面有著更優(yōu)的效果.
本文考慮到室內(nèi)人員檢測時,存在檢測目標(biāo)比較密集,且先驗(yàn)框大小不一.比如,教室中學(xué)生的檢測就是一個很好的例子.所以,首先需要對數(shù)據(jù)集進(jìn)行預(yù)處理,再對網(wǎng)絡(luò)層級結(jié)構(gòu)進(jìn)行刪減和替換,并將密集連接的思想更新進(jìn)去,搭建一個全新的網(wǎng)絡(luò),最后達(dá)到設(shè)計的效果.
當(dāng)神經(jīng)網(wǎng)絡(luò)來檢測一幅圖像中的多個目標(biāo)時,其實(shí)網(wǎng)絡(luò)實(shí)際上需要大量的先驗(yàn)框執(zhí)行預(yù)測,并只顯示出它確定為一個對象的那些檢測結(jié)果.由于R-CNN系列中先驗(yàn)框的高度和寬度都是手動設(shè)置的,客觀性較差.如果選取的的先驗(yàn)框的高度和寬度比較合適,所得的模型的性能將更優(yōu),使得預(yù)測效果更好.所以,YOLO v3中為了針對數(shù)據(jù)集的目標(biāo)框大小進(jìn)行聚類分析,可采用K-means算法.
K-means算法是一種經(jīng)典的聚類算法,通常使用歐幾里得度量等方式作為兩個樣本相似程度的評價指標(biāo)[9].因?yàn)橄闰?yàn)框設(shè)置的最初目的是為了使得ground truth與預(yù)測框的重合度盡可能高,即式(1)中的交并比IOU的值越接近為1越好.但是由于這些經(jīng)驗(yàn)值不一定適用于對室內(nèi)人員檢測的場景,會對最終的檢測產(chǎn)生一定的干擾.例如使用歐幾里得度量會讓大的邊界區(qū)域比小的邊界區(qū)域更易出現(xiàn)誤差,導(dǎo)致精確度下降.我們希望通過先驗(yàn)框來獲取良好的IOU,因?yàn)樗皇苓吔缈虻某叽缬绊?因此我們選擇新的方式來表達(dá)IOU,如下[10]:
其中,centre表示為類簇中心,box表示為目標(biāo),IOU(box,centre)表示類簇中心框和目標(biāo)框的交并比.交并比IOU表示預(yù)測框的準(zhǔn)確程度,其公式為:
其中,bbgt表示真實(shí)框,bbdt表示預(yù)測框.
由于K-means算法具有收斂于局部最優(yōu)解的特性,所以本文起初會選取多組初始值,對其分別運(yùn)行算法,如果獲得目標(biāo)函數(shù)值最小,則選取這一組方案作為最后聚類結(jié)果.最終的聚類結(jié)果受初始化的影響很大,一般采用隨機(jī)的方式生成中心點(diǎn)[11],對于比較有特點(diǎn)的數(shù)據(jù)集可采用一些啟發(fā)式的方法選取中心點(diǎn).如果目標(biāo)的邊界框大小太多,反而會增加一定的計算量而導(dǎo)致效率降低.所以,實(shí)驗(yàn)選取K=[1,20],統(tǒng)計出不同錨點(diǎn)框數(shù)量(K的大小)下所對應(yīng)的IOU值,具體的關(guān)系 如圖3所示.
圖3 錨點(diǎn)框數(shù)量與平均交并比的關(guān)系
根據(jù)圖中錨點(diǎn)框數(shù)量與平均交并比的關(guān)系可知,在K=6之后,曲線變化趨于穩(wěn)定,且先驗(yàn)框數(shù)量合理,不會帶來過多的計算開銷,所以本文得到的6個聚類的中心為(10,14)、(23,27)、(37,58)、(81,92)、(136,169)、(344,319).
根據(jù)Joseph Redmond的工作,YOLO v3在COCO和VOC數(shù)據(jù)集上分在32×32、16×16、8×8這3個不同的尺度上進(jìn)行預(yù)測[12],最后判斷最終結(jié)果,如圖4所示.
圖4 YOLO v3多尺度預(yù)測方式
圖4中YOLO v3分別在3個尺度上對目標(biāo)進(jìn)行預(yù)測:尺度1上,在基礎(chǔ)網(wǎng)絡(luò)之后添加一些卷積層再輸出box信息;尺度二上,在尺度1進(jìn)行上采樣再與16×16大小的特征圖相加,卷積輸出box信息;尺度3上,與尺度2類似,使用了32×32大小的特征圖.
隨著網(wǎng)絡(luò)層數(shù)的加深,雖然ResNet模塊可以緩解梯度爆炸的現(xiàn)象,使得精確度不會隨之降低.但是,這是基于網(wǎng)絡(luò)結(jié)構(gòu)可以比較復(fù)雜,對內(nèi)存占用沒有較高要求的前提下.為了盡可能減少網(wǎng)絡(luò)結(jié)構(gòu)的復(fù)雜度,降低網(wǎng)絡(luò)模型對內(nèi)存的占用,并保證較高的精確度.使用Dense block模塊將表現(xiàn)的比ResNet模塊更好.
本文借鑒DenseNet網(wǎng)絡(luò)的思想,為了壓縮模型并提高特征信息的復(fù)用率,需要對網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行調(diào)整.考慮到在32×32、16×16尺度的特征圖上,包含較多的表征信息,而在8×8尺度上的表征學(xué)習(xí)能力有限.所以將YOLO v3這三個尺度上的ResNet模塊替換為與其維度相適應(yīng)的Dense block模塊,其更新的網(wǎng)絡(luò)如圖5所示.通過對尺度2、尺度3構(gòu)建這樣一種密集連接的網(wǎng)絡(luò)結(jié)構(gòu),使得不同維度學(xué)習(xí)到的表征信息得以極致的利用和匯總,為下一步的精準(zhǔn)預(yù)測提供的有效的保證.
實(shí)驗(yàn)環(huán)境如表1所示.
圖5 DE-YOLO網(wǎng)絡(luò)結(jié)構(gòu)
表1 實(shí)驗(yàn)環(huán)境
為了保證實(shí)驗(yàn)結(jié)果的可靠性,數(shù)據(jù)集的選用十分重要.Pascal Visual Object Calsses (VOC)[13]是計算機(jī)視覺領(lǐng)域中的一個公認(rèn)的數(shù)據(jù)集,具有一定權(quán)威性.本文選用VOC2012數(shù)據(jù)集,并提取了數(shù)據(jù)集中1000張不同的person照片.隨機(jī)抽取820張圖片作為訓(xùn)練集,80張圖片作為驗(yàn)證集,100張圖片作為測試集.
數(shù)據(jù)集用labelImg軟件標(biāo)注完成后,分別對YOLO v3和DE-YOLO網(wǎng)絡(luò)進(jìn)行訓(xùn)練.實(shí)驗(yàn)過程中,網(wǎng)絡(luò)的學(xué)習(xí)率(learning rate)為10–4,梯度下降的優(yōu)化器選用Adma,以便快速收斂并正確學(xué)習(xí),訓(xùn)練迭代次數(shù)為1000.實(shí)際訓(xùn)練過程中,為了避免過擬合情況的出現(xiàn),每迭代50次對模型進(jìn)行保存,輸出后綴為.h5文件.
本文算法流程圖大致如圖6所示.
圖6 算法流程圖
從圖中可以看出,實(shí)驗(yàn)分為訓(xùn)練和測試兩個部分,分別對訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)進(jìn)行預(yù)處理.通過對訓(xùn)練集的K-means聚類分析,得到相應(yīng)目標(biāo)特征,并通過DE-YOLO模型進(jìn)行訓(xùn)練.最后進(jìn)行測試并模型評估.
本文方法總體流程圖,如圖7所示.
圖7 室內(nèi)人員檢測方法流程圖
為了避免數(shù)據(jù)集中的常出現(xiàn)的類不平衡的現(xiàn)象,使得無論正負(fù)樣本如何變化,都不影響模型表達(dá)的準(zhǔn)確性.本文采用準(zhǔn)確率P(precision)、召回率R(recall)、精確率ACC(accuracy)、F1值(F1-score)值作為評價指標(biāo),通過ROC曲線圖來評估其模型的性能[14].
precision表示被分為正例的示例中實(shí)際為正例的比例,其中設(shè)TP為將正類預(yù)測為正類數(shù),FP為將負(fù)類預(yù)測為正類數(shù),公式如下:
recall是覆蓋率的度量,度量有多少個正例被分為正例,其中設(shè)FN為將正類預(yù)測為負(fù)類數(shù),公式如下:
accuracy是被分類正確的樣本數(shù)占總樣本的比例,其中設(shè)TN為將負(fù)類預(yù)測為負(fù)類數(shù),公式如下:
F1為p recision和 r ecall的加權(quán)平均調(diào)和,公式如下:
為了評估DE-YOLO性能,與YOLO v3進(jìn)行對比,其迭代次數(shù)與精確率關(guān)系對比如表2所示.DE-YOLO算法較于YOLO v3算法更能有效的對室內(nèi)的人員進(jìn)行檢測.
表2 迭代次數(shù)與精確率關(guān)系對比(單位:%)
從表2中可以看出,DE-YOLO在迭代800次的精確率已達(dá)到93.01%,與YOLO v3迭代1000次時的精確率相差無幾.當(dāng)DE-YOLO迭代1000次時,比YOLO v3的精確率提高了2.38%.對于DE-YOLO網(wǎng)絡(luò)誤檢情況,選取部分經(jīng)典的實(shí)驗(yàn)結(jié)果,如圖8和圖9所示.
圖8 DE-YOLO誤檢情況(a)
圖9 DE-YOLO誤檢情況(b)
在圖8和圖9中存在的誤檢情況,主要是由于神經(jīng)網(wǎng)絡(luò)很難區(qū)分現(xiàn)實(shí)與畫像中的人物,只要是是符合目標(biāo)的特征的對象,都將被檢測輸出,很難避免.
繪制YOLO v3和DE-YOLO的ROC曲線,如圖10所示.這里引入AUC (Area Under roc Curve)概念,即ROC曲線下的面積大小[15].AUC的值越接近為1,則模型性能越突出.由圖10可得,本文的DE-YOLO模型性能優(yōu)于YOLO v3的原網(wǎng)絡(luò).
圖10 ROC曲線圖
本文提出了一種基于密集型連接的DE-YOLO卷積神經(jīng)網(wǎng)絡(luò),旨在通過網(wǎng)絡(luò)之間的密集型,連接提高其通道中的特征信息的利用率,并減少內(nèi)存占用空間.另外,網(wǎng)絡(luò)通過K-means對數(shù)據(jù)集的預(yù)處理,提高對室內(nèi)人員檢測的精確性.通過實(shí)驗(yàn)表明,DE-YOLO在保證與YOLO v3相近正確率的情況下,減少了模型大小和內(nèi)存占用空間,可以將模型大小從235 MB減少至33 MB,實(shí)現(xiàn)了輕量化處理.另外,由于存在數(shù)據(jù)較少、目標(biāo)標(biāo)注引入干擾背景的問題,DE-YOLO檢測的精確度提升會遇到瓶頸,同時網(wǎng)絡(luò)結(jié)構(gòu)如何進(jìn)一步的壓縮和裁剪也是一個值得研究的方向,后期的工作將針對這些問題進(jìn)入深入的研究.