楊獻瑜
(浙江理工大學計算機科學與技術學院,浙江 杭州 310018)
隨著深度學習的快速發展,基于深度學習的目標檢測算法精度得到不斷提高,但算法的參數量和計算量也日益增大。智慧電梯安全感知系統是目前常見的保障電梯運行安全的措施,主要用于電梯運行環境監測、禁入目標檢測等,其對維護社會公共秩序具有重要作用[1-2]。電梯作為一種邊緣設備,內存以及計算資源往往有限。面對日益增大的檢測算法,難以完成主流檢測算法在智慧電梯安全感知系統上的部署。2021年徐奕森等人[3]通過減少YOLOv3的殘差層,實現施工電梯人數檢測。2023 年郭奕裕等人[4]在YOLO-s中引入深度可分離卷積以及改進注意力機制,實現電梯內電動自行車和煤氣罐的檢測。
雖然以上算法在不同程度上實現了輕量化,但參數量和計算量仍然較大,難以達到在電梯邊緣設備上部署的要求。本文針對上述算法的缺陷,提出基于改進YOLOv4 的電梯內電動車檢測算法,實現模型的輕量化以及快速推理。首先使用GhostNet替換YOLOv4中的主干特征提取網絡CSPDarkNet53;其次在GhostNet和PANet 之間引入CBAM 注意力機制,使網絡關注通道和空間兩個維度的特征信息;最后使用Focal Loss對正負樣本損失賦予不同的權重,以提高模型的檢測效果。
YOLOv4[5]由Alexey Bochkovskiy等人提出,是YOLO 系列的第四代。該網絡采用CSPDarknet53 作為特征提取網絡,使用SPP 模塊以及PANet 加強網絡特征,利用檢測頭對加強后的特征層進行預測。圖1展示了YOLOv4的網絡結構。
GhostNet[6]由華為諾亞方舟實驗室提出,是一種輕量化神經網絡。在相似計算量下,相較于MobileNetV3,GhostNet分類效果更好、精度更高。
Ghost 模塊是GhostNet 中的核心組成成分,其原理是通過廉價操作生成冗余的特征圖,從而減少網絡的參數量。Ghost 模塊主要分為三部分,第一部分是1×1 的卷積,用于通道數的壓縮;第二部分是逐層卷積,用于生成冗余的特征圖;最后部分是對壓縮后的特征圖以及冗余特征圖的拼接操作。圖2(a)展示了Ghost模塊的結構。

圖2 Ghost模塊、Ghost Bottleneck模塊
Ghost Bottleneck 模塊是GhostNeck 的基本組成成分,其分為兩個部分。第一部分為主干部分,包含兩個Ghost 模塊。第二部分為殘差邊部分,負責傳遞特征信息、改善網絡性能。Ghost Bottleneck 的結構與倒殘差結構類似,第一個Ghost 模塊用于擴張通道數,第二個Ghsot 模塊用于降低通道數并與殘差邊相連。圖2(b)展示了Ghost Bottleneck的結構。
注意力機制源于對人類視覺的研究。面對一些事務時,人們會著重關注對這些事務有幫助的信息,選擇性的忽略不重要的信息。在深度學習中,注意力機制就是讓網絡自適應地關注重要的信息。目前常見的注意力機制可以分為通道注意力機制、空間注意力機制、混合注意力機制。
CBAM 由Sanghyun Woo 等人[7]在ECCV2018 上提出,是混合注意力機制的典型代表。CBAM 將通道注意力機制和空間注意力機制相結合,使網絡關注到更多通道和空間上的重要信息,圖3 展示了CBAM 注意力模塊的結構。

圖3 CBAM注意力模塊
在通道注意力模塊中,輸入特征圖(H×W×C)首先經過基于寬度和高度的最大池化和平均池化,得到兩個1×1×C特征向量。隨后特征向量被輸入共享的多層感知機中,進行通道權重上的分配。最后將感知機處理后的結果進行相加,并進行Sigmoid 激活,得到輸入特征層每個通道的權值。
在空間注意力模塊中,輸入特征圖(H×W×C)首先經過基于通道的最大池化以及平均池化,得到兩個H×W×1 的特征圖。隨后對特征圖進行堆疊以及卷積操作,輸出一個H×W×1 的特征圖。最后進行Sigmoid激活,得到輸入特征層每一個特征點的權值。
在單階段目標檢測時,會生成大量的先驗框。且由于一張圖片中通常只包含少量要檢測的目標,因此大部分的先驗框會被定義成負樣本。在訓練時,盡管每個負樣本造成的損失值較少,但是大量負樣本損失堆疊,使模型偏向于訓練負樣本,從而忽視更加重要的正樣本信息。
FocalLoss 由何凱明等人[8]提出,通過控制正負樣本權重以及難易分類樣本權重來解決上述正負樣本不平衡問題,被首次用于RetianNet的分類損失中。在YOLOv4 中,損失函數主要分為3 類:置信度損失、類別損失以及定位損失。其中定位損失使用的是CIOU損失函數,置信度損失以及類別損失使用的是二值交叉熵損失函數。由于在YOLOv4 中類別損失和定位損失只包含正樣本損失,因此在本文中,將Focal Loss應用到置信度損失計算中,實現正負樣本平衡,提高檢測精度。Focal Loss損失函數表達如下:
其中,p 為當前先驗框包含前景的概率,αt為正負樣本權重系數,pt為難易分類樣本權重系數,γ為調制系數。在本文中,取α=0.25,γ=2。
本文對YOLOv4檢測模型進行改進,使用GhostNet作為骨干特征提取網絡,減少模型的參數量和計算量;使用CBAM 注意力模塊,讓網絡同時關注到通道以及空間上的重要信息,提高模型性能;使用Focal Loss 損失作為模型的置信度損失,以提高檢測精度。改進后的YOLOv4檢測模型命名為YOLO-GCF,網絡總體結構如圖4所示。

