李文婧,徐國偉,孔維剛,郭風祥,宋慶增
1.天津工業大學 電氣與電子工程學院,天津300387
2.天津工業大學 計算機科學與技術學院,天津300387
我國作為農業生產大國之一,農業技術不斷提高,自動化產業也不斷壯大。視覺識別和定位技術作為視覺領域的研究熱點之一,已在自動化配置中得到實際應用,在一定程度上實現了工業機器人的智能化,但由于工況復雜,工序要求特殊,難以完成精確識別和定位。本文主要研究植物幼苗圖像中的葉莖交點的目標檢測與定位,最終實現幼苗移植栽培。此研究能夠很大程度上提升工業中的智能程度,減少大量的人工勞動力,對工業中目標識別與定位領域的發展具有較大的現實意義。
目前針對目標檢測的研究方法主要分為:傳統圖像處理的目標檢測方法和基于深度學習的目標檢測方法。傳統的檢測方法大多是基于尺度不變特征變換(scale-invariant feature transform descriptors,SIFT)[1]、方向梯度特征直方圖(histogram of oriented gradients,HOG)[2]、紋理特征[3]、顏色特征[4]以及形狀特征[5]等特征提取來實現對目標的檢測。傳統算法局限于葉片顏色、形狀、紋理等特征,對于模糊邊緣提取和高復雜度的情況,其精確度與魯棒性很難達到預期水平,無法滿足人們對目標檢測高性能效果的需求[6]。
近年來卷積網絡的興起,基于深度學習的目標檢測技術不斷成熟,在精度和速度上有了很大提升,逐漸取代傳統方法。其典型代表有:基于區域選擇的R-CNN系列算法R-CNN[7]、Fast R-CNN[8]、Faster R-CNN[9],但這些方法檢測耗時,達不到實時檢測的效果;SSD(single shot multibox detector)[10]融合多尺度檢測模型,在速度上有所提升,但對小目標檢測性能不足。YOLO(you only look once)系列算法是深度學習領域應用最廣泛的算法之一,YOLOv1[11]輸入尺寸固定,對占比較小的物體目標檢測效果較差;YOLOv2[12]去除全連接層,提高了檢測速度;YOLOv3[13]得到了較好的檢測性能,能夠有效檢測出小目標物體,速度沒有顯著提升。
YOLOv4[14]是YOLO 系列目標檢測算法中的第四版,精度和速度都有顯著提升。通過卷積神經網絡提取更深層次的目標特征,對不同尺度的特征進行融合,能夠識別到圖像的抽象特征,在速度和精確度方面均優于傳統的目標檢測算法。本文以植物幼苗圖像檢測為例,針對葉莖交點進行目標檢測,完成了基于軟件開發平臺的設計思想和總體框架設計。
植物幼苗自然生長的過程中,會出現幼苗大小不一致以及根莖扭曲的現象,導致幼苗識別問題情況多樣化,因此計算葉莖交點的問題在幼苗切割任務中具有決定性意義?,F有的育苗方法中,大部分采用人工割苗再育苗,耗費了大量的時間和精力。本文首先對植物幼苗葉莖交點進行識別,再計算得到其交點坐標,最后推算出剪切點坐標位置,從而進一步實現自動化剪切與種植,達到減少人力消耗,提高幼苗存活率的目的。
由于葉莖交點識別的算法還尚未完善,本文在YOLOv4 的基礎上,通過改變特征提取網絡、有效特征層等優化措施,在保證速度在合理范圍內的前提下,提升目標圖片的識別速度。卷積神經網絡往往存在龐大的參數量和計算量,而且網絡層的參數和結構多變,卷積層的計算通常占到卷積神經網絡計算總量的90%以上,是設計計算模塊時需要重點考慮的部分。在有限的存儲空間和計算資源的情況下,采用輕量化的網絡結構是非常必要的。
為了減少計算量和參數量,本文采用輕量化的網絡結構,利用GhostNet[15]代替原來的CSPDarknet53(cross stage paritial darknet)作為主干特征提取網絡,采用全局平均池化下采樣特征方式增加卷積特征感受野。具體實現步驟為:首先,選取大量數據集,人工標定大量具有目標信息的數據集圖片,制作有針對性的目標數據集,同時利用生成對抗網絡對原始數據進行數據增強,增加數據集的多樣性;其次,在構建網絡檢測模型時,選擇YOLOv4 作為主要檢測算法,針對識別目標的特點,對其網絡結構進行改進,選取GhostNet作為特征提取網絡,并且在檢測層設置四種預測尺度,有效地提高識別精度,能夠較好地完成圖像中的目標實時檢測任務。
數據集質量是影響深度學習算法設計和訓練過程中的關鍵因素[16]。本文采用自制的植物幼苗數據集,圖片大小為416×416,共8 629 張。在數據集中標注葉莖交點類別,共制作標簽數據11 079個實例。
數據集的來源主要分為兩部分:一部分數據集來源于相機等數字設備采集的植物葉莖,相關植物來自實驗室培育,通過拍攝幼苗葉莖不同角度得到;另一部分來自Kaggle網絡平臺上公開的數據集,并加入相應花草的葉莖圖像,以加強目標識別算法的魯棒性。部分數據集圖片如圖1所示。

