改進YOLOv4!讓你的網路漲點!

點選下方卡片,關注“CVer”公眾號
AI/CV重磅乾貨,第一時間送達
轉載自:集智書童

A fast accurate fine-grain object detection model based on YOLOv4 deep neural network

植物病害的早期識別和預防是精準農業技術的一個關鍵技術。本文提出了一種高效能的實時細粒度目標檢測框架,解決了傳統方法的密集分佈、不規則形態、多尺度目標類別、紋理相似性等困難。
改進後的YOLOv4網路架構如下:
  • 透過在Backbone中整合DenseNet來最佳化特徵傳播和重用,使檢測精度和速度最大化,在Backbone和Neck中提出了兩個新的殘差塊來增強特徵提取,同時降低計算成本;
  • 空間金字塔池化(SPP)增強了感受野,改進的路徑聚合網路(PANet)保留了細粒度區域性資訊,改善了特徵融合。
  • 此外,使用hard-swish函式作為主要啟用函式,由於其具有更好的非線性特徵提取能力,提高了模型的精度。
該模型在不同挑戰性環境下4種不同病害檢測中進行了驗證。該模型在檢測精度和速度方面優於現有的檢測模型。在檢出率為70.19FPS時,該模型的精度值為90.33%,f1 score為93.64%,平均平均精度(mAP)值為96.29%。
目前的工作為在複雜場景下檢測不同植物疾病提供了一種有效和高效的方法,可擴充套件到不同的水果和農作物檢測、通用疾病檢測和各種自動農業檢測過程。

1再看YOLOv4

YOLOv4是一個高精度的單階段目標檢測模型,它透過生成邊界框座標併為每個類分配機率,將目標檢測任務轉換為一個迴歸問題。
如圖1所示,完整的網路結構由3個部分組成:
  1. 特徵提取的Backbone;
  2. 提取特徵的語義表示的Neck;
  3. 以及預測的Head。
圖1 YOLOv4
在網路架構中,將殘差模組整合到ResNet網路結構中,獲得DarkNet53。為了進一步提高網路效能,結合Cross Stage Partial Network(CSPNet),結合其優越的學習能力,形成CSPDarkNet53。將不同的特徵層的資訊輸入到殘差模組中,提供更高層次的特徵對映作為輸出。與ResNet網路相比,這顯著降低了網路引數,同時提高了殘差特徵資訊,提高了特徵學習能力。
在最初的YOLOv4 Backbone中,SPP塊與PANet以及CSPDarknet53整合,取代了YOLO其他變體中使用的特徵金字塔網路(FPN)。這帶來了感受野的顯著增加。
SPP採用了一種有效的目標檢測不同尺度的策略。
  • 首先,在SPP中對輸入的特徵層進行卷積操作。
  • 之後,可以透過4種不同kernel-size的池化操作來對前面所提特徵進行池化操作。
  • 然後,將從SPP中獲得的合併特徵資訊連線起來並進一步進行卷積,這顯著增加了檢測網路的感受野。
從Backbone和SPP中獲得的特徵在PANet中透過卷積後進行了上取樣,從而得到輸入的特徵層的2倍大小。為了提取額外的語義特徵,特徵層從CSPDarknet53經過卷積後被連線,然後上取樣,然後下采樣,與剩餘的特徵層堆疊,以增強特徵融合過程,如圖1所示。
因此,Neck被用來提取豐富的語義特徵,並用於準確的預測。
最後,對於特定輸入的影象大小,YOLOv4模型可以在3個不同的尺度上預測檢測頭上得到邊界框座標。
在第一步,輸入的影象離散成N×N等間距的網格。如果目標屬於網格單元,該模型生成B預測邊界框和相應的置信分數。採用非最大抑制(NMS)演算法對其最佳邊界框預測進行過濾,然後得到最終的邊界框。預測過程如圖2所示。
圖2 NMS演算法
為了幫助模型學習給定影象在充滿挑戰的情況下的各種分佈,特別是噪聲、複雜背景等,YOLOv4引入了CutMix、Mosaic增強和自對抗訓練(SAT)方法來擴充套件資料集。此外,還可以使用drop block正則化學習空間識別特徵,類標籤平滑來更好地泛化資料集。
雖然上述技術可以有效提高模型的檢測精度,但由於環境複雜,植物病害檢測任務面臨著密集的細粒病害、感染區域幾何形態不規則、多尺度感染病變共存、感染區域與周圍環境紋理相似、光照條件變化、重疊和遮擋等方面的具體挑戰。
因此,原始的YOLOv4可以提供較低的檢測精度,這可能導致大量的遺漏檢測,以及由於多尺度疾病檢測問題的細顆粒特徵提取不足而導致錯誤的目標預測。此外,YOLOv4具有較高的計算成本和較長的訓練時間,這可能不適用於現場移動裝置。

2改進YOLOv4

