李小迪,王天一
(貴州大學 大數據與信息工程學院,貴陽 550000)
隨著智能信息處理技術的快步發展,羊養殖業方式從傳統的個體散養模式逐漸轉變為規模化、智能化養殖。在傳統養殖方式中多采用人工觀測法[1]和無線射頻[2]的方式,對羊只個體進行目標檢測。人工觀測法需要耗費大量的人力和時間,不僅檢測效率低,且檢測錯誤率高;無線射頻的方式需要額外的設備與同步的識別方法,一定程度上提高了養殖場的運營成本,影響養殖場的經濟效益。傳統的姿態識別多使用回歸出精確關節點坐標的方式或無線傳感網絡來對姿態進行判別,在運動靈活的個體識別上可擴展性較差,且識別成本較高。
近年來,基于深度學習的目標檢測[3]和姿態識別的方法,已成為國內外研究熱點,其典型算法為YOLO 系列算法。YOLO 系列算法利用了回歸的思想,能夠在原圖片中的位置上,回歸出目標檢測的邊框和目標的類別。為了實時對羊只狀況進行了解,本文以羊只養殖場監控視頻為研究對象,使用YOLOv3[4-6]網絡。YOLOv3 主干網絡采用殘差結構,其目的是為了防止連續下采樣導致的特征丟失。但是該方法仍然保持了傳統的卷積操作,帶來了巨大的flpos 計算量,雖保證了特征提取的多尺度性,但是卻一定程度的增加了模型推理的時間。在監控視頻的羊只檢測與識別的視覺任務中,羊只整體呈現白色,RGB 3 通道值均接近255,其大部分本體并不包含足夠的視覺信息。同時,目標本體一定程度上存在周圍環境的遮擋,即使是人眼視覺都很難辨認。從深度學習層面可以認為這種監督信號比較稀疏,給檢測和識別任務增加了難度。
在人腦對于羊只的感知中,當一張圖片中存在羊只時,人眼看到后會下意識地將注意力轉移到羊只上,而忽略周圍環境。此外,人眼并不需要看全羊只整體,通過羊只犄角,腿部等局部特征便可辨認目標,還可以結合周圍環境的全局線索去推理出羊只的具體位置。另一方面,對于骨干網絡來說,占據整張圖中絕大部分還是周圍單調的環境信息,計算機對于不同通道之間的特征會等價處理。
受此啟發,為了實現骨干網絡對于多尺度特征提取的性能,去除單調的環境對目標的干擾,同時減少模型的計算量,本文選擇循環特征移位聚合器(Recurrent Feature-Shift Aggregator,RESA)[7]來替代YOLOv3 主干網絡中的Resblock[8]部分,且增加了通道注意力[9]模塊壓縮激勵 網 絡(Squeeze-and -Excitation Networks,SENet),使網絡在訓練過程中將更多的權重轉移到重要的通道信息上。此外,本文采用余弦退火學習率[10-11],在整個訓練過程中控制模型的收斂性。通過在訓練初期設置較大的學習率來避免陷入局部最優解,并在訓練過程中逐漸降低學習率,使得模型能夠穩定的學習,進而收斂到全局最優解。
如圖1 所示,YOLOv3 由darknet53、特征金字塔(Feature Pyramid Network,FPN)及YOLO Head 3 部分構成。

圖1 YOLOv3 網絡結構Fig.1 Yolov3 network structure
Darknet53 被稱作YOLOv3 的主干特征提取網絡,輸入的圖片首先會在Darknet53 中進行特征提取。該模塊由一個普通卷積模塊和5 個殘差塊組成,輸入圖片首先會被調整成416×416×3 的大小,卷積過程對圖片進行下采樣處理,每經過一個卷積模塊圖片的寬和高就會被壓縮至原圖片的1/2,通道數在卷積過程中不斷擴張,以此獲得一系列特征層,用來表示輸入圖片的特征。
FPN 被稱作YOLOv3 的加強特征提取網絡,在主干部分獲得的3 個有效特征層,會在這一部分進行特征融合,特征融合的目的是結合不同尺度的特征信息。在獲得3 個有效特征層后,利用其進行FPN 層的構建。
YOLO Head 實際上就是YOLOv3 的分類器與回歸器,其所做的工作就是進行分類預測與回歸預測。因此,整個YOLOv3 網絡所作的工作就是特征提取-特征加強-獲得預測結果。
如圖2 所示為SENet 的結構圖,SENet 可以分為壓 縮(squeeze),激 勵 excitation)和 重 標 定(reweight)3 個部分。