圖1 數據集部分圖片Fig.1 Part of images in data set
標定精度越高,得到的結果越好,因此標注質量將直接影響檢測結果。本文使用LabelImg 工具對幼苗圖像的葉莖交點進行畫框標注,選定圖像中含有幼苗葉莖交點的像素點,使葉莖交點位于圖像中心,最終得到xml標簽格式。為滿足YOLOv4神經網絡的訓練要求,將制作好的數據集保存為PASCAL VOC 格式,以便用于網絡訓練與測試。
考慮到人工采集數據的局限性,本文采用生成對抗網絡(generative adversarial network,GAN)[17]進行數據增強,增加樣本的多樣性,從而達到擴充數據集和提高數據質量的目的,以便增強其魯棒性,獲得更好的實驗結果。
生成對抗網絡主要是通過生成數據的方式來獲得更多的訓練樣本。主要包括兩個模型:生成模型G(generative model)、判別模型D(discriminative model)。
生成模型G:不斷地學習訓練集中真實數據的概率分布。目標是把輸入的隨機噪聲轉化為新的樣本圖片,盡可能生成更真實的樣本,即生成的圖片與訓練集中的圖片相似度越高越好,其本質上是一個神經網絡。
判別模型D:判斷一張圖片是否為真實的圖片。目標是將生成模型G產生的“假”圖片與訓練集中的“真”圖片分辨開。生成網絡與判別網絡交替訓練,假樣本在訓練過程中真假變換,最后生成網絡生成真假難辨的圖像,本質上也是一個二分類的神經網絡,也可視為一種對抗博弈的過程。
G(z)表示將輸入的噪聲z映射到數據中來產生樣本。D(x)表示x來自于真實的數據分布。優化的目標函數定義如式(1)的形式:

式(1)對應上述兩個模塊的優化過程,x表示真實圖片,z表示輸入G網絡的噪聲。可以分別看作是式(2)和式(3),先確定判別器D,再將生成器G與真實數據進行擬合:

根據文獻[17]中提出的GAN 搭建了本文所用的網絡,所得圖片的生成過程如圖2所示。

圖2 GAN生成圖片的過程Fig.2 Process of GAN generating pictures
DCGAN[18]是對原GAN網絡的改進,將深度卷積網絡CNN與GAN相結合,用兩個卷積神經網絡取代上述提到的生成器G和判別器D。將空間池化層用卷積層替代,去除全連接層。將生成器G中的池化層用卷積層來替代,輸出層采用Tanh激活函數,其余層采用ReLU作為激活函數,而判別器D中都使用Leaky ReLU作為激活函數。使用DCGAN網絡生成的圖片如圖3所示。

圖3 DCGAN生成圖片的過程Fig.3 Process of DCGAN generating pictures
在深度學習算法中,采用深度卷積神經網絡思想,構建YOLOv4網絡來提取圖像特征,是圖像目標識別所要解決的主要問題。分析和改進現有的YOLOv4網絡,實質上是特征層的提取以及決策推理,為了盡可能精確地提取特征,就需將這些網絡層結構進行組合。
YOLOv4算法在YOLOv3原有的基礎上,進行了多方面的優化,在性能方面有顯著提高。首先對主干提取網絡進行改進,由Darknet53 變為CSPDarknet53;其次改進特征網絡,引入空間金字塔池化(spatial pyramid pooling,SPP)模塊,顯著增加感受野;采用路徑匯聚網絡(path aggregation network,PANet)作為參數聚合的方法;使用Mosaic 數據增強;最后使用Mish 激活函數,使得檢測速度和精度都達到較高水平。
YOLOv4 主要由Backbone、Neck、Head 三部分構成。整體網絡結構如圖4所示。
Backbone部分使用CSPDarknet53網絡。Neck部分用于提取Backbone 的特征,由SPP 塊和PANet 塊組成。Head部分用來分類和定位,與YOLOv3 Head部分多尺度檢測頭相同。
由于本文檢測目標屬于小目標類型,小目標模型在提取特征后進行檢測時需要更多的特征層信息,而在原始的YOLOv4 網絡中,負責檢測的YOLO Head 所劃分的網格數量有限,僅利用3 個尺度的特征,對淺層信息的利用并不充分,并且每個網格中Anchor的尺寸大小也不利于檢測小目標樣本?;谏鲜鲈?,本文對YOLOv4中多尺度檢測模塊進行改進,同時增加專門用來檢測小目標樣本的檢測層,對負責檢測該層的Anchor利用KMeans聚類算法進行參數的選取,使其更加利于檢測本文使用的數據集。如圖4 所示,把YOLO Head 的尺度由原本的13×13、26×26、52×52 擴展為13×13、26×26、52×52、104×104這4個維度,實現對小型目標的檢測。

