?

基于改進YOLOv3的豬臉識別

2021-03-19 05:56何嶼彤陶浩兵辜麗川
中國農業大學學報 2021年3期
關鍵詞:特征提取卷積生豬

何嶼彤 李 斌 張 鋒 陶浩兵 辜麗川 焦 俊

(安徽農業大學 信息與計算機學院,合肥 230036)

近年來,隨著生豬養殖業智能化的發展,生豬的精準管理變得尤為重要,而識別生豬個體則是進行針對性養殖的關鍵。傳統的識別方式包括顏色標記、佩戴射頻識別耳標(Radio frequency identification,RFID)等。使用顏色標記的方法雖然直觀,但僅限于生豬較少的情況;而佩戴耳標則可能存在耳標損壞,脫標以及生豬感染寄生蟲等問題。

現有的豬臉識別研究較少,主要包括:1)Naoki等[1]利用特征空間方法,采用手動分割的特征實現生豬個體識別,在16個類別的數據集上達到 97.9% 的識別率;2)Hansen等[2]搭建了基于卷積,最大池化等結構的CNN模型,在農場豬臉識別上取得了較好結果;3)秦興等[3]利用雙線性卷積神經網絡進行生豬面部特征提取,并將不同層次的特征做外積融合形成最終個體特征,在其測試圖像集上達到了95.73%的識別準確率。上述研究在解決豬臉識別問題時,主要考慮單個個體樣本受光照、姿態、場景等因素的影響,當樣本圖像中有多個個體時,難以完成自動化管理中復雜環境下的多個體識別任務。

隨著深度學習技術在計算機視覺領域的廣泛運用[4-6],深度卷積神經網絡在人臉識別領域成果頗豐。理論上,應用于非侵入式場景的人臉識別對于豬臉識別有一定參考價值。深度學習技術在人臉識別領域的研究主要包括:1)Taigman等[7]提出的Deep-Face方法,使用4 000個人200萬的大規模訓練數據訓練深度卷積神經網絡,對人臉對齊和人臉表示提出改進,在LFW數據集上達到97.35%的準確率;2)Sun等[8-9]提出的DeepID系列使用25個網絡模型,并在網絡結構上同時考慮分類損失和驗證損失等,顯著提升了人臉識別效果;3)Sun等[10]提出的DeepID2神經網絡結構利用人臉識別信號提取不同人臉特征,增大不同人臉圖像間的類間差異,并使用人臉驗證信號提取同一個人臉的特征,減小類內差異,從而學習到區分能力較強的特征;4)Florian 等[11]提出的FaceNet網絡結構共擁有27層網絡層,引入Triplet損失函數提取人臉的特征信息,使得模型的學習能力更高效;5)Omkar等[12]在網絡結構中引入跨層連接,并使用了260萬的大規模數據集,在LFW和YTF數據集上達到很好的結果。

基于以上研究,本研究擬采用在骨干網絡中引入密連塊(DenseBlock)以及在檢測器中引入改進的SPP單元的方法,以期設計出能夠在多個尺度特征圖上對不同大小的目標進行檢測,能夠有針對性的實現多個體識別任務的豬臉識別算法。

1 材料與方法

1.1 樣本采集

樣本豬來自安徽蒙城京徽蒙養豬場,使用羅技C920 Pro攝像頭作為實時采集工具,利用NanoPc-T4開發板將USB連接的攝像頭采集到的圖像傳輸到開發板的I/O緩沖區中,在開發板的圖形運算單元上對圖像數據進行壓縮打包處理,利用4G通信模塊將圖像信息經過互聯網傳輸到服務器。試驗中安裝攝像頭的圈舍光照較為充足,且試驗采集裝置能夠遠程控制攝像頭的旋轉,使得采集到的樣本圖像具有不同角度的生豬個體臉部信息。