圖2 SENet 結構圖Fig.2 Structure of SENet
輸入一張大小為H*W*C的特征圖(H、W、C分別為該特征圖的高、寬、通道數),經過squeeze 模塊,將特征圖順著空間維度進行壓縮,通過全局平均池化操作,將每個二維的特征通道變成一個實數,這個實數某種程度上具有全局的感受野,最終輸出1*1*C的特征圖。輸出的維度和輸入的特征通道數相匹配,實現每個通道的所有特征求均值,旨在得到通道級的全局特征。
excitation 部分包括兩個全連接層和兩個激活函數。輸入圖片經過第一個全連接層時,通道數降為C/r(r為衰減因子,參照文獻[12]中驗證,r取值為16),然后使用ReLU激活函數激活;經過第二個全連接層時,恢復至C通道數,接著使用Sigmoid函數激活。基于通道間的相關性,每個通道生成一個權重,用來代表特征通道的重要程度。通過訓練過程中學習權重,使得每一層通道獲得非線性,即學習各個通道之間的主次關系。
最后,在reweight 部分,將excitation 輸出的權重看做每個特征通道的重要性,通過乘法逐通道加權到之前的特征上,完成通道維度上對原始特征的重標定,從而實現不同通道特征重要性的區分。
RESA 算法是通過一個介于編碼器(用于特征提取)和解碼器(用于目標恢復)之間的RESA 模塊,將骨干網絡中提取到的空間信息(局部信息與全局信息)進行聚合,使得原始特征得到增強。該模塊在特征傳遞之前會將特征圖中的特征進行切片,若要將特征進行左右傳遞,則先將特征圖在列方向分為很多個切片,隨后不同特征加權疊加。同理,在行方向上進行特征切片以及加權,左右及上下方向的信息傳遞均能夠增強羊只不同特征部位以及周圍環境的關聯性。通過信息傳遞,理論上能夠有助于目標的推理。從網絡結構來看,RESA 模塊采用了大量切片特征加權,因此這種非常規卷積的特征傳遞方式,能夠減少時間消耗,且經過不同步長的特征迭代,最終輸出的特征圖上,每個像素整合了全局的每一處特征信息,能夠有效防止傳播過程中信息的丟失。
RESA 模塊如圖3 所示,其中包含了4 種子模塊。分別為左->右、上->下、右->左、下->上,每部分模塊均為n次迭代。圖3(a)為左->右模塊1-n次迭代的結構圖,其中包含了不同步長下的信息傳遞示意圖。特征圖被縱向分為許多切片,當步長為1 時,由左數第一個切片的特征經卷積操作后,疊加至第二個切片。同理,當步長為2 的時候會疊加至第三個切片,以此類推。圖3(b)為從下->上的模塊,處理過程同上。

圖3 RESA 模塊結構圖Fig.3 Structure diagram of RESA module
本文在YOLOv3 的主干網絡上進行了模型的優化,當第一次完成特征層提取后,嵌入SENet 模塊,如圖4 所示。首先,輸入圖片的尺寸會被調整為416×416×3,經過一次1×1 卷積后,特征圖的通道數得到擴展,尺寸變為416×416×32;隨后,特征圖進入SE 模塊進行壓縮,經過全局平均池化操作后,特征圖的大小被壓縮為1×1×32;經過全連接層,特征圖的大小變為1×1×2,衰減因子r為16。使用ReLU激活函數進行激活,此時的通道數不變;再經過一層全連接層,恢復通道數為32;最后使用Sigmoid函數進行激活,此時每個通道都分配到了不同的權重;再通過乘法,逐通道加權到之前的特征上,權重值越大,說明網絡對該通道的關注度越高;其次,去除YOLOv3 主干網絡中的殘差結構,將分配好權重的特征圖輸入到RESA 模塊中,進行行方向和列方向的切片處理,使得空間通道特征得以豐富。

