舒 軍, 吳 柯, 雷建軍
(1.湖北工業(yè)大學(xué)太陽能高效利用及儲能運行控制湖北省重點實驗室, 武漢 430068;2.湖北第二師范學(xué)院基礎(chǔ)教育信息技術(shù)服務(wù)湖北省協(xié)同創(chuàng)新中心, 武漢 430205)
近年來,基于人工深度神經(jīng)網(wǎng)絡(luò)[1]的目標檢測識別技術(shù)得到了迅猛的發(fā)展,許多開源平臺相繼推出其標準數(shù)據(jù)集或圖像識別競賽,如ImageNet[2]、PASCAL VOC[3]、MS COCO[4];一些優(yōu)秀的神經(jīng)網(wǎng)絡(luò)檢測框架也橫空出世,近年來具有代表性的如RetinaNet[5],R-FCN[6],DSSD[7]和YOLOv3[8].由于人工神經(jīng)網(wǎng)絡(luò)具有可靠性高、計算速度快的特點,越來越多的深度神經(jīng)網(wǎng)絡(luò)被應(yīng)用于指定的小樣本數(shù)據(jù)集上的對象檢測及分類[9].
在目前的主流算法中,YOLOv3是使用最先進技術(shù)的實時物體檢測模型,YOLOv3的檢測速度與檢測精度對比各網(wǎng)絡(luò)模型都能保持較高水平,詳細性能對比如圖1;由于其算法檢測精準度達到高水平并滿足實時檢測的需求,故本研究基于YOLOv3進行小樣本數(shù)據(jù)集的檢測識別.
圖1 各網(wǎng)絡(luò)模型在MS COCO數(shù)據(jù)集上的性能Fig.1 Performance of each network model on MS COCO dataset
然而小樣本數(shù)據(jù)集中的待測對象尺寸較為單一、尺度特征相對少,直接使用YOLOv3訓(xùn)練時生成特征的利用率低,犧牲了很多計算時間而檢測精準度并沒有明顯提升;為了進一步提升在小樣本數(shù)據(jù)集上的檢測速度,充分利用網(wǎng)絡(luò)性能,需要對YOLOv3改進以提升特征利用率,減少重復(fù)特征參與計算.
YOLOv3神經(jīng)網(wǎng)絡(luò)算法框架于2018年被Joseph和Girshick等人提出,其網(wǎng)絡(luò)相繼使用過修改后的GoogleNet[10]、VGGNet[11]網(wǎng)絡(luò)結(jié)構(gòu),最新版中使用ResNet[12]中的殘差網(wǎng)絡(luò)結(jié)構(gòu),加強了卷積(Conv)層之間的特征傳遞,并使用了FPN[13]的特征金字塔結(jié)構(gòu)來輸入大、中、小三種不同分辨率尺度的特征進行檢測,提升了檢測精度.
YOLOv3原網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示,其骨干網(wǎng)絡(luò)中的卷積層為ResNet殘差網(wǎng)絡(luò)結(jié)構(gòu),有三個不同分辨率尺度的輸出檢測模塊,其借鑒了FPN特征金字塔結(jié)構(gòu),從淺層至深層的輸出特征分辨率分別為52×52、26×26、13×13,對應(yīng)小、中、大分辨率目標對象進行檢測,并對深層特征使用上采樣,將該層特征增加整合至淺層,盡可能地減少各尺度分辨率特征的損失,從而提升了檢測精準度.
圖2 YOLOv3神經(jīng)網(wǎng)絡(luò)主體結(jié)構(gòu)Fig.2 The main structure of YOLOv3 neural network
本研究在YOLOv3骨干框架上改變了所有卷積層的連接方式,使用DenseNet[14]中的密集串聯(lián)代替了原本的殘差連接,并加入28個密集串聯(lián)層,刪減了最小尺度的多尺度檢測結(jié)構(gòu),在保證檢測率的同時提升了檢測速度.
2.1.1 改進網(wǎng)絡(luò)連接方式 神經(jīng)網(wǎng)絡(luò)在淺層卷積層提取特征,然后將特征傳遞到更深層的卷積核,這個過程難免會丟失部分特征,甚至產(chǎn)生噪聲.原YOLOv3網(wǎng)絡(luò)在卷積層之間使用殘差連接,在每次卷積提取特征之前,將前一層或幾層的分辨率特征調(diào)整為同等維數(shù),進行逐元素相加,以此來加強特征的傳遞.
改進算法模型中的卷積層使用了密集串聯(lián)的方式來替代原本的殘差連接,以進一步加強卷積層之間的特征傳遞,從而提升檢測精確度.殘差連接和密集串聯(lián)的方式如圖3所示.若設(shè)xl為第l層卷積網(wǎng)絡(luò)的特征圖輸出,每層卷積的計算過程包含了批量歸一化(Batch Normalization)[15]、Leaky ReLU線性單元(Leaky Rectified Linear Units)[16]函數(shù)處理和3×3的卷積計算,可以用復(fù)合函數(shù)Hl來表示,那么對于殘差連接網(wǎng)絡(luò)中第l層卷積網(wǎng)絡(luò)的特征圖輸出表示為:
圖3 殘差連接和密集串聯(lián)的方式Fig.3 Shortcut connection and dense concatenation
xl=Hl(xl-1)+xl-1,
(1)
其中卷積網(wǎng)絡(luò)的層數(shù)從0開始,第l層接收當前層與上一層的特征圖作為輸出;而對于密集串聯(lián)網(wǎng)絡(luò)中第l層卷積網(wǎng)絡(luò)的特征圖輸出表示為:
xl=Hl([x0,x1,x2,…,xl-1]).
(2)
第l層接收前層的所有特征圖作為輸出.
與殘差連接不同,密集串聯(lián)將本層的特征整合維數(shù)傳遞至往后的所有密集串聯(lián)層,盡可能避免了特征在卷積層傳遞導(dǎo)致的信息丟失.這樣做能有效提升檢測準確度,特別是在淺層增加卷積核個數(shù),能有效地提升特征提取能力,但如此做也相應(yīng)增大了計算參數(shù).
2.1.2 輕量化網(wǎng)絡(luò)結(jié)構(gòu) 在進行下采樣時,原YOLOv3網(wǎng)絡(luò)的使用卷積核大小為3×3,步長為2的卷積層進行下采樣,以減少特征信息的丟失.由于本研究使用了密集串聯(lián)的連接方式,淺層網(wǎng)絡(luò)提取的特征和參數(shù)計算量增加,在進行下采樣時,如果使用原YOLOv3網(wǎng)絡(luò)方式進行下采樣,會導(dǎo)致參數(shù)計算量過多,拖慢整體網(wǎng)絡(luò)計算速度,甚至發(fā)生梯度消失的情況.因此本研究在每個密集串聯(lián)的卷積塊傳遞收集特征之后,使用過渡層來進行降維操作,過渡層具體結(jié)構(gòu)如圖4所示.
圖4 過渡層具體結(jié)構(gòu)Fig.4 The specific structure of transition layer
淺層特征在經(jīng)過批量歸一化(Batch Normalization)處理和線性激活單元(Leaky Rectified Linear Units)函數(shù)處理的1×1卷積層后,使用卷積核大小為2×2,步長為2的最大池化層進行下采樣,剔除冗余信息和部分噪聲.對于完成第l層卷積所需的十億次浮點運算量(Billion Float Operations),其公式表示為:
(3)
其中,n表示卷積核的數(shù)目,s1、s2為卷積核的長寬,c為特征圖數(shù)量,hout、wout表示卷積后圖像的長寬,其由卷積前的圖像尺寸計算而來:
(4)
(5)
其中hin、win為輸入圖像的長與寬,st為步長,p為填充數(shù).
對比原網(wǎng)絡(luò)使用的卷積核大小為3×3,步長為2卷積層作為下采樣結(jié)構(gòu),過渡層能減少更多的參數(shù)計算量,后續(xù)的實驗結(jié)果也證明新結(jié)構(gòu)的總浮點運算數(shù)更少.值得一提的是,本研究所有卷積層均經(jīng)過BN和ReLU激活處理,避免梯度消失和過擬合情況.
2.1.3 改進多尺度檢測 YOLOv3網(wǎng)絡(luò)使用了FPN結(jié)構(gòu)輸出三個不同尺度的特征檢測通道,對于416×416的輸入分辨率,輸出52×52、26×26、13×13的分辨率特征,并使用9個不同大小的先驗框來預(yù)測目標對象,對應(yīng)先驗框分辨率大小如表1所示.
表1 不同尺度特征圖對應(yīng)先驗框分辨率大小Tab.1 The resolution of the priori box corresponding to different scale feature maps
對于尺寸單一的小樣本數(shù)據(jù)集,其像素特征組合構(gòu)造簡單,單張圖片中只有一個待測對象,且都為中大尺度分辨率,加入小尺度特征檢測會增加運算成本,拖慢檢測時的速度,對提高精度提升有限.故本研究算法刪減了小尺度的特征檢測通道,保留26×26、13×13的分辨率特征,在保證準確率的同時提升網(wǎng)絡(luò)檢測速度.為了便于未來研究原始樣本在同一鏡頭出現(xiàn)多個待測對象時的檢測效果,保留了中等尺度特征檢測通道.修改后的多尺度特征檢測通道保留了上采樣過程,用于增加淺層特征,修改后的多尺度特征檢測結(jié)構(gòu)如圖5所示.
圖5 修改后的多尺度檢測結(jié)構(gòu)Fig.5 Modified multi-scale detection structure
綜上所述,改進后的YOLOv3神經(jīng)網(wǎng)絡(luò)算法主體結(jié)構(gòu)如圖6所示.
圖6 改進后的YOLOv3算法主體結(jié)構(gòu)Fig.6 The main structure of the improved YOLOv3 algorithm
該算法使用了28個卷積塊,每個卷積塊內(nèi)部的連續(xù)卷積層為密集串聯(lián)方式,中間使用了3個過渡層來進行降維,減少整體網(wǎng)絡(luò)參數(shù)計算量,檢測模塊使用兩種不同尺度的多尺度檢測通道,該結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)在保證檢測精確率的同時提升了檢測速度.
在使用數(shù)據(jù)樣本進行模型訓(xùn)練時,網(wǎng)絡(luò)模型輸入416×416樣本圖像分辨率,首先分配批次,經(jīng)過預(yù)處理階段增加樣本數(shù)量,增加指定倍率倍飽和度和曝光量的樣本,以及指定倍率色調(diào)的樣本,根據(jù)需求設(shè)置指定角度旋轉(zhuǎn)的樣本.在經(jīng)過一系列卷積和下采樣操作后,使用多尺度訓(xùn)練模式,生成額外分辨率的樣本圖像,其分辨率大小從320×320至608×608不等,最后經(jīng)過預(yù)測模塊驗證模型.模型訓(xùn)練運行流程如圖7所示.其中默認設(shè)置每批訓(xùn)練樣本32張,分為16組輸入.最優(yōu)化方法動量參數(shù)為0.9,權(quán)重衰減正則項為0.000 5,學(xué)習(xí)率0.001,最終迭代12 000次.
圖7 模型訓(xùn)練運行流程Fig.7 Running process of training model
麻將席是夏季日常生活中廣泛使用的產(chǎn)品,具有一定的經(jīng)濟價值.人工檢測麻將子不能長時間保持高效率,并且在區(qū)分麻將子優(yōu)劣時受主觀因素影響大,不能確保揀選時的準確率.而通過深度學(xué)習(xí)的方法來區(qū)分麻將子的優(yōu)劣,在經(jīng)過充足的訓(xùn)練后,識別率可以提升超過人工識別水平,并有效節(jié)省人力成本,提高生產(chǎn)效益.
3.1.1 待測對象分析 本實驗所測麻將子樣本為流水線上相機拍攝所得,盡量還原了實際現(xiàn)場的拍攝情況.如圖8所示,為包含了正反面的4種不同類別的麻將子樣本,區(qū)分出各種麻將子的目的是為了方便后續(xù)測試網(wǎng)絡(luò)模型對不同種類麻將子的具體性能.
圖8 四種包含正反面的不同種類的麻將子樣本Fig.8 Four different types of mahjong subsamples containing front and back
現(xiàn)場采集的麻將子數(shù)據(jù)集主要有以下幾點特點.
1) 麻將子樣本圖像分辨率全部為658×492,實際拍攝時在鏡頭內(nèi)的麻將子大小基本不會有大的變化,檢測特征尺度單一.
2) 麻將子數(shù)據(jù)集中的樣本圖像較少,實際標注只有2682張,訓(xùn)練時可能發(fā)生過擬合.
3) 麻將子樣本包含了所有正反面拍攝的麻將子,故同種類麻將子同時包含了正反面特征,識別對象特征稍復(fù)雜.很多合格麻將子表面的臟污可能干擾檢測準確度,進一步增加了特征復(fù)雜性.
4) 麻將子樣本存在不同角度的情況,同一鏡頭也可能出現(xiàn)多個麻將子,增加特征提取和多目標檢測難度.
在對原YOLOv3算法進行改進前,需要考慮以上因素做出適合麻將子數(shù)據(jù)集進行預(yù)處理.
3.1.2 基于麻將子數(shù)據(jù)集的預(yù)處理 為進一步提升麻將子的檢測精確度,以及加快訓(xùn)練麻將子的擬合過程,需要對麻將子數(shù)據(jù)集進行預(yù)處理操作.本實驗標注了2 682張麻將子樣本,其中4/5用作訓(xùn)練集,1/5作為驗證集.在訓(xùn)練前使用K-means++算法[17]對樣本進行聚類,對416×416輸入分辨率的圖像進行分析,選擇使用5個不同大小的先驗框以預(yù)測目標對象,進而在一定程度上提升模型達到擬合的速度.兩種尺度生成的先驗框分辨率大小如表2所示.
表2 兩種尺度特征圖對應(yīng)先驗框分辨率大小Tab.2 Two scale feature maps correspond to the resolution of the prior frame
3.1.3 麻將子數(shù)據(jù)集的訓(xùn)練 本研究中麻將子訓(xùn)練實驗基于硬件配置及軟件平臺如表3所示.
表3 硬件配置及軟件平臺Tab.3 Hardware configuration and software platform
麻將子樣本進行模型訓(xùn)練時,輸入416×416樣本圖像分辨率,首先分配批次,經(jīng)過預(yù)處理階段增加樣本數(shù)量,增加±1.5倍飽和度和±1.5倍曝光量的樣本,以及±0.1比例色調(diào)的樣本,同時增加±14度與±28度旋轉(zhuǎn)的樣本.在經(jīng)過一系列卷積和下采樣操作后,使用多尺度訓(xùn)練模式,生成額外分辨率的樣本圖像,其分辨率大小從320×320至608×608不等,最后經(jīng)過預(yù)測模塊驗證模型.
3.1.4 麻將子訓(xùn)練模型的評估 在訓(xùn)練階段,程序每迭代1 000次會自動保存一次權(quán)重模型,通常選擇具有最高的IoU和mAP的權(quán)重文件作為最終模型.但實際上在最后階段的訓(xùn)練中這些差異很小,并且為了直觀地與原檢測框架做效果對比,選取最終訓(xùn)練12 000次迭代的權(quán)重模型.隨著迭代次數(shù)的增加loss逐漸下降,當下降極慢時模型趨于穩(wěn)定,同時IoU(預(yù)測邊框與實際對象重合比例)也隨著迭代次數(shù)的增加而變化.改進后YOLOv3生成的IoU變化曲線與訓(xùn)練loss曲線如圖9.
圖9 訓(xùn)練模型的IoU與loss變化曲線圖Fig.9 Training model IoU and loss curve
在2 000次迭代后,改進后的YOLOv3網(wǎng)絡(luò)的IOU迅速達到0.8以上,即預(yù)測邊框與實際對象重合比多數(shù)在80%以上,預(yù)測邊框較為準確.整體來看,模型在前2 000次迅速擬合,最終loss穩(wěn)定在0.2左右,檢測性能良好.
3.1.5 麻將子訓(xùn)練模型與改進前模型對比 在與原網(wǎng)絡(luò)框架進行對比實驗時,保留相同的參數(shù)設(shè)置與樣本增加的預(yù)處理操作,使用12 000次的迭代模型作對比,各類目標詳細的檢測效果對比如表4所示.
表4 改進前后模型各類結(jié)果評分對比Tab.4 Comparison of various results of the model before and after the improvement
改進網(wǎng)絡(luò)模型對形狀錯誤和表面破損的麻將子檢測準確度提升較大,這是由于改進前這兩類麻將子在多尺度訓(xùn)練時生成了過多的虛假正樣本(FP),而改進后的網(wǎng)絡(luò)虛假正樣本很少,多數(shù)為真實正樣本(TP).
綜合來看,樣本足夠的情況下,對合格類別和竹節(jié)類別的麻將子檢測效果最好,而其他類別效果略差,這是因為后者像素特征組合復(fù)雜,同時樣本相對較少,使得網(wǎng)絡(luò)生成虛假樣本太多,最終導(dǎo)致檢測效果較差.對于改進前后的各類指標評分對比如表5所示.
從表5可以看到,改進后YOLOv3網(wǎng)絡(luò)的mAP-50提升了2.45%;每秒檢測幀數(shù)由67.84提高至148.59,提升了119.03%;同時總浮點運算數(shù)從653.1億次降低到110.5億次,網(wǎng)絡(luò)運算成本減少,訓(xùn)練速度得到提升,整體網(wǎng)絡(luò)更加輕量化.綜合上述,實驗證明了改進YOLOv3網(wǎng)絡(luò)在麻將子數(shù)據(jù)集上的檢測效果良好.
表5 改進前后麻將子模型各項指標評分對比(取閾值0.25以上數(shù)據(jù))Tab.5 Comparison of scores of majiang mat model before and after improvement (The threshold of 0.25 or more)
Kaggle是互聯(lián)網(wǎng)上最著名的數(shù)據(jù)科學(xué)競賽平臺之一,本實驗選取Kaggle貓狗圖像數(shù)據(jù)集作為試驗對象,其中共25 000張樣本圖像,平均分為貓、狗兩類.為方便與改進前的網(wǎng)絡(luò)模型做對比驗證,在試驗時只取部分數(shù)據(jù)作試驗,其中貓、狗各100張,取其中15%作為驗證集,其余為訓(xùn)練集,最終迭代12 000次,與改進前的網(wǎng)絡(luò)模型進行對比實驗的結(jié)果如表6所示.
從表6可以看到,改進后YOLOv3網(wǎng)絡(luò)的mAP-50提升了12.5%;每秒檢測幀數(shù)由61.94提高至138.99,提升了124.39%;同時總浮點運算數(shù)從652.9億次降低到110.2億次,整體網(wǎng)絡(luò)更加輕量化;實驗證明了改進YOLOv3網(wǎng)絡(luò)在Kaggle數(shù)據(jù)集上的檢測效果良好.
表6 改進前后貓狗模型各項指標評分對比(取閾值0.25以上數(shù)據(jù))Tab.6 Comparison of scores of cat and dog model before and after improvement (The threshold value of 0.25 or more)
Caltech是美國加州理工學(xué)院制作的標準數(shù)據(jù)集之一,本實驗使用了Caltech-256中的數(shù)據(jù)集,其中包含了256種不同種類的圖片.為方便與改進前的網(wǎng)絡(luò)做對比驗證,在試驗時只取部分數(shù)據(jù),其中保齡球104張,足球122張,取其中15%作為驗證集,其余為訓(xùn)練集,最終迭代12 000次,與改進前的網(wǎng)絡(luò)模型進行對比實驗的結(jié)果如表7.
從表7可以看到,改進后YOLOv3網(wǎng)絡(luò)的mAP-50提升了5.34%;每秒檢測幀數(shù)由63.21提高至151.74,提升了140.05%;同時總浮點運算數(shù)從652.9億次降低到110.2億次,整體網(wǎng)絡(luò)更加輕量化;實驗證明了改進YOLOv3網(wǎng)絡(luò)在Caltech數(shù)據(jù)集上的檢測效果良好.
從表7可以看到,改進后YOLOv3網(wǎng)絡(luò)的mAP-50提升了5.34%;每秒檢測幀數(shù)由63.21提高至151.74,提升了140.05%;同時總浮點運算數(shù)從652.9億次降低到110.2億次,整體網(wǎng)絡(luò)更加輕量化;實驗證明了改進YOLOv3網(wǎng)絡(luò)在Caltech數(shù)據(jù)集上的檢測效果良好.
本文基于小樣本數(shù)據(jù)集提出了一種改進的YOLOv3神經(jīng)網(wǎng)絡(luò)算法,使用密集串聯(lián)結(jié)構(gòu)代替原本的殘差連接結(jié)構(gòu),下采樣過程使用過渡層來替代原本的改變卷積步長降維的方式,并刪減了小尺度分辨率的檢測模塊,保留中、大尺度檢測模塊.
實驗表明,對于自制麻將子數(shù)據(jù)集,改進后的YOLOv3神經(jīng)網(wǎng)絡(luò)對比原神經(jīng)網(wǎng)絡(luò)的mAP-50提升2.45%,并減少了浮點運算數(shù),檢測幀數(shù)提升了119.03%,證明了改進模型應(yīng)用于麻將子數(shù)據(jù)集上的效果良好.
對于kaggle開源數(shù)據(jù)集以及Caltech開源數(shù)據(jù)集,改進后的YOLOv3神經(jīng)網(wǎng)絡(luò)算法對比原算法的FPS分別提升了124.39%、140.05%,mAP-50分別提升了12.5%、5.34%,證明了改進網(wǎng)絡(luò)模型有更好的分類能力,因此可以推廣至其他小樣本數(shù)據(jù)集.
華中師范大學(xué)學(xué)報(自然科學(xué)版)2021年2期