茍先太,黃 巍,劉琪芬
(西南交通大學(xué) 電氣工程學(xué)院,四川 成都 611756)
隨著我國畜牧業(yè)逐漸走向規(guī)模化,牲畜牛的急劇增加的數(shù)量為其健康監(jiān)測帶來巨大的挑戰(zhàn)。牛臉檢測是健康監(jiān)測中的一個主要步驟,檢測效果的好壞與效率的高低會直接影響健康監(jiān)測的最終效果。
目前牛臉檢測的難點(diǎn)有兩個:一個是多牛場景。需要對圖像中每頭牛的牛臉進(jìn)行高精度的檢測。另一個是模型速度。為了保證牛臉采集效率,模型需要部署在移動端或者嵌入式設(shè)備,這對于模型速度有著極高的要求。傳統(tǒng)的目標(biāo)檢測方法包括SIFT[1](scale-invariant feature transform)、HOG[2,3](histogram of oriented gradient)等特征提取算法。在速度和精度上,傳統(tǒng)方法都不太滿足本文牛臉檢測的要求。
基于深度學(xué)習(xí)的目標(biāo)檢測模型包括one-stage方案,如SSD[4]、YOLO[5](you only look once)等。與之對應(yīng)的two-stage方案包括RCNN[6]、Fast-RCNN[7]、Faster-RCNN[8]等模型??紤]到牛群健康監(jiān)測系統(tǒng)對牛臉檢測模型速度上的要求,本文選擇使用SSD模型,并在原有模型的基礎(chǔ)上進(jìn)行優(yōu)化:使用輕量級網(wǎng)絡(luò)MobileNet v2[9]作為SSD的基礎(chǔ)網(wǎng)絡(luò)以提高模型速度;使用K-Means[10]聚類方法取代先驗(yàn)對檢測框高寬比進(jìn)行設(shè)置。從實(shí)驗(yàn)結(jié)果來看,改進(jìn)之后的SSD模型在速度以及精度上均有一個較大的提升。
圖1 SSD模型結(jié)構(gòu)
SSD模型使用VGG-16[11]作為基礎(chǔ)網(wǎng)絡(luò)[4]。在VGG-16的基礎(chǔ)上,SSD將最后的全連接層替換為3×3的卷積層和1×1的卷積層收縮特征圖尺度。在尾部繼續(xù)添加卷積層進(jìn)一步收縮特征圖以獲得不同尺度的特征圖進(jìn)行預(yù)測。模型結(jié)構(gòu)如圖1所示。
在檢測過程中,SSD使用了被稱為默認(rèn)框(default box)的機(jī)制[4],即生成一些預(yù)選框,和圖像中的物體進(jìn)行匹配,匹配到物體之后,使用softmax分類和邊界框回歸得到物體的種類與位置。邊界框回歸可以對默認(rèn)框進(jìn)行位置和大小的微調(diào),得到SSD模型最終的檢測框。默認(rèn)框匹配步驟如圖2所示。在同一個柵格(cell),SSD會使用4~6個高寬比不同的默認(rèn)框進(jìn)行匹配,匹配到物體之后,再進(jìn)行之后的分類和回歸操作。
圖2 默認(rèn)框匹配步驟
SSD模型需要對邊界框進(jìn)行回歸,還需要對物體的種類進(jìn)行預(yù)測,所以SSD模型的損失函數(shù)由兩部分構(gòu)成:分類置信度損失Lconf和坐標(biāo)誤差Lloc[4]
在上式中,N是默認(rèn)框的個數(shù),α是坐標(biāo)誤差的權(quán)重參數(shù),通過更改α可以改變坐標(biāo)誤差在梯度下降過程中的重要程度。
SSD模型的分類置信度損失Lconf使用的是softmax loss,softmax loss普遍用于多分類問題,但與經(jīng)典的softmax loss不同,分類置信度損失既考慮了正樣本,也考慮負(fù)樣本
SSD模型的坐標(biāo)誤差Lloc采用的是Smooth L1 loss,和傳統(tǒng)的平方損失函數(shù)相比,Smooth L1 loss對于離群點(diǎn)的敏感度不高,不容易出現(xiàn)梯度爆炸的情況
式中:g指的是訓(xùn)練樣本的ground truth,l指的是模型的預(yù)測框,cx、cy、w、h分別指的是默認(rèn)框的中心點(diǎn)坐標(biāo)以及寬和高。
圖3 改進(jìn)模型結(jié)構(gòu)
雖然經(jīng)典SSD模型[4]在精度和速度上都達(dá)到了較高水平。但在速度和精度上依然有可以提升的空間。首先VGG-16有138 M個參數(shù)[11],過多的參數(shù)量意味著更多的計算量??紤]到牛臉檢測對模型速度的要求,本文使用MobileNet v2替換VGG-16作為改進(jìn)SSD模型的基礎(chǔ)網(wǎng)絡(luò),選取MobileNet v2中的layer_15和layer_19作為第一二層特征提取層。另一方面,經(jīng)典SSD模型默認(rèn)框的高寬比采用的是3組互為倒數(shù)的高寬比[4],目的是盡可能覆蓋公共數(shù)據(jù)集中的所有種類的高寬比,但是這種設(shè)置方法對于本文的牛臉檢測任務(wù)缺乏特異性。為了得到更為合理的高寬比設(shè)置,本文使用K-Means聚類算法對樣本高寬比進(jìn)行聚類,得到的聚類中心即為高寬比設(shè)置。實(shí)驗(yàn)對比結(jié)果表明,使用K-Means聚類得到的默認(rèn)框高寬比設(shè)置對于模型的精度、速度均有一定的提升。改進(jìn)模型結(jié)構(gòu)如圖3所示。
MobileNet v2結(jié)構(gòu)主要有兩個特點(diǎn),一是使用了深度可分離卷積[9];二是使用了倒置殘差塊[9]。就是這兩個特點(diǎn),讓MobileNet v2在使用極少的參數(shù)量的條件下依然保持較高精度。
和標(biāo)準(zhǔn)卷積相比,深度可分離卷積對特征圖的某一通道進(jìn)行卷積,之后使用1×1卷積進(jìn)行特征融合,其性能和標(biāo)準(zhǔn)卷積相似,但參數(shù)量得到了極大的減少。深度可分離卷積如圖4所示。
圖4 深度可分離卷積
圖4中,Dk為深度可分離卷積的卷積核大小,通常Dk=3, 即使用3×3的深度可分離卷積進(jìn)行特征提取,M為深度可分離卷積的卷積核個數(shù),通常M和輸入特征圖的通道數(shù)相等,N為1×1卷積核的個數(shù),故輸出特征圖的通道數(shù)也為N。
倒置殘差塊(inverted residual block)使用了shortcut連接,使模型可以搭建得更深而不會出現(xiàn)梯度消失的問題。和標(biāo)準(zhǔn)殘差塊相比,倒置殘差塊先使用1×1的卷積升通道數(shù),之后進(jìn)行深度可分離卷積提取特征,最后再使用1×1的卷積恢復(fù)之前的通道數(shù)[9]。這個過程剛好和標(biāo)準(zhǔn)殘差塊相反。同時,為了解決MobileNet v1[12]出現(xiàn)的特征退化問題,倒置殘差塊最后一個激活函數(shù)采用線性激活[9]。標(biāo)準(zhǔn)殘差塊和倒置殘差塊如圖5和圖6所示。
圖5 標(biāo)準(zhǔn)殘差塊
圖6 倒置殘差塊
K-Means[10]是一種常用的、基于原型的目標(biāo)函數(shù)聚類算法。通常K-Means使用的距離量度為歐氏距離,但在SSD模型中,默認(rèn)框和ground truth匹配是參照兩個框的交并比(intersection-over-union,IoU)大小,交并比超過閾值,則認(rèn)為匹配成功。
考慮到交并比對默認(rèn)框匹配結(jié)果的影響,本文使用的距離度量如下式所示
distance=1-IoU
其中,IoU指的是參與聚類的樣本高寬比和聚類中心的交并比。
K-Means聚類算法的處理流程較為簡單,通過不斷地計算樣本點(diǎn)到聚類中心的距離,按照最小距離對樣本點(diǎn)進(jìn)行劃分,之后更新聚類中心的位置,如此反復(fù),直到更新不再出現(xiàn)變化為止。其流程偽代碼見表1。
表1 K-Means聚類偽代碼
本文的牛臉樣本主要來自imageNet[13]、Pascal VOC等公開數(shù)據(jù)集中標(biāo)注為“cattle”或者“cow”的樣本??紤]到本文提出的模型所面向的場景通常為養(yǎng)牛場,為使模型的訓(xùn)練樣本和現(xiàn)實(shí)場景中的牛臉保持獨(dú)立同分布,本文在牛臉樣本中選擇黃牛作為主要研究對象,同時,本文也使用google圖片獲得了在養(yǎng)牛場場景下的牛臉圖片。經(jīng)過篩選,數(shù)據(jù)集樣本大約為3800張,按照9∶1比例劃分訓(xùn)練集和測試集,數(shù)據(jù)集均使用三維標(biāo)注軟件labelimg進(jìn)行標(biāo)注。
本文實(shí)驗(yàn)使用的開發(fā)平臺為Ubuntu 18.0。平臺具體配置見表2。
表2 實(shí)驗(yàn)平臺配置
模型輸入圖片尺寸為300×300。batch size設(shè)置為32。優(yōu)化器使用的是RMSProp,其優(yōu)點(diǎn)是可以自己調(diào)整學(xué)習(xí)率[14],所以設(shè)置初始學(xué)習(xí)率為0.001,之后就不再需要對學(xué)習(xí)率進(jìn)行任何衰減操作。訓(xùn)練數(shù)據(jù)預(yù)處理使用了隨機(jī)裁剪、隨機(jī)padding、隨機(jī)鏡像以及色彩扭曲。
3.4.1 K-Means聚類結(jié)果與分析
K-Means聚類實(shí)驗(yàn)的評價標(biāo)準(zhǔn)是聚類簇中心與ground truth的平均交并比,平均交并比越高,效果越好。分別令k=1…9進(jìn)行聚類,實(shí)驗(yàn)結(jié)果如圖7所示,由結(jié)果可知,使用K-Means極大地提升了平均交并比,意味著模型使用K-Means聚類方法得到的高寬比可以更好地適應(yīng)樣本??紤]到模型速度與精度,最終模型默認(rèn)框高寬比使用的是k=4 時,K-Means的聚類結(jié)果,平均交并比為70.63%。按照聚類得到的高寬比效果如圖8所示。
圖7 K-Means聚類結(jié)果
圖8 聚類的高寬比效果
3.4.2 改進(jìn)模型牛臉檢測結(jié)果與分析
改進(jìn)模型牛臉檢測使用的評價指標(biāo)為精確率(precision,P)以及召回率(recall,R)。計算公式如下所示
在速度上,本文使用FPS(frames per second)以及檢測框個數(shù)作為評價指標(biāo)。FPS表示每秒模型可處理的圖片張數(shù),檢測框個數(shù)表示在模型生成的默認(rèn)框的總個數(shù),通常檢測框越多,速度越慢。為了提升實(shí)驗(yàn)的對比度,除了經(jīng)典SSD網(wǎng)絡(luò),本文還選取了基于SqueezeNet、ShuffleNet等3種輕量級網(wǎng)絡(luò)的SSD模型進(jìn)行對比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果見表3,根據(jù)實(shí)驗(yàn)結(jié)果繪制柱狀圖,如圖9所示。在測試集上測試模型檢測效果,如圖10所示。
由對比實(shí)驗(yàn)結(jié)果可知,針對不同基礎(chǔ)網(wǎng)絡(luò)的SSD模型,使用K-Means聚類算法設(shè)置默認(rèn)框高寬比對于模型的精確率、召回率以及FPS均有一定的提升。說明針對具體的牛臉檢測場景,使用合理的默認(rèn)框高寬比對于提升模型性能十分重要。在模型表現(xiàn)上,本文給出的改進(jìn)模型在各個指標(biāo)均略高于其它模型。
表3 對比實(shí)驗(yàn)結(jié)果
圖9 模型性能對比
圖10 牛臉檢測效果
本文給出的改進(jìn)SSD模型,使用了MobileNet v2作為基礎(chǔ)網(wǎng)絡(luò)并且使用K-Means對樣本高寬比進(jìn)行聚類。在速度上、精度上均超過經(jīng)典SSD模型。通過對比實(shí)驗(yàn),改進(jìn)SSD模型在精確率、召回率以及FPS上均優(yōu)于基于其它輕量級網(wǎng)絡(luò)的SSD模型。針對不同的應(yīng)用場景,按照不同需求對模型進(jìn)行相應(yīng)的改進(jìn)與優(yōu)化,這也為之后人工智能項(xiàng)目的落地提供了一定的思考與參照。