茍先太,黃 巍,劉琪芬
(西南交通大學(xué) 電氣工程學(xué)院,四川 成都 611756)
隨著我國畜牧業(yè)逐漸走向規(guī)模化,牲畜牛的急劇增加的數(shù)量為其健康監(jiān)測(cè)帶來巨大的挑戰(zhàn)。牛臉檢測(cè)是健康監(jiān)測(cè)中的一個(gè)主要步驟,檢測(cè)效果的好壞與效率的高低會(huì)直接影響健康監(jiān)測(cè)的最終效果。
目前牛臉檢測(cè)的難點(diǎn)有兩個(gè):一個(gè)是多牛場(chǎng)景。需要對(duì)圖像中每頭牛的牛臉進(jìn)行高精度的檢測(cè)。另一個(gè)是模型速度。為了保證牛臉采集效率,模型需要部署在移動(dòng)端或者嵌入式設(shè)備,這對(duì)于模型速度有著極高的要求。傳統(tǒng)的目標(biāo)檢測(cè)方法包括SIFT[1](scale-invariant feature transform)、HOG[2,3](histogram of oriented gradient)等特征提取算法。在速度和精度上,傳統(tǒng)方法都不太滿足本文牛臉檢測(cè)的要求。
基于深度學(xué)習(xí)的目標(biāo)檢測(cè)模型包括one-stage方案,如SSD[4]、YOLO[5](you only look once)等。與之對(duì)應(yīng)的two-stage方案包括RCNN[6]、Fast-RCNN[7]、Faster-RCNN[8]等模型。考慮到牛群健康監(jiān)測(cè)系統(tǒng)對(duì)牛臉檢測(cè)模型速度上的要求,本文選擇使用SSD模型,并在原有模型的基礎(chǔ)上進(jìn)行優(yōu)化:使用輕量級(jí)網(wǎng)絡(luò)MobileNet v2[9]作為SSD的基礎(chǔ)網(wǎng)絡(luò)以提高模型速度;使用K-Means[10]聚類方法取代先驗(yàn)對(duì)檢測(cè)框高寬比進(jìn)行設(shè)置。從實(shí)驗(yàn)結(jié)果來看,改進(jìn)之后的SSD模型在速度以及精度上均有一個(gè)較大的提升。

圖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ù)測(cè)。模型結(jié)構(gòu)如圖1所示。
在檢測(cè)過程中,SSD使用了被稱為默認(rèn)框(default box)的機(jī)制[4],即生成一些預(yù)選框,和圖像中的物體進(jìn)行匹配,匹配到物體之后,使用softmax分類和邊界框回歸得到物體的種類與位置。邊界框回歸可以對(duì)默認(rèn)框進(jìn)行位置和大小的微調(diào),得到SSD模型最終的檢測(cè)框。默認(rèn)框匹配步驟如圖2所示。在同一個(gè)柵格(cell),SSD會(huì)使用4~6個(gè)高寬比不同的默認(rèn)框進(jìn)行匹配,匹配到物體之后,再進(jìn)行之后的分類和回歸操作。