為保證采集到的樣本畫面連續,能夠辨認生豬個體是否為同一只,試驗采集裝置采樣時間間隔設置為0.5 s;由于過短的時間間隔可導致采集的樣本圖像之間相似度過高甚至畫面接近重復,故對采集到的樣本圖像進行了篩選。本研究對連續采集圖像之間采用結構相似性指數(Structural similarity index,SSIM)進行比較。經過對樣本進行一系列的比較試驗,試驗樣本同時選用SSIM值<0.78的2張圖像,若大于該值,則選用序號靠后的圖像,樣本圖像分辨率為1 920像素×1 080像素。

1.2 YOLOv3

YOLOv3模型使用連續的1×1和3×3卷積以及殘差模塊構成了1個包含52個卷積層以及1個全連接層的53層特征提取器Darknet53,結構見圖1,此時輸入圖片大小為256像素×256像素。在預測時,為了能夠充分利用早期特征映射中的上采樣特征和細粒度特征,YOLOv3模型使用了多尺度預測方法[13],輸入圖片大小為416像素×416像素。YOLOv3模型首先去除特征提取結構中的全連接層,在最后1個殘差塊的后面增加若干個核大小為1×1和3×3的卷積層集合,并使用最后1個1×1卷積層進行預測,此即為scale1。然后對該尺度提取到的特征圖執行上采樣操作,并使用concat操作將其與上一個殘差塊提取到的大小為26×26的特征拼接,拼接后的特征圖投入其后的多層卷積集合并預測,此即為scale2。最后,將scale2中提取的特征上采樣到52×52,并將其與上上個殘差塊輸出的特征拼接形成大小為52×52的特征圖,將該特征圖輸入其后的卷積層集合進行第3次預測,此即為scale3。

圖1 Darknet53結構

YOLOv3模型提供3種不同尺寸的先驗框,并依據不同的下采樣尺度,采用K-means方法聚類得到9種尺寸的先驗框,按照大特征圖小尺寸框的原則分配。YOLOv3模型利用線性回歸預測每個先驗框的目標分值[14]。網絡模型給每個ground truth對象只分配1個先驗框。訓練時,采用誤差平方和作為邊框預測的損失函數。圖2給出先驗框與預測邊界框在圖像上的關系。預測邊界框的中心坐標(bx,by)及寬度bw,高度bh的計算過程為:

(1)

式中:σ()為sigmoid函數;tx,ty為預測邊界框的中心偏移量;Cx,Cy分別為目標所在單元相對于圖像左上角的橫坐標與縱坐標;pw,ph分別為先驗框的寬度和高度;tw,th分別為預測邊界框的寬度和高度縮放比例。

YOLOv3模型為每個邊界框采用多標簽分類,使用單獨的邏輯回歸分類器取代softmax分類。在訓練過程中,利用二值交叉熵損失(Binary cross entropy)來預測類別。

1.先驗框;2.預測邊界框

1.3 DenseNet

密連網絡(DenseNet)是卷積神經網絡中的一種跨連模型。密連網絡包括密連塊和用于連接密連塊的過渡層。密連網絡的優勢在于能夠有效解決深層神經網絡的梯度消失問題,并在實現特征重用的同時減少了參數[15-16]。

xl=Hl([x0,x1,…xl-1])

(2)

式中:xl為第l層的輸出;Hl(·)為批標準化層(Batch normalization layer,BN Layer),ReLU函數以及3×3卷積層構成的組合函數。

2 YOLOv3_DB_SPP模型

由于豬場養殖環境的限制,采集到的生豬樣本面部存在臟污遮擋,需要深層神經網絡提取更具表征性的特征用于識別。然而,由于標記檢測圖像的時間代價大,短期內無法獲取較大的樣本數來應對深層神經網絡可能出現的梯度消失問題。本研究在原始YOLOv3模型的基礎上提出了YOLOv3_DB_SPP模型。該結構首先在基礎特征提取器中引入了DenseNet中的DenseBlock。其次,為了在不引入過多參數的前提下融合多尺度的信息,該結構在骨干網絡之后添加改進的SPP單元,以提高檢測豬群樣本中占整張圖片面積較小的生豬個體時的準確率。

2.1 特征提取器