圖4 YOLOv3-SE-RE 模型結構圖Fig.4 Structure diagram of Yolov3-SE-RE model
在訓練網絡時,學習率會隨著訓練而發生變化。在訓練網絡的后期,若學習率過高,則會造成損失的振蕩,而學習率衰減過快,則會造成模型收斂變慢的情況。由于模型在訓練初期對于圖像是完全未知的,即模型對于像素信息的理解相當于均勻分布,因此訓練初期模型非常容易陷入過擬合。基于此,本文采用余弦退火方式對學習率進行調整,余弦退火學習率整體符合余弦函數的變化方式。余弦函數中,隨著x的變化,函數值先緩慢下降然后加速下降,以此為一個周期循環。當模型經過幾個輪次的訓練后,逐漸對于數據集有所了解,此時需要降低學習率,使得模型能夠穩定的學習,從而向著全局最優解去收斂。這種下降模式與學習率結合,能輕松讓模型跳出局部最優解。學習率定義如下:

這兩個值限制了學習率的范圍,使學習率能夠在一定范圍內衰減。Tcur表示當前執行了多少個輪次(epoch),由于Tcur在每個批次(batch)運行后將會更新,而此時的epoch 還沒有執行完,因此Tcur可以為小數。Ti表示第i次運行時總的epoch 數。本文中,模型的初始學習率設置為0.01,隨著epoch 的增加,學習率按照余弦規律減小,開始下降速度緩慢,當訓練到第20 個epoch 時,學習率下降速度變快,最終大小為5×10-4。
3.1.1 數據集構成
為了獲取高質量的羊只圖片,需要對獲取到的羊舍監控視頻進行預處理操作,首先將獲得的3 047個監控視頻進行手動裁剪,裁剪出合適的角度后手動刪除無效片段。由于羊只在監控視頻中多出現站立和坐臥的姿勢,于是將裁剪出的有效監控按照羊的姿勢分為站立(stand)和坐臥(lie down)兩個類別,共計309 個有效監控視頻。然后對有效監控視頻進行關鍵幀的提取,由于羊只在羊舍內的活動范圍較小,在短時間內羊只的姿態不會發生明顯的變化,因此每隔50 幀提取一張關鍵幀圖片。此外,通過手動刪除關鍵幀中羊只肢體不全、遮擋嚴重、無羊只等無效圖像,最終得到808 張羊只站立圖片和1 192張羊只坐臥圖片,共計2 000 張圖片。
3.1.2 數據集的標注
本文使用Labelimg 標注工具對羊只數據集圖像進行標注,標注過程中為了不引入太多的背景,只對羊只主體進行標注,數據集按照訓練集和測試集8 ∶2 的方式劃分,模型優化前后均在相同的數據集下訓練測試40 輪次。
實驗均在Ubuntu18.04.4LTS 操作系統上進行,python3.7,tensorflow2.0 深度學習框架,cpu 為i7-9700,顯卡為RTX 2080Ti,使用Labelimg 對自建數據集進行標記,總共2 000 張圖片,按照8 ∶2 的比例劃分為訓練集和測試集。
本文將基于通道注意力機制的YOLOv3 模型稱為YOLOv3-SE 模型、基于RESA 算法的YOLOv3 模型稱為YOLOv3-RE 模型、基于通道注意力機制及RESA 算法的模型稱為YOLOv3-SE-RE 模型。
3.3.1mAP及檢測速度對比
將上述4 個模型在自建數據集上訓練40 個epoch 后,對訓練好的模型進行測試實驗。測試集圖片共400 張,在相同的測試集下分別測試了算法優化前后模型的推理速度,即前向傳播一次,推理一張圖片所用的時間及模型在測試集上的mAP值見表1。

