楊獻(xiàn)瑜
(浙江理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,浙江 杭州 310018)
隨著深度學(xué)習(xí)的快速發(fā)展,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)算法精度得到不斷提高,但算法的參數(shù)量和計(jì)算量也日益增大。智慧電梯安全感知系統(tǒng)是目前常見的保障電梯運(yùn)行安全的措施,主要用于電梯運(yùn)行環(huán)境監(jiān)測(cè)、禁入目標(biāo)檢測(cè)等,其對(duì)維護(hù)社會(huì)公共秩序具有重要作用[1-2]。電梯作為一種邊緣設(shè)備,內(nèi)存以及計(jì)算資源往往有限。面對(duì)日益增大的檢測(cè)算法,難以完成主流檢測(cè)算法在智慧電梯安全感知系統(tǒng)上的部署。2021年徐奕森等人[3]通過減少YOLOv3的殘差層,實(shí)現(xiàn)施工電梯人數(shù)檢測(cè)。2023 年郭奕裕等人[4]在YOLO-s中引入深度可分離卷積以及改進(jìn)注意力機(jī)制,實(shí)現(xiàn)電梯內(nèi)電動(dòng)自行車和煤氣罐的檢測(cè)。
雖然以上算法在不同程度上實(shí)現(xiàn)了輕量化,但參數(shù)量和計(jì)算量仍然較大,難以達(dá)到在電梯邊緣設(shè)備上部署的要求。本文針對(duì)上述算法的缺陷,提出基于改進(jìn)YOLOv4 的電梯內(nèi)電動(dòng)車檢測(cè)算法,實(shí)現(xiàn)模型的輕量化以及快速推理。首先使用GhostNet替換YOLOv4中的主干特征提取網(wǎng)絡(luò)CSPDarkNet53;其次在GhostNet和PANet 之間引入CBAM 注意力機(jī)制,使網(wǎng)絡(luò)關(guān)注通道和空間兩個(gè)維度的特征信息;最后使用Focal Loss對(duì)正負(fù)樣本損失賦予不同的權(quán)重,以提高模型的檢測(cè)效果。
YOLOv4[5]由Alexey Bochkovskiy等人提出,是YOLO 系列的第四代。該網(wǎng)絡(luò)采用CSPDarknet53 作為特征提取網(wǎng)絡(luò),使用SPP 模塊以及PANet 加強(qiáng)網(wǎng)絡(luò)特征,利用檢測(cè)頭對(duì)加強(qiáng)后的特征層進(jìn)行預(yù)測(cè)。圖1展示了YOLOv4的網(wǎng)絡(luò)結(jié)構(gòu)。
GhostNet[6]由華為諾亞方舟實(shí)驗(yàn)室提出,是一種輕量化神經(jīng)網(wǎng)絡(luò)。在相似計(jì)算量下,相較于MobileNetV3,GhostNet分類效果更好、精度更高。
Ghost 模塊是GhostNet 中的核心組成成分,其原理是通過廉價(jià)操作生成冗余的特征圖,從而減少網(wǎng)絡(luò)的參數(shù)量。Ghost 模塊主要分為三部分,第一部分是1×1 的卷積,用于通道數(shù)的壓縮;第二部分是逐層卷積,用于生成冗余的特征圖;最后部分是對(duì)壓縮后的特征圖以及冗余特征圖的拼接操作。圖2(a)展示了Ghost模塊的結(jié)構(gòu)。
圖2 Ghost模塊、Ghost Bottleneck模塊
Ghost Bottleneck 模塊是GhostNeck 的基本組成成分,其分為兩個(gè)部分。第一部分為主干部分,包含兩個(gè)Ghost 模塊。第二部分為殘差邊部分,負(fù)責(zé)傳遞特征信息、改善網(wǎng)絡(luò)性能。Ghost Bottleneck 的結(jié)構(gòu)與倒殘差結(jié)構(gòu)類似,第一個(gè)Ghost 模塊用于擴(kuò)張通道數(shù),第二個(gè)Ghsot 模塊用于降低通道數(shù)并與殘差邊相連。圖2(b)展示了Ghost Bottleneck的結(jié)構(gòu)。
注意力機(jī)制源于對(duì)人類視覺的研究。面對(duì)一些事務(wù)時(shí),人們會(huì)著重關(guān)注對(duì)這些事務(wù)有幫助的信息,選擇性的忽略不重要的信息。在深度學(xué)習(xí)中,注意力機(jī)制就是讓網(wǎng)絡(luò)自適應(yīng)地關(guān)注重要的信息。目前常見的注意力機(jī)制可以分為通道注意力機(jī)制、空間注意力機(jī)制、混合注意力機(jī)制。
CBAM 由Sanghyun Woo 等人[7]在ECCV2018 上提出,是混合注意力機(jī)制的典型代表。CBAM 將通道注意力機(jī)制和空間注意力機(jī)制相結(jié)合,使網(wǎng)絡(luò)關(guān)注到更多通道和空間上的重要信息,圖3 展示了CBAM 注意力模塊的結(jié)構(gòu)。
圖3 CBAM注意力模塊
在通道注意力模塊中,輸入特征圖(H×W×C)首先經(jīng)過基于寬度和高度的最大池化和平均池化,得到兩個(gè)1×1×C特征向量。隨后特征向量被輸入共享的多層感知機(jī)中,進(jìn)行通道權(quán)重上的分配。最后將感知機(jī)處理后的結(jié)果進(jìn)行相加,并進(jìn)行Sigmoid 激活,得到輸入特征層每個(gè)通道的權(quán)值。
在空間注意力模塊中,輸入特征圖(H×W×C)首先經(jīng)過基于通道的最大池化以及平均池化,得到兩個(gè)H×W×1 的特征圖。隨后對(duì)特征圖進(jìn)行堆疊以及卷積操作,輸出一個(gè)H×W×1 的特征圖。最后進(jìn)行Sigmoid激活,得到輸入特征層每一個(gè)特征點(diǎn)的權(quán)值。
在單階段目標(biāo)檢測(cè)時(shí),會(huì)生成大量的先驗(yàn)框。且由于一張圖片中通常只包含少量要檢測(cè)的目標(biāo),因此大部分的先驗(yàn)框會(huì)被定義成負(fù)樣本。在訓(xùn)練時(shí),盡管每個(gè)負(fù)樣本造成的損失值較少,但是大量負(fù)樣本損失堆疊,使模型偏向于訓(xùn)練負(fù)樣本,從而忽視更加重要的正樣本信息。
FocalLoss 由何凱明等人[8]提出,通過控制正負(fù)樣本權(quán)重以及難易分類樣本權(quán)重來解決上述正負(fù)樣本不平衡問題,被首次用于RetianNet的分類損失中。在YOLOv4 中,損失函數(shù)主要分為3 類:置信度損失、類別損失以及定位損失。其中定位損失使用的是CIOU損失函數(shù),置信度損失以及類別損失使用的是二值交叉熵?fù)p失函數(shù)。由于在YOLOv4 中類別損失和定位損失只包含正樣本損失,因此在本文中,將Focal Loss應(yīng)用到置信度損失計(jì)算中,實(shí)現(xiàn)正負(fù)樣本平衡,提高檢測(cè)精度。Focal Loss損失函數(shù)表達(dá)如下:
其中,p 為當(dāng)前先驗(yàn)框包含前景的概率,αt為正負(fù)樣本權(quán)重系數(shù),pt為難易分類樣本權(quán)重系數(shù),γ為調(diào)制系數(shù)。在本文中,取α=0.25,γ=2。
本文對(duì)YOLOv4檢測(cè)模型進(jìn)行改進(jìn),使用GhostNet作為骨干特征提取網(wǎng)絡(luò),減少模型的參數(shù)量和計(jì)算量;使用CBAM 注意力模塊,讓網(wǎng)絡(luò)同時(shí)關(guān)注到通道以及空間上的重要信息,提高模型性能;使用Focal Loss 損失作為模型的置信度損失,以提高檢測(cè)精度。改進(jìn)后的YOLOv4檢測(cè)模型命名為YOLO-GCF,網(wǎng)絡(luò)總體結(jié)構(gòu)如圖4所示。
圖4 YOLO-GCF網(wǎng)絡(luò)結(jié)構(gòu)
本實(shí)驗(yàn)在Ubuntu20.04.2 操作系統(tǒng)下,CPU 為Intel(R) Xeon(R) Gold 6142 CPU @ 2.60GHz,GPU 為NVIDIA GeForce RTX 3080 12GB,使用PyTorch1.8.1深度學(xué)習(xí)框架。
本文實(shí)驗(yàn)設(shè)置網(wǎng)絡(luò)輸入大小為416×416×3,采用SGD 優(yōu)化算法進(jìn)行參數(shù)更新,引入遷移學(xué)習(xí)的方式獲得預(yù)訓(xùn)練權(quán)重。模型初始學(xué)習(xí)率設(shè)置為0.001,批處理大小設(shè)置為16,迭代次數(shù)為150輪。
本實(shí)驗(yàn)數(shù)據(jù)集為自制數(shù)據(jù)集,主要通過爬蟲、網(wǎng)上搜索、實(shí)地拍攝得到。數(shù)據(jù)集一共包含4000張電梯內(nèi)電動(dòng)車圖像,并按8:1:1的比例劃分為訓(xùn)練集、驗(yàn)證集以及測(cè)試集。在訓(xùn)練過程中,使用Mosaic 數(shù)據(jù)增強(qiáng)方式。Mosaic數(shù)據(jù)增強(qiáng)后的圖片如圖5所示。
圖5 Mosaic數(shù)據(jù)增強(qiáng)后的圖片
為了驗(yàn)證改進(jìn)算法YOLO-GCF 的可行性,以及每個(gè)改進(jìn)方法的有效性。本文對(duì)改進(jìn)的模塊進(jìn)行消融實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表1所示。首先,使用輕量化網(wǎng)絡(luò)GhostNet替代YOLOv4中的CSPDarkNet53,將改進(jìn)后的模型命名為YOLO-G。實(shí)驗(yàn)結(jié)果顯示,YOLO-G 模型的計(jì)算量和參數(shù)量得到大幅降低,但同時(shí)也造成了約5%的mAP 精度損失。其次,在YOLO-G 中加入CBAM注意力模塊,將改進(jìn)后的模型命名為YOLO-GC。實(shí)驗(yàn)結(jié)果顯示,相較于YOLO-G,YOLO-GC 的mAP值提升了2.35%,同時(shí)只增加了微量的計(jì)算量和參數(shù)量。最后,在YOLO-GC 中引入FocalLoss 損失函數(shù),將改進(jìn)后的模型命名為YOLO-GCF。實(shí)驗(yàn)結(jié)果顯示,YOLO-GC 檢測(cè)精度得到進(jìn)一步提升,mAP 值從89.47%上升到90.14%。在FPS 方面,YOLO-GCF 檢測(cè)速度比YOLOv4 提升8.8 幀/秒,實(shí)現(xiàn)了模型的快速推理。綜上所述,YOLO-GCF模型同時(shí)具備輕量化和快速推理的特點(diǎn),符合智慧電梯安全感知系統(tǒng)對(duì)于檢測(cè)算法的要求,適合部署于邊緣設(shè)備上。
表1 實(shí)驗(yàn)結(jié)果對(duì)比
為了進(jìn)一步研究CBAM注意力模塊在整個(gè)模型中起到的作用,本文比較了未加注意力模塊的YOLO-G和加入CBAM 注意力模塊的YOLO-GC,對(duì)電梯內(nèi)電動(dòng)車圖像檢測(cè)的熱力圖,如圖6所示。
圖6 YOLO-G和YOLO-GC熱力圖對(duì)比
從圖6 可以看出,YOLO-G 存在感興趣區(qū)域范圍較小的情況,無法很好地聚焦于電動(dòng)車頭部區(qū)域的學(xué)習(xí)。而YOLO-GC 擴(kuò)大對(duì)電動(dòng)車頭部區(qū)域的學(xué)習(xí),實(shí)現(xiàn)對(duì)電動(dòng)車頭部特征的學(xué)習(xí),驗(yàn)證了CBAM 注意力模塊的有效性。圖7 展示了改進(jìn)后的YOLO_GCF 對(duì)電梯內(nèi)的電動(dòng)車圖像進(jìn)行檢測(cè)的結(jié)果。
圖7 YOLO-GCF檢測(cè)結(jié)果
本文提出一種基于改進(jìn)YOLOv4 的電梯內(nèi)電動(dòng)車檢測(cè)算法。首先將YOLOv4 中的CSPDarkNet53替換為GhostNet,大幅度減少網(wǎng)絡(luò)的計(jì)算量和參數(shù)量,使模型更加輕量化;其次在骨干網(wǎng)絡(luò)后引入CBAM注意力模塊,增強(qiáng)網(wǎng)絡(luò)對(duì)重要特征信息的提取,提高模型的檢測(cè)性能;最后改進(jìn)YOLOv4 的損失函數(shù),將FocalLoss機(jī)制應(yīng)用到置信度損失中,平衡正負(fù)樣本以及難易分類樣本。實(shí)驗(yàn)結(jié)果表明,改進(jìn)的YOLOGCF 的mAP 值達(dá)到90.14%,計(jì)算量和參數(shù)量分別為YOLOv4的10.98%和17.21%,檢測(cè)速度提升8.8幀/秒。證明該算法可行有效,能夠滿足智慧電梯安全感知系統(tǒng)對(duì)檢測(cè)算法輕量化以及快速推理的要求。