圖4 YOLOv4整體網絡結構Fig.4 YOLOv4 overall network structure
Backbone 部分為CSPDarknet53 主干特征提取網絡,主要由多個Resblock_Body 塊、卷積層和Mish 激活函數組成,共有53 層,每個Resblock_Body 都具有相同的卷積操作過程,對應的輸入和輸出特征值不同。CSP模塊結構如圖5所示。

圖5 CSP模塊結構圖Fig.5 CSP module structure diagram
當輸入為416×416 時,CSPDarknet53 特征結構如表1所示。

表1 CSPDarknet53網絡參數表Table 1 CSPDarknet53 network parameter table
對于數據增強,加入馬賽克增強。Mosaic 數據增強,每張圖片都有其對應的樣本框,將4 張圖片拼接獲得1 張新的圖片,同時得到與該圖片對應的樣本框,將這張新的圖片輸入到神經網絡中進行學習。這種方法大大豐富了檢測物體的背景信息,且能夠同時實現4張圖片數據的標準化BN(batch normalization)計算。
激活函數層面,采用Mish[19]非線性激活函數,它在負值層面添加了一段平滑點,并且正值層面不會出現非飽和區域,無需考慮梯度消失。Mish 激活函數的光滑特性使信息深入到神經網絡中,能更好地傳遞信息,從而獲得更好的穩定性和準確性。Mish激活函數如式(4)所示:

其中,x為經歸一化層傳入的參數值。
SPP位于主干網絡和Neck的連接處,由3個最大池化層MaxPooling組成3個不同尺度的向量,將不同尺度的向量與原特征圖的向量用Concat 將通道拼接成為多尺度向量,提取不同尺度的空間特征信息,能夠有效擴大感受野,減少過擬合。
SPP模塊結構圖如圖6所示。

圖6 SPP模塊結構圖Fig.6 SPP module structure diagram
PANet 將上采樣、下采樣與特征相融合,使上采樣和下采樣的結果與對應有效特征層卷積的結果同時進行Concat,并對多層級的信息進行整合后進行預測,有效利用底層信息,最終得到4個YOLO Head有效特征層。
由于網絡部署需要較少的參數量和計算量,選擇GhostNet作為YOLOv4的主干特征提取網絡。Ghost模塊使用更少的參數生成同樣的特征,網絡特征層之間很多是相似的,特征層中的冗余部分可能是重要的組成部分,因此Ghost中保留了冗余信息,用更低的計算量成本來獲取特征信息。
如圖7 所示,對于輸入的特征層,用常規卷積操作生成部分真實特征層,再對真實特征層的每個通道進行深度卷積DW 處理得到Ghost 特征層,然后將真實特征層與Ghost 特征層Concat 拼接在一起得到完整的輸出特征層。

圖7 Ghost模塊結構圖Fig.7 Ghost module structure diagram
輸入特征圖為h×w×Cin,輸出特征圖為h′×w′×Cout,把輸入特征層分為n份,卷積核尺寸為k。
常規卷積計算量為:

Ghost模塊計算量為:

從Ghost 模塊計算量中可以看出,把Ghost 模塊分為兩部分計算,一部分為常規卷積,另一部分為深度卷積,得到模型壓縮率約為n,減少了模型計算量。
YOLOv4-GhostNet整體結構框架如圖8所示,Ghost-Net作為主干提取網絡,分別在Bottleneck為第5層、第11層、第16 層時進行提取。其中,GhostNetBottleNeck 瓶頸層由兩個GhostModule 組成,第一個用來擴充通道數,第二個用來減少通道數目,與輸入相連接的通道數目匹配。當輸入為416×416 時,GhostNet 特征結構如表2所示。

表2 GhostNet網絡參數表Table 2 GhostNet network parameter table

