汪旸,李丹
(四川大學錦城學院,四川成都,611731)
關鍵字:BoTNet-50網絡;ResNet-50網絡;垃圾分類;MHSA
根據有關部門的統計分析,我國每年產生的生活垃圾有大概4億噸左右,屬于世界產垃圾的大國之一。就當前形勢而言,不管是焚燒、填埋、還是生物處理都存在著很多困難。在2019年6月,習總書記就垃圾分類工作做出了重要的明確指示[10],著重強調實施垃圾分類是社會文明水平的一個主要體現[1][10]。國內各個地方生活垃圾分類標準雖然不同,但一般情況下都分為以下四類,分別是有害垃圾、廚余垃圾、可回收物和其他垃圾,而且每個類別下又包含若干子類別,種類繁多且十分復雜[2]。
隨著垃圾分類的漸漸流行,運用于垃圾分類的網絡模型也變得越來越多,但最主要的網絡模型中還是使用的卷積神經網絡,卷積神經網絡作為深度學習網絡中最重要的網絡之一,擁有廣泛的運用場景。對于卷積神經網絡的研究開始于二十世紀80年代到90年代期間,時間延遲網絡和LeNet-5就是早期出現的卷積神經網絡[3]。后來還出現了一些早期的卷積神經網絡,如AlexNet[5]和VGGNet[6]提出了簡單的激活函數和卷積結構使得多尺度特征的數據驅動學習成為可能。在二十一世紀后,隨著深度學習理論的提出和數值計算設備的改進,卷積神經網絡得到了快速發展,并被應用于計算機視覺、自然語言處理等領域[4]。ResNet[7]作為經典的卷積神經網絡,通過加入殘差結構實現了超深的網絡結構,提升了運行精度,同時解決了梯度消失和梯度爆炸的問題。在此基礎上,谷歌提出了在ResNet網絡結構上進行改進的BoTNet(Bottleneck Transformers Network)網 絡,只需要替換最后三個殘差結構的3*3卷積層為MHSA(Multi-Head Self-Attention)層,這樣一個簡單的改進就可以在實例分割和目標檢測方面顯著改善了基線,同時還能減少參數,從而使延遲最小化。運用BoTNet網絡進行圖像分類,在ImageNet數據集上能夠達到84.7%的top-1精度。
本研究就是基于卷積神經網絡加自注意力機制算法的BoTNet網絡結構來實現垃圾分類的研究,希望通過該網絡能夠在垃圾分類上得到更高的準確率。
為了減少參數,BoTNet框架選擇了在ResNet-50/101/152網絡框架基礎上加入多頭自注意力層(Multi-Head Self-Attention,MHSA)得到BoTNet-50/101/152,主要原因是由于ResNet-50/101/152網絡框架在殘差結構中加入了1*1卷積層,這種1*1的卷積層可以大大減少參數,我們通常將這種1*1卷積層稱作“瓶頸層”。本研究進行實驗使用到的網絡結構是BoTNet-50和ResNet-50。
由ResNet改進的具有MHSA層的BoTNet網絡結構塊可以看作是具有瓶頸(Bottleneck)結構的“變壓器”(Transformer)塊。“變壓器”最早是主要用于自然語言處理領域,但隨著科學和技術的發展“變壓器”逐漸也踏入了計算機視覺領域。在“變壓器”中提出了將自注意力機制(Self-Atention)納入計算機視覺的最簡單方法就是用多頭自注意力層(Multi-Head Self-Attention,MHSA)來代替空間卷積層。最近,這種方法分別在兩個看似完全不同的方面取得了進展,一方面,如SASA、SANet、Axial-SASA等結構提出用不同形式的自注意力機制來代替ResNet瓶頸塊中的空間卷積。另一方面,如ViT結構,提出堆疊“變壓器”塊,在不重疊組塊的線性預測上運行。這兩種方法似乎呈現了兩種不同類型的體系結構,但其實并非如此,相反,具有MHSA層的ResNet網絡瓶頸塊可以被視為具有瓶頸結構的“變壓器”塊。這兩種方法只在組件上有微小的差異,例如殘差連接、標準化層的選擇等。正是由于這兩種方法的等價性,才有了BoTNet(Bottleneck Transformer Network)網絡結構的由來。
BoTNet網絡是基于ResNet-50/101/152的改進網絡,加入了MHSA層,將卷積神經網絡與自注意力機制相結合,是一種比較新興的主干網絡。與BoTNet類似的同樣也是屬于卷積神經網絡與自注意力機制相結合的混合型網絡還包括DETR、VideoBERT、VILBERT、CCNet等,但又不同于BoTNet,這些網絡是將自注意力機制構建于主干框架之外,而BoTNet是將自注意力機制構建于主干框架內部。BoTNet-50網絡結構圖如圖1所示。