YOLOv3_DB_SPP模型的特征提取器包括Convolutional單元和DenseBlock模塊2部分,結構見圖3。Convolutional單元由BN Layer,7×7或3×3的卷積層,Leaky ReLU激活函數構成(圖4)。其中BN Layer用于自適應的重參數化,起到避免網絡參數分布發生偏移的作用,在一定程度上能夠緩解深層網絡的過擬合以及梯度消失問題,且對參數初始化的影響比較小。為了更充分的保留原圖信息,提高對小目標的檢測精度,本研究參考ResNet[17]和GoogLeNet[18]的做法,將特征提取器第一個卷積層的核大小設置為7×7,并在該層實現第一次下采樣,其余的4次下采樣均采用3×3的卷積層實現。

圖3 特征提取器

圖4 Convolutional單元

改進的特征提取器使用DenseBlock代替原來的Residual單元,DenseBlock中每個卷積層輸出的特征圖數目為k,k值的設置較殘差模塊會小得多,使得網絡更窄,在加深層次的同時參數數目不至于增長的過多,減少網絡計算量。本研究采用的5個DenseBlock除Denseblock1之外其余4個DenseBlock的結構一致,如圖5所示。其中非線性轉換Hi由BN Layer,1×1的卷積層,Leaky ReLU激活函數以及大小為3×3的卷積層組成。本研究使用Leaky ReLU函數取代原DenseNet網絡中使用的ReLU函數,以防止取到負值的參數被置0導致該神經元無法學習。在3×3的卷積層之前仍然添加1×1的卷積作為瓶頸層,用于對輸入到3×3卷積層的特征進行降維,減少計算量。

為了不引入過多參數,本研究使用的DenseBlock1中每個卷積層的輸出通道數設置為32,且僅使用3層的結構。經過DenseBlock1對特征的重復利用之后,對后面的DenseBlock2,3,4采取或加深層次或減小輸出通道數的做法,這3個密連塊的k值分別為16、16、32,且均包含8個卷積層。最后一個密連塊為了輸出更加豐富的特征信息設置了較大的通道數64,采用4層結構。由于DenseBlock中的卷積層較Residual中要多,故將其疊加使用次數分別減少到1、2、4、2、1。避免因次數使用過多導致網絡層次過深,影響到模型的效率。YOLOv3_DB_SPP模型結構見圖6。

圖5 DenseBlock1(a)和DenseBlock2,3,4,5 (b)的結構圖

圖6 YOLOv3_DB_SPP模型結構圖

2.2 檢測器

由于豬場養殖環境分為單只圈養和多只圈養,采集多只圈養的樣本時,樣本圖像中生豬個體多且擁擠,部分生豬距離攝像頭距離較遠,且有遮擋豬臉的情況發生。為了能夠檢測到這類小目標,本研究提出的YOLOv3_DB_SPP模型引入了改進的SPP模塊。

在YOLOv3_DB_SPP模型中,先在特征提取器之后增加Convolutional Set。它包括3組1×1和3×3的卷積層,再在該單元的后面引入改進的SPP單元(圖7)。改進的SPP單元對卷積層提取的特征圖分別進行大小為7×7,5×5以及3×3的最大池化。為了保持輸入輸出尺寸一致,在池化操作前對特征提取器的輸出做了padding操作,并設置池化步長為1。

圖7 改進的SPP單元

改進的SPP單元對3種不同尺度池化的結果進行了concat操作,多次最大池化操作在不同尺度上保留響應最強烈的特征,且利用拼接特征提取器的輸出與改進的SPP單元的輸出保留卷積層提取的特征,再經過1個3×3卷積層的處理后,輸入第一尺度檢測器的1×1卷積層,實現在尺寸為13×13的特征圖上的檢測操作。

相對于傳統的SPP,改進的SPP單元將輸入的特征圖與池化后的特征圖進行通道合并,使得更多的特征被捕獲,提高了大目標及一般目標的識別精度。其中較小尺度的池化,用于提取遠距離小目標的代表性特征。