為了解決上述與實時疾病檢測程式相關的問題,本研究對最先進的YOLOv4演算法進行了改進和最佳化,用於在複雜的背景環境中準確預測細粒度影象多屬性檢測。在後面的章節中,透過在複雜的背景下實時檢測不同的番茄植株病害,證明了該模型的有效性。改進後的YOLOv4網路架構的完整示意圖如圖3所示。
圖3 改進版本的YOLOv4
提出的修改包括:
  • 適當的選擇啟用函式的Backbone和Neck
  • 結合DenseNet思想改進和最佳化CSPDarkNet
  • 提出2個新的殘差塊用於Backbone和Neck,以增強特徵提取網路和降低計算成本
  • 整合SPP塊
  • 植入修改的PANet以儲存細粒區域性資訊特徵
  • 使用原YOLOv3 Head作為檢測頭。
該模型輸入的影象大小為416×416×3,可以以52×52×24、226×26×24和13×13×24三個不同尺度預測檢測頭的邊界框。結果發現,透過上述修改,該模型優於其他最先進的檢測模型,特別是在檢測細粒番茄植株病害方面。

2.1 Backbone中特徵提取網路的改進

CSPDarknet53中的殘差模型幫助網路學習更有表達力的特徵,同時減少可訓練引數的數量,使其更快地進行實時檢測。在原始的YOLOv4模型中,殘差單元(Res-unit)進行1×1卷積,然後進行3×3卷積,最後對包含提取的特徵資訊的兩個輸出進行權值。
在CSPDarknet53網路中,透過卷積操作對輸入影象的特徵層進行連續降取樣,提取細粒度豐富的語義資訊。由於最後三層包含相對較高的語義資訊,這些資訊被傳遞給SPP和PANet。最後一個特徵層包含最好的特徵資訊,並連線到SPP。其他兩層被整合到PANet中,如圖3所示。雖然YOLOv4中的殘差模組降低了計算成本,但這進一步降低了高解析度實時檢測的計算記憶體需求。
因此,在CSPDarkNet53網路結構中提出了一個新的殘差塊,CSP1-n(n為殘差加權操作的次數)(見圖3)提高檢測速度和效能。
圖3(c)
在所提出的CSP1-n殘差塊中,輸入特徵被分為2部分:

Part1

殘差塊的第一部分作為Backbone,在進入主殘差單元后進行1×1卷積,再進行1×1卷積,調整通道,如圖3(c)所示。為了進一步增強特徵提取,它然後執行3×3的卷積;

Part2

而第二部分作為卷積的殘差邊。在CSP1-n塊的末端,這兩個部分被連線起來,從而產生額外的特徵層資訊。
在本研究中,CSP1-n模組在一個改進的Backbone中取代了CSP8和CSP4。最後,進行1×1卷積,對通道進行堆積。在改進後的CSPDarknet53中實現CSP1-n模組,顯著提高了本文所使用的特徵資料集的檢測精度。

2.2 實現Hard-Swish啟用,以提高準確性

開發目標檢測模型的一個重要方面是選擇合適的啟用函式,以提高精度和效能。啟用函式可以透過諸如導數、單調行為等性質來表徵。在這方面,Leaky-ReLU、Mish被廣泛應用於密集目標檢測模型中的啟用。然而,使用Swish函式作為ReLU的下降替代品,顯示了神經網路效能的顯著改善。Swish函式表示為,。由於s函式σ(x)的存在,它增加了計算成本。因此,使用Hard-swish啟用函式,其中Swish函式中的σ(x)被替換為ReLU6(x+3):
由於H-swish具有獨特的非單調性,它可以提高檢測模型對不同資料集的效能。此外,由於H-swish下方有界及其無界性,它有助於消除輸出神經元的飽和問題,改善網路正則化。此外,它的計算速度比Swish快,並且有利於訓練,因為它有助於學習更有表現力的特徵,對噪聲更魯棒。
不同的目標檢測演算法都採用了H-swish啟用,大大減少了模型的記憶體訪問次數。這裡使用Hard-Swish函式作為Backbone和Neck的主要啟用函式,在所考慮的資料集上具有顯著的精度增益。此外,提高了檢測速度,大大降低了計算成本。

2.3 改進CSPDarkNet以實現更好的特徵傳播和重用