圖2 默認(rèn)框匹配步驟
SSD模型需要對(duì)邊界框進(jìn)行回歸,還需要對(duì)物體的種類進(jìn)行預(yù)測(cè),所以SSD模型的損失函數(shù)由兩部分構(gòu)成:分類置信度損失Lconf和坐標(biāo)誤差Lloc[4]
在上式中,N是默認(rèn)框的個(gè)數(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對(duì)于離群點(diǎn)的敏感度不高,不容易出現(xiàn)梯度爆炸的情況

式中:g指的是訓(xùn)練樣本的ground truth,l指的是模型的預(yù)測(cè)框,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個(gè)參數(shù)[11],過多的參數(shù)量意味著更多的計(jì)算量。考慮到牛臉檢測(cè)對(duì)模型速度的要求,本文使用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è)置方法對(duì)于本文的牛臉檢測(cè)任務(wù)缺乏特異性。為了得到更為合理的高寬比設(shè)置,本文使用K-Means聚類算法對(duì)樣本高寬比進(jìn)行聚類,得到的聚類中心即為高寬比設(shè)置。實(shí)驗(yàn)對(duì)比結(jié)果表明,使用K-Means聚類得到的默認(rèn)框高寬比設(shè)置對(duì)于模型的精度、速度均有一定的提升。改進(jìn)模型結(jié)構(gòu)如圖3所示。
MobileNet v2結(jié)構(gòu)主要有兩個(gè)特點(diǎn),一是使用了深度可分離卷積[9];二是使用了倒置殘差塊[9]。就是這兩個(gè)特點(diǎn),讓MobileNet v2在使用極少的參數(shù)量的條件下依然保持較高精度。
和標(biāo)準(zhǔn)卷積相比,深度可分離卷積對(duì)特征圖的某一通道進(jìn)行卷積,之后使用1×1卷積進(jìn)行特征融合,其性能和標(biāo)準(zhǔn)卷積相似,但參數(shù)量得到了極大的減少。深度可分離卷積如圖4所示。