表1 YOLOv3 算法與改進后系列算法在測試集上的實驗結果Tab.1 Experimental results of YOLOv3 algorithm and a series of improved algorithms on the test set
由此可見,YOLOv3 模型的mAP為86.02%,YOLOv3-SE 模型的mAP達到了88.37%,相比YOLOv3 模型增加了2.35%;YOLOv3-RE 模型的mAP達到了91.26%,相比于YOLOv3 模型增加了5.24%。
實驗表明,增加了注意力機制的YOLOv3 模型,以及增加了RESA 模塊的YOLOv3 模型,目標檢測均值平均精度略高于YOLOv3 模型。而結合了兩個模塊的YOLOv3-SE-RE 模型的目標檢測的均值平均精度為96%,明顯高于YOLOv3 模型,且單張圖片推理速度也明顯高于YOLOv3 模型。
3.3.2 精確度與召回率對比
模型優化前后,精確度與召回率的對比結果如圖5 所示。

圖5 精確度與召回率比較Fig.5 Comparison between accuracy and recall
由圖5(a)、(b)所見,YOLOv3 模型的精確率與召回率穩定在0.75 與0.7,當模型在訓練到第15 個epoch 時,精確度達到最高,然后開始下降。而YOLOv3-SE-RE 模型兩項測試指標在模型訓練至40 epoch分別提升至0.79 與0.97。由此可見,無論是精確率還是召回率,優化后的模型更加平穩,且收斂速度更快。
3.3.3 Loss 的對比
模型在訓練過程中損失函數可視化結果如圖6所示。由圖6(a)可見,obj_loss 在第40 個epoch 時損失達到了2.5e-3。而從模型優化后的損失函數曲線(圖6(b))可以看到,當模型訓練到第40 個epoch 時,損失可降低至2e-3。由于余弦退火學習率的加入,使得整個訓練過程中損失函數收斂的更快且更加平滑。

圖6 損失函數比較Fig.6 Loss function comparison
3.3.4 站立姿態檢測效果對比
如圖7 所示,在站立姿態下,與YOLOv3 算法相比,YOLOv3-SE 算法的預測框將右下角羊蹄完整框入其中,且預測框緊貼羊只個體;YOLOv3-RE 算法預測框將羊只的左右兩只羊蹄完整框入其中,且預測框緊貼羊只個體;YOLOv3-SE-RE 算法預測框將羊只個體完整框入其中,且預測框緊貼羊只個體且沒有將過多的背景框入其中。實驗證明,通道注意力機制,可以使模型更加關注包含重要信息的通道,減少對背景的關注度。RESA 算法可以增加羊只不同部位之間的關聯性,通道注意力機制與RESA 模塊均可以提升模型的檢測精度。
3.3.5 坐臥姿態檢測效果對比
如圖8 所示,在坐臥姿態中,與YOLOv3 算法相比,YOLOv3-SE 算法的預測框更完全的將羊只框入其中,且預測框緊貼羊只個體沒有框入過多背景;YOLOv3-RE 算法預測框的準確率以及置信度均略高于YOLOv3 模型;YOLOv3-SE-RE 算法預測框,將兩只緊貼的羊只個體完全框入其中,預測框緊貼羊只個體并沒有將過多背景,且置信度也有所提高。實驗證明,在坐臥姿態下,改進后的網絡識別效果明顯優于原模型。

圖8 坐臥姿態檢測效果Fig.8 Sitting and lying posture detection effect
本文通過對YOLOv3 算法的優化,實現了對視頻監控中羊只姿態的高效識別。首先在主干網絡darknet53 中增加通道注意力機制,增加不同通道的特征相關性,讓網絡重點關注權重值較大的通道信息,以提高網絡的檢測精度。其次通過增加RESA模塊,對特征圖進行行方向和列方向的切片和聚合,增加目標檢測物體不同部位之間的關聯性,同時提高了檢測精度和速度。實驗結果表明,YOLOv3-SE-RE 模型在檢測精度和檢測速度上都超過了原始YOLOv3 模型,對于不同姿態的識別,效果也有明顯的優化,本應用在智能養殖方面有較好的應用前景。