網絡的第二個尺度對改進的SPP單元輸出與骨干網絡輸出拼接得到的特征圖進行上采樣,輸出特征圖大小為26×26。與YOLOv3模型不同,YOLOv3_DB_SPP模型中密連塊層數較多,如果仍然將上采樣得到的26×26的特征圖與DenseBlock4輸出的特征圖進行拼接操作,輸出的通道數將會變得很大,而在此處進行1×1降維又有可能會丟失部分特征,故在第二尺度采用第四個下采樣層大小為26×26的輸出與其進行拼接。再經過Convolutional Set和3×3卷積后輸入1×1卷積層,完成第二次檢測。最后一個尺度重復第二個尺度的操作,將第三個下采樣層的輸出與第二尺度拼接后特征的上采樣特征進行拼接,經過一系列1×1和3×3卷積后在最后一個1×1卷積上完成預測。

3 試驗數據集

試驗中網絡模型的輸入為416像素×416像素的RGB彩色生豬圖像,原數據集2 128張,經過水平翻轉,隨機裁剪,鏡像翻轉以及隨機移位產生 8 512 張樣本,訓練集和測試集樣本數比例約為9∶1。

試驗采用的豬臉數據集包含的10個生豬個體分別編號為pig1,pig2,…,pig10。使用labelImg手動標框并賦標簽名,界面見圖8。labelImg生成的XML文件包含了樣本圖像的尺寸以及樣本框左上角和右下角的坐標等信息。

4 試驗方法

本試驗采用的操作系統為Ubuntu18.04.3,CPU為Intel i5 9400F 2.9 GHz,內存64 G,GPU為NVIDIA GEFORCE RTX 2080Ti,顯存32 G;深度學習框架為Tensorflow,版本號1.13.0。

圖8 生豬數據集的打標簽界面

試驗分為3個階段,分別訓練15、25、40個epoch,batch尺寸為32,設置最大學習率lrmax和最小學習率lrmin,迭代步數指迭代的batch數目。由于網絡訓練初期可能出現loss值為NaN的情況,為了避免該問題,第一階段的學習率設置為當前迭代步數與第一階段總迭代步數的比值與lrmax的乘積,該階段用于穩定訓練,學習率逐漸增大至lrmax。第一階段與第二階段均凍結除去檢測器外所有層的參數,利用模型在PASCAL VOC2007數據集上訓練得到的參數作為初始參數,僅訓練檢測器層,最終學習率為lrmax與lrmin的中值。最后一階段進行全網訓練,最終學習率為lrmin。

由于改進的YOLOv3_DB_SPP模型與YOLOv3模型在卷積層層數,參數數目等方面均有區別,因此在訓練時本試驗根據模型收斂實際情況使用了2組參數。針對YOLOv3和YOLOv3_DB模型,lrmax和lrmin分別設置為10-4和10-6,針對YOLOv3_DB_SPP模型,lrmax和lrmin分別設置為10-5和10-7。

網絡模型的損失函數分為3個部分,目標類別的損失Lcls以及置信度損失Lconf使用二值交叉熵函數,定位損失Lloc采用預測偏移量與真實偏移量之間差的平方和作為損失函數,三者之和為最終損失total_loss,具體如下:

(3)

(4)

(5)

total_loss=Lclass+Lconf+Lloc

(6)

5 結果與分析

在迭代20 315個迭代步數后,3個模型的總損失值均收斂到0.15附近(圖9),三者訓練時間均為3.0~3.5 h。

圖9 YOLOv3 (a)、YOLOv3_DB (b)以及YOLOv3_DB_SPP (c)的總損失值曲線

表1示出當IOU閾值為0.5,分類概率閾值T=0.1時3種模型對豬臉數據集的檢測結果,包括平均精度均值(Mean average precision,mAP)與平均精度值(Average precision,AP)。其中YOLOv3_DB模型表示未加改進的SPP單元的檢測器??梢钥闯?,YOLOv3_DB模型與YOLOv3_DB_SPP模型的mAP值均高于YOLOv3模型,且后者較前者有顯著提升,說明本研究提出的方法對提高檢測準確率有明顯作用。YOLOv3_DB方法在前7類樣本上的AP值雖然有所提升,但對于pig8,pig9,pig10這種多只圈養的生豬樣本,檢測結果并不夠好,而YOLOv3_DB_SPP模型不僅前7類樣本的檢測效果優于前2種模型,且對多只圈養的樣本仍有較高檢測結果,說明改進的SPP單元對于檢測距離較遠,遮擋較多的小目標物體有所助益。

