趙紅梅 文嘉睿
關鍵詞:桃子檢測; YOLOv5s; MobileNetv3; 注意力機制; 輕量化
1 引言
目前我國是世界上最大的桃子生產國,占世界總產量的60%以上,且每年呈上漲趨勢[1]。當大量的桃子成熟時,需要大量的人工去進行采摘,耗時耗力,效率低下,而且隨著人們生活水平的提升,對桃子的外觀、口感要求也越發(fā)的高,對桃子采摘也提出了一定的要求。所以,研究桃子的自動采摘技術很有意義。其中,如何快速、準確地檢測桃子目標成為桃子自動采摘技術的關鍵。
目前在水果的目標檢測領域,以檢測蘋果為主要研究目標,針對桃子的目標檢測研究較少,而且大多數采用傳統(tǒng)的圖像處理方式,在果園這種果實被枝葉遮擋、果實重疊遮擋、光照復雜等復雜環(huán)境下,檢測的準確度較低,另外果實采摘系統(tǒng)的嵌入式平臺一般算力有限,復雜的模型很難滿足檢測速度的實時性要求。因此,在保證桃子檢測精度的同時,提高桃子檢測的速度成為桃子檢測的研究難點和熱點。
近年來,隨著人工智能技術的飛速發(fā)展,基于深度學習的目標檢測算法發(fā)展迅速,主要分為兩類:第一類是以R-CNN[2-4]系列為代表的二階段目標檢測算法,該類算法先生成建議目標框,然后再對建議目標框內的物體進行分類和位置的回歸;第二類是以YOLO[5-8]系列、SSD[9]系列為代表的一階段目標檢測算法,該類方法無須生成建議目標框的階段,而是直接對圖像進行卷積提取特征,然后在特征圖上進行目標位置的回歸,減少了檢測的時間,但是會在一定程度上影響精度,但是在對實時性要求比較高的應用場景下,一階段目標檢測算法應用更為廣泛[10]。
本文以目標檢測算法中性能比較好的YOLOv5s 網絡模型為基礎,提出一種改進YOLOv5s的輕量級桃子檢測算法,用更輕量的MobileNetv3網絡替換主干特征提取網絡,以實現(xiàn)網絡模型的輕量化,平衡速度與精度;然后將通道注意機制SE模塊替換為更高效的ECA模塊。
2 YOLOv5s 算法
YOLOv5算法是YOLO系列算法的一個延伸,由Ultralytics公司在2020年提出的,是目前從檢測精度與速度上來說較為優(yōu)秀的一階段檢測網絡模型。依據模型的不同深度和寬度,可以分為五個基準模型:YOLOv5n、YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x。其中YOLOv5s是模型較小的同時精度較高的一個,更適合輕量化的桃子檢測,因此本文選取YOLOv5s模型作為基準模型進行改進。YOLOv5s模型主要包括In?put、Backone、Neck以及Head這四個部分,其網絡結構如圖1所示。
Input部分進行圖像預處理,采用Mosaic數據增強、自動計算錨框、自適應圖片縮放等方法。Mosaic 數據增強選取多張圖片,采用隨機裁剪、隨機縮放、隨機排布的方式進行圖像拼接,擴張了檢測數據集,特別是很多小目標被隨機縮放后,增加了樣本的多樣性,使得網絡模型更加魯棒。
預處理之后的圖像再輸入到Backbone部分提取豐富的圖像特征,包括邊緣特征、紋理特征以及位置特征等。Backbone 主干網絡主要包括Focus 模塊、CSP模塊[11]以及SPP模塊[12]。其中Focus模塊的切片操作,將高分辨率的特征圖拆分成多個低分辨率的特征圖,然后拼接在一起,再經過一次卷積,能夠減少計算量的同時降低內存的使用量;而CSP模塊主要用于局部跨通道融合,將原輸入分成兩條處理線,分別進行卷積操作,使得通道數縮減為原來一半,然后另外一條處理線進行多個Bottleneck操作,然后拼接兩條處理線上的特征圖,使得輸入與輸出是一樣的大小,增強了網絡對特征的融合能力;SPP模塊是空間金字塔池化層,采用統(tǒng)一的步長但不同尺寸的卷積核實現(xiàn),統(tǒng)一步長代表輸出的特征圖尺寸一樣,再通過concate按通道拼接后用1×1卷積,實現(xiàn)特征融合,可以進一步提高檢測精度;CBL模塊是由卷積層(Conv) 、歸一化層(BN) 、激活函數SiLu構成,主要作用是可以從深層和淺層特征圖中提取上下文信息。
Neck部分主要包含F(xiàn)PN和PAN結構,其中FPN 結構通過自頂向下進行上采樣,將高層的語義信息帶給底層的特征圖,而PAN結構自底向上進行下采樣,將底層的位置信息帶給高層的特征圖,然后將高層和底層的特征圖進行拼接,使得更強的語義信息和位置信息被不同尺度的特征圖所包含,增強了網絡的特征提取能力。
Head部分對獲取到的三種不同尺度特征圖像,預測類別概率、置信度以及預測框進行損失函數的計算,同時采用非極大值抑制預測置信度較高的預測框。其中,三種尺度分別是20×20、40×40、80×80,采用的損失函數是GIOU_Loss[13]。
3 YOLOv5s 算法改進
3.1 主干網絡的改進
YOLOv5s是多目標檢測模型,而本文所研究的桃子檢測僅對桃子這一類目標進行檢測,使得原始模型存在一定的參數冗余,而且目前大多數采摘機器人上安裝的嵌入式設備用于部署目標檢測模型,其計算和存儲資源有限,因此有必要對模型進行輕量化的改進。
MobileNet網絡是Google針對手機等嵌入式設備提出的一種輕量的深層神經網絡,采用可分離的卷積以及反向殘差結構的思想進行模型構建[14],在模型延遲和準確率中尋找平衡點,具有模型小和性能優(yōu)等特點??煞蛛x卷積由深度卷積和逐點卷積構成,深度卷積為每個數據的輸入通道設置不同尺寸的卷積核,逐點卷積為每個數據設置尺寸為1的固定卷積核。兩種類型的卷積結合后相當于一個標準的卷積,但是大大降低了參數數量以及運算量。然而對比其他的卷積神經網絡,MobileNet網絡模型的精度仍然存在提升的空間。
MobileNetv3[15]是在MobileNetv2網絡的基礎上,融合了SE模塊[16]以及Swish激活函數構成,其主干網絡Bneck結構如下圖2所示,首先對輸入的特征利用一個1×1的卷積層進行升維,擴張通道數后進行可分離卷積特征提取,再引入殘差結構。MobileNetv3網絡會將提取到的圖像特征輸入到注意力SE模塊中,全局平均池化后再輸入到全連接層FC1,通道數縮減為原來的1/4,再經過激活函數Relu,F(xiàn)C2將通道數擴張回原來的大小,之后再接一個h-swish激活函數,減少運算量,提高性能。
3.2 ECA 注意力機制
基于深度學習的目標檢測技術在計算機視覺領域已經得到了廣泛應用,然后面對復雜環(huán)境下的多尺度目標檢測時,仍然面臨著檢測精度不夠高、定位不夠準確等問題。目前,大部分是在檢測基準模型上增強多尺度特征以及引入注意力機制模塊。
MobileNetv3網絡模型中采用的是注意力機制中的SE模塊,通過兩個全連接層融合通道特征,該全連接層使得SE模塊不具備輕量級,之后的特征降維使得通道與其預測權值沒有直接聯(lián)系,影響SE模塊的整體性能。
ECA模塊是一種超輕量級的注意力模塊,其對SE 模塊進行了一些改進,提出了一種不降維的局部跨通道融合方法,通過一維卷積高效地實現(xiàn)局部跨通道交互,提取通道間的依賴關系,適當的跨通道交互可以在顯著降低模型復雜度的同時保持性能,因此本文采用ECA模塊替換MobileNetv3中的SE模塊。
4 實驗結果與分析
4.1 實驗平臺
本實驗的平臺采用PyTorch1.8.1深度學習框架,計算機操作系統(tǒng)為ubuntu18.04,Python 版本為3.8,Cuda版本為11.1,CPU為7核的Intel(R) Xeon(R) CPUE5-2680 v4 @ 2.40GHz,內存為16GB,GPU為NVIDIATITAN Xp,顯存大小為12GB。
4.2 數據集準備
本文實驗使用的數據集由兩部分組成。第一部分來自Fruit-360這個開源數據集,這個數據集包括120種水果和蔬菜,其中每張圖像都是在實驗室進行采集,然后去除了背景,只剩下目標物體,本文提取了其中Peach品種的桃子圖像,共計492張圖像。第二部分數據集使用自建數據集,圖像來自于互聯(lián)網,以桃子為關鍵詞進行搜索獲得,經過數據篩選,保留了629張圖像。這兩部分數據集加起來一共1121張圖像,使用lableImg標注圖像中的桃子目標框,并以8:2 的比例將其分為訓練集896張,驗證集225張。
4.3 訓練參數設置
本文采用YOLOv5s模型進行訓練,優(yōu)化器采用SGD,訓練200輪迭代,批次大小設置為64,初始化學習率為0.01,采用mosaic進行數據增強。
4.4 評價指標
本文采用精確率(Precision) 、召回率(Recall) 、平均精度(Average Precision,AP) 這幾個指標對模型進行檢測精度評價,精確率表示預測正樣本中真正的正樣本的比例,召回率表示預測正樣本中真正的正樣本占實際正樣本的比例,平均精度AP值是由召回率和精確率分別為橫坐標和縱坐標圍成的區(qū)域面積計算得來。其中,數值越大,模型的檢測精度越高。
此外,采用以下兩方面指標作為模型的性能評價指標,模型內存占用量、每秒浮點運算量(FloatingpointOperations Per Second,F(xiàn)LOPs) ,其中,數值越小,模型的運行速度越快。
4.5 實驗結果分析
本文方法在自建數據集上的訓練精度曲線如圖5 所示,在經過50輪迭代后訓練精度曲線逐漸收斂,100 輪迭代后逐漸趨于穩(wěn)定,曲線沒有出現(xiàn)欠擬合或者過擬合的現(xiàn)象,訓練精度較為理想。
本文方法在自建數據集上訓練200輪迭代后,得到模型的精確率為89.7%,召回率為85.5%,AP 為92.9%,檢測不同遮擋情況下的桃子目標的效果如圖6 所示,其中檢測框上方顯示目標名稱以及置信度,圖中不同遮擋和大小的桃子目標都可準確檢測到,表明該算法能夠在復雜環(huán)境下有效地檢測出桃子目標,適用于果園這種枝葉遮擋、果實重疊遮擋、光照復雜的環(huán)境。
為了評價MobileNetv3替換YOLOv5s主干網絡的性能提升效果,表1中對比了這兩個網絡模型的各項評價指標,從中可以發(fā)現(xiàn),改進后的模型內存占用量大大降低了,從原來的14.5MB降到了3.2MB,每秒浮點運算量從原來的15.8GFLOPs降到了2.3GFLOPs,但是損失了一點精度,精確率降低了0.8%,召回率降低了3%,AP降低了0.6%。
為了評價ECA模塊對于本文網絡(YOLOv5s+Mo?bileNetv3,即用MobileNetv3 替換YOLOv5s 中的主干網絡)的提升效果,分別基于SE、CA、ECA、CBAM注意力機制對網絡進行改進,并且進行訓練,然后對以上4 種注意力機制進行評估,如表2所示。其中,ECA模塊的模型內存占用量最低,從SE模塊的3.2MB降到了2.3MB,同時精確率、召回率、AP是4種注意力機制中最高的,在SE模塊的基礎上都有一點提升,分別從精確度89%、召回率86.7%提高到89.7%、87.5%,實驗表明使用ECA模塊替換SE模塊是有效的。
綜合考慮桃子檢測模型的檢測精度和性能,相比改進前的YOLOv5s模型,本文的模型更加適用于嵌入式平臺上的桃子模型部署,在保證精度的前提下?lián)碛休^高的檢測性能。
5 結論
本文提出了一種基于改進YOLOv5s的輕量級桃子檢測算法,首先選用輕量級的卷積神經網絡模型MobileNetv3替換YOLOv5s中的主干網絡,在保持高精度的同時,降低網絡模型大小,加快檢測速度;其次對比4種類型注意力機制模塊對模型性能的影響,選擇性能最優(yōu)的ECA模塊替換MobileNetv3中的SE模塊,提高通道信息的融合效率,進而提高網絡模型的檢測精度以及性能。實驗表明,本文所提出的桃子檢測算法與YOLOv5s相比,模型內存占用量從14.5MB 降到了2.3MB,只有原來的15.8%,模型計算量GFLOPs從原來的15.8降到了1.9,只有原來的12%,而精度上損失一點,精確率從原來的89.8%降低到89.7%,降低了0.1%,召回率從原來的89.7%降低到87.5%,降低了2.2%,AP從原來的93.5%降低到92.9%降低了0.6%,比起模型內存占用量和計算量上的性能提升,這點精度上損失要小很多,更適合移植到嵌入式系統(tǒng)中。