圖1 BoTNet-50網絡結構圖
注意力機制還有的一種不那么正式的說法,叫做神經注意力機制,它可以使得神經網絡具備專注于其輸入(或特征)子集的能力:選擇特定的輸入[11]。注意力可以應用于任何類型的輸入而不管其形狀如何。在計算能力有限的情況下,注意力機制就是主要提供去解決在信息超載問題中資源分配問題的方案,會選擇將資源分配給更重要的任務[8]。注意力機制模仿了人體的注意力關注過程,即一種將自身經驗與外部觀察相結合來增加對于某一部分區域更精細度的觀察的機制。由于注意力機制可以快速提取得到稀疏數據的重要特征,所以注意力機制被廣泛用于自然語言處理任務,尤其是常常被應用于機器翻譯應用方向。自注意力機制作為注意力機制的改進,它減少了對外部信息的依賴關系,更加關注于捕捉數據內部和特征內部的相關性。自注意力機制本質上是根據注意對象的重要程度進行不同的資源分配,在神經網絡中,注意力所要分配的資源其實就是權重[9]。
BoTNet網絡中的多頭自注意力層一共設置有四個“頭”,且全局注意力都是在一個二維特征圖上執行的。與卷積操作不同的是,自注意力機制是將一張特征圖中的每一個特征值都與這張特征圖中的所有特征值進行計算來做特征提取,而在卷積操作中,每一個特征值都是在一個固定值大小的卷積核內部進行計算做特征提取。因此,在二維特征圖上執行的自注意力機制也可以看成是一種特殊的卷積操作。
該實驗的數據集來源于網絡,包含40個類型的垃圾,分為四大類,分別是其他垃圾、廚余垃圾、可回收物、有害垃圾,總共14802張圖片,圖片是以大類加小類的形式加入分類標簽的,例如“可回收物/易拉罐”。垃圾分類部分數據集如圖2所示。

圖2 垃圾分類部分數據集
由于圖片數據量過大,只抽取一小部分數據來進行實驗,數據預處理過程首先抽取每個小類中的10張垃圾圖片,共400張,將這400張圖片數據與標簽一一對應起來存放到data.csv文件中,再通過data.csv文件劃分訓練集和驗證集,并分別保存至train.csv與test.csv中,其中訓練集占70%,驗證集占 30%。
做好了數據預處理之后,接下來進行簡單的圖片預處理,包括縮放和裁剪,圖片統一裁剪至224*224的大小,除了基礎的預處理,訓練集部分還對圖片進行隨機旋轉和隨機翻轉操作。
此次的垃圾分類主要在BoTNet-50網絡中進行,同時也會與ResNet-50進行橫向比較。
用BoTNet-50網絡訓練垃圾分類數據集時,在MHSA層的“頭”為4,訓練輪次為310,學習率為0.1,權重衰減為1e-4的情況下運行得到的驗證集準確率為86.92%,同樣網絡結構下當MHSA層的“頭”為1時,得到驗證集準確率為85.79%。用ResNet-50網絡訓練垃圾分類數據集時,任然是在訓練輪次為310,學習率為0.1,權重衰減為1e-4的情況下運行得到的驗證集準確率為86.87%。
BoTNet-50網絡訓練生成的訓練集準確率和代價下降圖與ResNet-50網絡訓練生成的訓練集準確率和代價下降圖對比如圖3所示。

圖3 BoTNet-50/ResNet-50訓練對比
BoTNet-50網絡訓練生成的訓練集準確率和代價下降圖與BoTNet-50在MHSA層只設置了1個“頭”的網絡訓練生成的訓練集準確率和代價下降圖對比如圖4所示:

圖4 BoTNet-50-Head4/BoTNet-50-Head1訓練對比
可以通過對比看出雖然產生的差異很微小,但在BoTNet-50中訓練垃圾分類數據集仍然可以得到相對較高的準確率。
垃圾分類在現代生活越來越受到重視,但許多人仍然不知道如何正確對垃圾進行分類,當我們不對垃圾進行分類時,就會導致許多可回收垃圾沒辦法得到回收利用,而有害垃圾和其他垃圾又無法及時得到處理等等問題。那么能夠正確對垃圾進行分類就顯得尤為重要。通過本實驗就是希望在對垃圾進行分類時,能夠正確對其進行投放。本實驗對垃圾進行分類的流程如圖5所示,用訓練好的BoTNet50網絡模型對垃圾進行分類預測,得出某種垃圾應該屬于哪一類:首先獲取垃圾圖片,然后對圖片進行預處理,再將獲取到的垃圾圖片送入訓練好的BoTNet網絡模型,最后獲得預測結果。

圖5 垃圾分類實現流程
通過實驗得出,通過網絡模型來訓練垃圾分類數據集時,用ResNet-50訓練得到的準確率高于 BoTNet-50-Head1(“頭”設置為 1),而用BoTNet-50-Head4(“頭”設置為 4)訓練得到的準確率高于ResNet-50,說明用MHSA層有4個“頭”的BoTNet-50網絡來訓練圖像分類數據能得到相對較高的準確率,雖然這樣的準確率提升很微小,但是這樣一個簡單的替換層的操作,即將ResNet網絡中最后三個殘差塊的3*3卷積層替換成MHSA層得到的BoTNet網絡,卻是自注意力機制在計算機視覺領域不斷發展和進步的一個重要體現。BoTNet網絡作為使用了自注意力的視覺新興主干架構,將其應用于實際生活是一個十分令人興奮的課題。而垃圾分類在未來很可能作為實際生活中必不可少的事情,將垃圾分類應用與BoTNet網絡,可以更好的促進自注意力在計算機視覺領域的應用,為這種新興的自注意力視覺框架的發展起著重要的作用。