在目標檢測過程中,YOLOv4演算法減少了訓練過程中的特徵對映。由於卷積和降取樣過程的幾個步驟,訓練樣本的重要特徵資訊在傳輸過程中可能會丟失。為了儲存重要的特徵對映和更有效地重用關鍵的特徵資訊,提出了DenseNet框架,其中每一層都向前連線到其他層。該框架的主要優點是,第n層能夠從所有以前的層接收到所需的特徵資訊作為輸入。
這裡,是第n層的拼接特徵圖函式;是第層的特徵圖。這樣便允許DenseNet減少引數的數量,增強特徵傳播和促進特徵重用。
由於影象資料集的複雜性,特別是多規模疾病類別的密集分佈和共存,使用密集塊來更好地促進在整個網路中的特徵傳遞和梯度傳播至關重要。此外,它還可以在一定程度上減輕過擬合現象。
在該模型中,將原CSPDarknet53中的最後兩個殘差CSP8和CSP4塊修改為Dense-CSP1-4和Dense-CSP1-2,透過新增Dense連線塊來增強特徵傳播。
圖4(a、b)
此外,透過刪除CSP-n塊,減少了冗餘特性操作,提高了計算速度。所提出的DenseBlock和相應的網路引數的示意圖如圖4(a、b)所示。
用深度網路結構取代了26×26和13×13的下采樣層,明顯改善了網路結構。在dense block-1中,傳遞特徵圖函式對層進行非線性變換,其中每一層由64個特徵層組成,每個特徵層的解析度為26×26畫素,如圖4(a)所示。
CSP1-4之前的dense block-1在26×26解析度的層上進行特徵傳播和層拼接,最終的正向傳播特徵層大小為26×26×512。同樣,在解析度為13×13的層上進行特徵傳播和層拼接,得到在CSP1-2之前的dense block-2最終正向傳播解析度為13×13×1024的特徵層,如圖4(b)所示。
Dense-CSPDarknet53配置確保了在訓練期間,當輸入的影象被轉移到網路的較低解析度層時,以後的特徵層從前一層獲得特徵,從而減少了特徵損失。此外,不同的低解析度卷積層可以重用它們之間的特性,提高了特徵使用率。

2.4 使用SPP增強感受野

如圖3所示,為了增強目標檢測過程中的感受野和分離重要的上下文特徵,將SPP塊與Dense-CSPDarknet53 Backbone結構的最後一個殘差塊(CSP1-2)緊密整合。
SPP採用了一種有效的策略來檢測不同長度尺度下的目標。它用空間金字塔型別的池化層替換了池化層(在最後一個卷積層之後)。
如圖4(c)所示,在提出的修改過程中,SPP保留了輸出的空間維度,因為最大池化應用於大小為5×5、9×9和13×13的kernel-size,stride為1。
圖4(c)
一個相對較大的13×13最大池化有效地增加了Backbone的感受野。

2.5 修改PANet以儲存細粒度的區域性資訊

在本文開發的目標檢測神經網路模型中,早期層提取區域性紋理和模式資訊,構建後期層所需的語義資訊。然而,隨著殘差塊層的增加,層間的互聯性變得更加複雜,特別是由於每一層之間的密集連線塊已連線到以前的所有圖層。這就需要對區域性資訊進行微調。
為了解決這一問題,在該模型的Neck部分採用了PANet,縮短了多尺度特徵金字塔圖的高、低融合路徑。PANet使用元素級最大操作融合來自所有層的資訊,與FPN相比具有更靈活的ROI池化。為了在較低的層次上傳播資訊,在PANet中使用了一個自下而上的路徑增強方法,如圖3所示。
圖3(d)
在PANet中添加了CSP2-n模組,將基本特徵層分為2部分,透過跨階段操作減少了重複梯度資訊的使用,如圖3(d)所示這進一步改進了具有全域性特徵資訊的多尺度區域性特徵融合。CSP2-n的引入改進了特徵提取流程,從而顯著提高了檢測精度和速度。

2.6 其他Tricks

除了上述模型架構的修改外,還:
  • Dropout特徵圖
  • CIoU損失函式
  • Cross mini Batch Normalization
  • Cosine annealing scheduler
  • Dropblock regularization來提高該模型的效能。
此外,採用旋轉、映象投影、顏色平衡、亮度變換、模糊處理等資料增強程式,增加從不同環境中獲得的輸入影象的可變性,以增強檢測模型的魯棒性。

3實驗結果

3.1 啟用函式的影響

3.2 殘差CSP1-n和CSP2-n的影響

3.3 SOTA對比結果

3.4 實時性對比

3.5 視覺化對比

ICCV和CVPR 2021論文和程式碼下載
後臺回覆:CVPR2021,即可下載CVPR 2021論文和程式碼開源的論文合集
後臺回覆:ICCV2021,即可下載ICCV 2021論文和程式碼開源的論文合集
後臺回覆:Transformer綜述,即可下載最新的3篇Transformer綜述PDF
CVer-目標檢測交流群成立
掃碼新增CVer助手,可申請加入CVer-目標檢測微信交流群,方向已涵蓋:目標檢測、影象分割、目標跟蹤、人臉檢測&識別、OCR、姿態估計、超解析度、SLAM、醫療影像、Re-ID、GAN、NAS、深度估計、自動駕駛、強化學習、車道線檢測、模型剪枝&壓縮、去噪、去霧、去雨、風格遷移、遙感影象、行為識別、影片理解、影象融合、影象檢索、論文投稿&交流、PyTorch和TensorFlow等群。
一定要備註:研究方向+地點+學校/公司+暱稱(如目標檢測+上海+上交+卡卡),根據格式備註,可更快被透過且邀請進群
▲長按加小助手微信,進交流群
▲點選上方卡片,關注CVer公眾號
整理不易,請點贊和在看

閱讀原文


相關文章