圖4 深度可分離卷積
圖4中,Dk為深度可分離卷積的卷積核大小,通常Dk=3, 即使用3×3的深度可分離卷積進(jìn)行特征提取,M為深度可分離卷積的卷積核個(gè)數(shù),通常M和輸入特征圖的通道數(shù)相等,N為1×1卷積核的個(gè)數(shù),故輸出特征圖的通道數(shù)也為N。
倒置殘差塊(inverted residual block)使用了shortcut連接,使模型可以搭建得更深而不會(huì)出現(xiàn)梯度消失的問題。和標(biāo)準(zhǔn)殘差塊相比,倒置殘差塊先使用1×1的卷積升通道數(shù),之后進(jìn)行深度可分離卷積提取特征,最后再使用1×1的卷積恢復(fù)之前的通道數(shù)[9]。這個(gè)過程剛好和標(biāo)準(zhǔn)殘差塊相反。同時(shí),為了解決MobileNet v1[12]出現(xiàn)的特征退化問題,倒置殘差塊最后一個(gè)激活函數(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匹配是參照兩個(gè)框的交并比(intersection-over-union,IoU)大小,交并比超過閾值,則認(rèn)為匹配成功。
考慮到交并比對(duì)默認(rèn)框匹配結(jié)果的影響,本文使用的距離度量如下式所示
distance=1-IoU
其中,IoU指的是參與聚類的樣本高寬比和聚類中心的交并比。
K-Means聚類算法的處理流程較為簡單,通過不斷地計(jì)算樣本點(diǎn)到聚類中心的距離,按照最小距離對(duì)樣本點(diǎn)進(jìn)行劃分,之后更新聚類中心的位置,如此反復(fù),直到更新不再出現(xiàn)變化為止。其流程偽代碼見表1。

表1 K-Means聚類偽代碼
本文的牛臉樣本主要來自imageNet[13]、Pascal VOC等公開數(shù)據(jù)集中標(biāo)注為“cattle”或者“cow”的樣本。考慮到本文提出的模型所面向的場(chǎng)景通常為養(yǎng)牛場(chǎng),為使模型的訓(xùn)練樣本和現(xiàn)實(shí)場(chǎng)景中的牛臉保持獨(dú)立同分布,本文在牛臉樣本中選擇黃牛作為主要研究對(duì)象,同時(shí),本文也使用google圖片獲得了在養(yǎng)牛場(chǎng)場(chǎng)景下的牛臉圖片。經(jīng)過篩選,數(shù)據(jù)集樣本大約為3800張,按照9∶1比例劃分訓(xùn)練集和測(cè)試集,數(shù)據(jù)集均使用三維標(biāo)注軟件labelimg進(jìn)行標(biāo)注。
本文實(shí)驗(yàn)使用的開發(fā)平臺(tái)為Ubuntu 18.0。平臺(tái)具體配置見表2。

表2 實(shí)驗(yàn)平臺(tái)配置
模型輸入圖片尺寸為300×300。batch size設(shè)置為32。優(yōu)化器使用的是RMSProp,其優(yōu)點(diǎn)是可以自己調(diào)整學(xué)習(xí)率[14],所以設(shè)置初始學(xué)習(xí)率為0.001,之后就不再需要對(duì)學(xué)習(xí)率進(jìn)行任何衰減操作。訓(xùn)練數(shù)據(jù)預(yù)處理使用了隨機(jī)裁剪、隨機(jī)padding、隨機(jī)鏡像以及色彩扭曲。
3.4.1 K-Means聚類結(jié)果與分析
K-Means聚類實(shí)驗(yàn)的評(píng)價(jià)標(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 時(shí),K-Means的聚類結(jié)果,平均交并比為70.63%。按照聚類得到的高寬比效果如圖8所示。

圖7 K-Means聚類結(jié)果

圖8 聚類的高寬比效果
3.4.2 改進(jìn)模型牛臉檢測(cè)結(jié)果與分析
改進(jìn)模型牛臉檢測(cè)使用的評(píng)價(jià)指標(biāo)為精確率(precision,P)以及召回率(recall,R)。計(jì)算公式如下所示

在速度上,本文使用FPS(frames per second)以及檢測(cè)框個(gè)數(shù)作為評(píng)價(jià)指標(biāo)。FPS表示每秒模型可處理的圖片張數(shù),檢測(cè)框個(gè)數(shù)表示在模型生成的默認(rèn)框的總個(gè)數(shù),通常檢測(cè)框越多,速度越慢。為了提升實(shí)驗(yàn)的對(duì)比度,除了經(jīng)典SSD網(wǎng)絡(luò),本文還選取了基于SqueezeNet、ShuffleNet等3種輕量級(jí)網(wǎng)絡(luò)的SSD模型進(jìn)行對(duì)比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果見表3,根據(jù)實(shí)驗(yàn)結(jié)果繪制柱狀圖,如圖9所示。在測(cè)試集上測(cè)試模型檢測(cè)效果,如圖10所示。
由對(duì)比實(shí)驗(yàn)結(jié)果可知,針對(duì)不同基礎(chǔ)網(wǎng)絡(luò)的SSD模型,使用K-Means聚類算法設(shè)置默認(rèn)框高寬比對(duì)于模型的精確率、召回率以及FPS均有一定的提升。說明針對(duì)具體的牛臉檢測(cè)場(chǎng)景,使用合理的默認(rèn)框高寬比對(duì)于提升模型性能十分重要。在模型表現(xiàn)上,本文給出的改進(jìn)模型在各個(gè)指標(biāo)均略高于其它模型。

表3 對(duì)比實(shí)驗(yàn)結(jié)果

圖9 模型性能對(duì)比

圖10 牛臉檢測(cè)效果
本文給出的改進(jìn)SSD模型,使用了MobileNet v2作為基礎(chǔ)網(wǎng)絡(luò)并且使用K-Means對(duì)樣本高寬比進(jìn)行聚類。在速度上、精度上均超過經(jīng)典SSD模型。通過對(duì)比實(shí)驗(yàn),改進(jìn)SSD模型在精確率、召回率以及FPS上均優(yōu)于基于其它輕量級(jí)網(wǎng)絡(luò)的SSD模型。針對(duì)不同的應(yīng)用場(chǎng)景,按照不同需求對(duì)模型進(jìn)行相應(yīng)的改進(jìn)與優(yōu)化,這也為之后人工智能項(xiàng)目的落地提供了一定的思考與參照。
計(jì)算機(jī)工程與設(shè)計(jì)2020年3期