圖8 YOLOv4-GhostNet整體結構圖Fig.8 YOLOv4-GhostNet overall structure diagram
損失函數給出了調整權值來降低Loss的信號,因此在做出錯誤的預測時,期望它能及時給出反饋。IOU用來確定正負樣本以及評價輸出框和真實框的距離,如式(5)所示:

其中,A代表預測框,B代表真實框。IOU作為損失函數得到IOU Loss[20],計算公式如式(6)所示:

GIOU[21]在Loss中引入IOU,計算公式如式(7)所示:

其中,C代表A與B所占最小面積。使用GIOU 作為Loss函數得到DIOU Loss[22],計算公式如式(8)所示:

其中,b、bgt分別表示A和B的中心點,ρ表示中心點之間的距離。在DIOU的基礎上增加A的長寬比,得到CIOU Loss[22],如式(9)所示:

其中,α是權重,υ是用來衡量長寬比的相似度。
由于考慮到重疊區域、中心點距離和長寬比3個因素,CIOU Loss 收斂的精度更高,采用CIOU Loss 作為損失函數。
實驗平臺操作系統為Ubuntu 18.04.5,使用Pytorch(1.6.0)框架進行網絡結構修改,CPU為AMD Ryzen 7-4800H,GPU為Nvidia RTX2060,Cuda版本為10.2。
在實驗的訓練和測試中所設置的圖片為416×416尺寸JPG 格式,參數設置Batch_size 等于8,學習率為0.001,使用余弦退火衰減學習法對網絡學習率進行調整,平滑標簽smooth_label 設置為0.01。由于原始網絡的Anchor尺寸不適用于交點目標,采用K-Mean聚類方法計算出適用于本數據集的12 個Anchor 大小,分別對應4個特征層,每個特征層對應3個Anchor boxes,應用到訓練網絡中得出12 個Anchor boxes 大小分別為:7×11,14×28,21×31,36×51,36×30,36×67,55×49,66×77,78×119,96×67,119×100,198×156。
實驗在docker 部署的集群上使用4 個GPU 進行訓練,整個訓練過程為100個epoch,使用預訓練權重分別訓練原始的YOLOv4 網絡、改進的YOLOv4 模型以及YOLOv4-GhostNet網絡,最后將上述3種模型的結果進行對比。圖9 為經過多次訓練得到的圖像測試效果對比圖,圖(a)和圖(c)是改進后YOLOv4 網絡訓練結果,圖(b)和圖(d)是YOLOv4-GhostNet 網絡訓練結果。得到表示目標位置矩形框的表示方式Xmin、Ymin、Xmax、Ymax,然后計算得到中心點位置(Cx,Cy)的坐標,即中心交點的位置,為剪切點的定位提供了位置信息。

圖9 測試結果對比圖Fig.9 Test result comparison
本文對原有的YOLOv4網絡、改進的YOLOv4模型與YOLOv4-GhostNet進行了比較,并在表3中對各項性能指標進行對比。本文針對單種類的目標識別,檢測精度用AP(average precision)值來衡量,表示預測正確(正類負類)占總預測的比重;精確率(Precision)表示正確預測占全部預測為正的比例;召回率(Recall)表示正確預測為正的占全部實際為正的比例;F1 值是精確值和召回率的調和均值;通過FPS 檢測幀率對速度進行評估。

表3 性能指標對比Table 3 Performance index comparison
由表3 可以看出,改進后網絡AP 值最高可達到80.94%,比原YOLOv4 網絡提升了4.81 個百分點,精確度提升了3.17 個百分點,召回率提升了2.30 個百分點,F1分數提升了0.02,FPS沒有明顯提升。通過對比可以看出,YOLOv4-GhostNet 效果略差于改進的YOLOv4模型效果,但YOLOv4-GhostNet 網絡的模型大小相比YOLOv4減小了36.06%,FPS提高了36.45%。
為了解決傳統檢測算法特征提取精度低的問題,對YOLOv4框架進行了改進,選用4個不同尺度的錨框,有效地獲取更多的圖片信息,改進后YOLOv4網絡準確率提升了3.17個百分點。為了便于在嵌入式設備上部署,采用參數量更小的YOLOv4-GhostNet 輕量化網絡,在保證精確度的情況下,檢測速度提高到79.3 frame/s,將模型大小縮減了36.06%,較YOLOv4 網絡幀率提高了51.07%。完成了特征提取與坐標定位,實現了植物圖像中葉莖交點的有效檢測,為植物移植與栽培工作提供了保障。下一步將對多株植物、多目標以及部分遮擋的問題進行研究,并對YOLOv4 網絡進行模型壓縮處理,進一步提升網絡的檢測效率與實用性。