表1 T=0.1時3種模型對豬臉數據集的檢測結果

為了進一步說明模型的性能,表2示出不同分類概率閾值下3種模型檢測豬臉數據集時的mAP值以及檢測速度,此時IOU閾值仍為0.5??梢钥闯鲭S著分類概率閾值的不斷提升,YOLOv3模型的mAP下降十分明顯,而改進的2版模型結果受影響相對較小,結果表明YOLOv3模型的檢測結果普遍是低概率的,一旦閾值提升,低概率結果被剔除,mAP也就隨之下降;且對這10類樣本進行目標檢測時,改進的網絡模型檢測每種生豬個體時的mAP相較于YOLOv3模型均有不同幅度的提升,但YOLOv3_DB模型與YOLOv3_DB_SPP模型的檢測速度要次于YOLOv3模型。

表2 不同閾值T下3種模型檢測豬臉數據集時的平均精度均值及速度

圖10示出YOLOv3,YOLOv3_DB和YOLOv3_DB_SPP這3種模型對多只圈養樣本的檢測結果??梢钥闯?,相對于YOLOv3模型,YOLOv3_DB模型能夠很好檢測出右下角有陰影遮擋的生豬;YOLOv3_DB_SPP相對于YOLOv3和YOLOv3_DB模型,實現了對角落里遮擋較多的小樣本的檢測。

圖11示出YOLOv3,YOLOv3_DB和YOLOv3_DB_SPP這3種模型檢測多只圈養樣本時產生的預測邊界框??梢?,YOLOv3_DB模型相對于YOLOv3模型,預測邊界框框出的檢測目標更加完整;YOLOv3_DB_SPP模型相較于前2種模型能夠實現對較遠距離下遮擋較多的小目標的檢測,但對小樣本邊界框的定位不夠精確。

圖10 YOLOv3 (a)、YOLOv3_DB (b)以及YOLOv3_DB_SPP (c) 3種模型對豬臉圖像的檢測結果

圖11 YOLOv3 (a)、YOLOv3_DB (b)以及YOLOv3_DB_SPP (c) 3種模型檢測豬臉圖像時的預測邊界框

6 結 論

本研究將DenseBlock引入YOLOv3模型的特征提取器Darknet53得到檢測模型YOLOv3_DB,并將其與改進的SPP單元結合,提出一種新的檢測模型YOLOv3_DB_SPP,應用到生豬識別中。當IOU閾值為0.5,分類概率閾值為0.1時,YOLOv3_DB模型檢測豬臉數據集時的平均精度均值為82.76%,檢測速度60幀/s,與YOLOv3模型相比,其平均精度均值高出2.76%,速度僅相差5幀/s;YOLOv3_DB_SPP模型檢測豬臉數據集時的平均精度均值為90.18%,檢測速度56幀/s,相較于YOLOv3模型,其平均精度均值高9.87%,速度慢9幀/s。試驗表明本研究提出的YOLOv3_DB_SPP模型在檢測速度損失不大的情況下,提高了檢測精度并實現了對遠距離有遮擋小目標的檢測,但預測邊界框的定位精度仍有待提高。

猜你喜歡
特征提取卷積生豬
生豬中暑的診斷及治療
生豬貼“秋膘” 管理要跟上
基于3D-Winograd的快速卷積算法設計及FPGA實現
入伏后,怎樣防止生豬中暑
從濾波器理解卷積
基于Daubechies(dbN)的飛行器音頻特征提取
基于傅里葉域卷積表示的目標跟蹤算法
生豬 廣西生豬自成一極
Bagging RCSP腦電特征提取算法
基于MED和循環域解調的多故障特征提取
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合