圖4 YOLO-GCF網絡結構
本實驗在Ubuntu20.04.2 操作系統下,CPU 為Intel(R) Xeon(R) Gold 6142 CPU @ 2.60GHz,GPU 為NVIDIA GeForce RTX 3080 12GB,使用PyTorch1.8.1深度學習框架。
本文實驗設置網絡輸入大小為416×416×3,采用SGD 優化算法進行參數更新,引入遷移學習的方式獲得預訓練權重。模型初始學習率設置為0.001,批處理大小設置為16,迭代次數為150輪。
本實驗數據集為自制數據集,主要通過爬蟲、網上搜索、實地拍攝得到。數據集一共包含4000張電梯內電動車圖像,并按8:1:1的比例劃分為訓練集、驗證集以及測試集。在訓練過程中,使用Mosaic 數據增強方式。Mosaic數據增強后的圖片如圖5所示。

圖5 Mosaic數據增強后的圖片
為了驗證改進算法YOLO-GCF 的可行性,以及每個改進方法的有效性。本文對改進的模塊進行消融實驗,實驗結果如表1所示。首先,使用輕量化網絡GhostNet替代YOLOv4中的CSPDarkNet53,將改進后的模型命名為YOLO-G。實驗結果顯示,YOLO-G 模型的計算量和參數量得到大幅降低,但同時也造成了約5%的mAP 精度損失。其次,在YOLO-G 中加入CBAM注意力模塊,將改進后的模型命名為YOLO-GC。實驗結果顯示,相較于YOLO-G,YOLO-GC 的mAP值提升了2.35%,同時只增加了微量的計算量和參數量。最后,在YOLO-GC 中引入FocalLoss 損失函數,將改進后的模型命名為YOLO-GCF。實驗結果顯示,YOLO-GC 檢測精度得到進一步提升,mAP 值從89.47%上升到90.14%。在FPS 方面,YOLO-GCF 檢測速度比YOLOv4 提升8.8 幀/秒,實現了模型的快速推理。綜上所述,YOLO-GCF模型同時具備輕量化和快速推理的特點,符合智慧電梯安全感知系統對于檢測算法的要求,適合部署于邊緣設備上。

表1 實驗結果對比
為了進一步研究CBAM注意力模塊在整個模型中起到的作用,本文比較了未加注意力模塊的YOLO-G和加入CBAM 注意力模塊的YOLO-GC,對電梯內電動車圖像檢測的熱力圖,如圖6所示。

圖6 YOLO-G和YOLO-GC熱力圖對比
從圖6 可以看出,YOLO-G 存在感興趣區域范圍較小的情況,無法很好地聚焦于電動車頭部區域的學習。而YOLO-GC 擴大對電動車頭部區域的學習,實現對電動車頭部特征的學習,驗證了CBAM 注意力模塊的有效性。圖7 展示了改進后的YOLO_GCF 對電梯內的電動車圖像進行檢測的結果。

圖7 YOLO-GCF檢測結果
本文提出一種基于改進YOLOv4 的電梯內電動車檢測算法。首先將YOLOv4 中的CSPDarkNet53替換為GhostNet,大幅度減少網絡的計算量和參數量,使模型更加輕量化;其次在骨干網絡后引入CBAM注意力模塊,增強網絡對重要特征信息的提取,提高模型的檢測性能;最后改進YOLOv4 的損失函數,將FocalLoss機制應用到置信度損失中,平衡正負樣本以及難易分類樣本。實驗結果表明,改進的YOLOGCF 的mAP 值達到90.14%,計算量和參數量分別為YOLOv4的10.98%和17.21%,檢測速度提升8.8幀/秒。證明該算法可行有效,能夠滿足智慧電梯安全感知系統對檢測算法輕量化以及快速推理的要求。