耿麗婷,阿里甫·庫(kù)爾班,米娜瓦爾·阿不拉,丁 培,蔣潤(rùn)熙新疆大學(xué) 軟件學(xué)院,烏魯木齊 830046
隨著我國(guó)經(jīng)濟(jì)生活的進(jìn)步,人們生活質(zhì)量大幅提升,垃圾產(chǎn)量迅猛增加。伴隨著2019年7月1日上海市《上海市生活垃圾管理?xiàng)l例》的實(shí)施,垃圾分類(lèi)也逐漸進(jìn)入大家的視野[1]。然而如今我國(guó)垃圾的再利用主要依靠人工分揀的方式,造成人力資源浪費(fèi)、分揀效率低下、資源利用率低等問(wèn)題。因此,本文提出利用深度學(xué)習(xí)技術(shù)檢測(cè)可回收垃圾,提高資源利用率,促進(jìn)生態(tài)文明建設(shè)。
近年來(lái),深度學(xué)習(xí)的飛速發(fā)展,目標(biāo)檢測(cè)技術(shù)也取得了矚目成就。目前主流的檢測(cè)方法,主要分為兩類(lèi)[2]。一類(lèi)是基于候選框的兩階檢測(cè)算法,將檢測(cè)分為兩步,先產(chǎn)生候選框,再對(duì)候選框分類(lèi)。常見(jiàn)的算法有R-CNN[3]、SPPNet[4]、Fast R-CNN[5]、Faster R-CNN[6]等。另一類(lèi)是基于回歸的一階檢測(cè)算法,該方法不需要產(chǎn)生候選框,直接將目標(biāo)框定位問(wèn)題轉(zhuǎn)化為回歸問(wèn)題處理,雖然精度會(huì)有所損失,但是檢測(cè)速度一般比兩階算法更快。常見(jiàn)的算法有SSD[7]和YOLO[8-9]系列。
深度學(xué)習(xí)技術(shù)在垃圾檢測(cè)方面也取得了較大進(jìn)展。Liu等人[10]提出采用MobileNet-YOLOv2[11]的輕量化的神經(jīng)網(wǎng)絡(luò)與物聯(lián)網(wǎng)技術(shù)相結(jié)合,將卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于嵌入式端,降低工業(yè)檢測(cè)成本。劉恩乾[12]提出采用CBAM注意力機(jī)制和SSD算法相結(jié)合用于檢測(cè)和分類(lèi)生活垃圾。寧凱等人[13]提出采用改進(jìn)的YOLOv2算法嵌入到機(jī)器人中用于檢測(cè)和分類(lèi)垃圾,實(shí)現(xiàn)了智能掃地機(jī)器人。Cui等人[14]采用YOLOv3算法檢測(cè)街道的生活垃圾、裝修垃圾以及大型垃圾,在GTX1080Ti上檢測(cè)速度可以達(dá)到60 ms。雖然以上研究為垃圾檢測(cè)任務(wù)做出了一定貢獻(xiàn),但是在精度或者檢測(cè)速度等方面仍有較大的改進(jìn)空間。SSD算法作為經(jīng)典的目標(biāo)檢測(cè)算法之一,具有檢測(cè)速度快的優(yōu)勢(shì),便于實(shí)時(shí)檢測(cè)。但是在實(shí)際應(yīng)用中,需要考慮占用硬件的內(nèi)存空間、檢測(cè)速度以及檢測(cè)精度等問(wèn)題。而原始SSD以VGG16作為骨干網(wǎng)絡(luò),存在模型參數(shù)量大的問(wèn)題,難以應(yīng)用于算力低的嵌入式設(shè)備中,同時(shí)隨著深度學(xué)習(xí)的不斷發(fā)展,VGG16-SSD算法的精度已經(jīng)遠(yuǎn)達(dá)不到實(shí)際需求。
因此本文主要針對(duì)可回收垃圾檢測(cè)實(shí)時(shí)性和精度的需求,以SSD算法為基礎(chǔ)進(jìn)行改進(jìn),提出基于輕量化高精度卷積神經(jīng)網(wǎng)絡(luò)。采用輕量的RepVGG作為骨干網(wǎng)絡(luò),通過(guò)結(jié)構(gòu)重參數(shù)化方式大幅減少計(jì)算量,滿足實(shí)時(shí)性要求。對(duì)SSD算法的輔助卷積層提出改進(jìn)的同時(shí)引入SK模塊,動(dòng)態(tài)調(diào)整感受野尺寸,提高網(wǎng)絡(luò)空間信息的聚合能力,提高檢測(cè)精度。實(shí)驗(yàn)表明,該方法在可回收垃圾檢測(cè)任務(wù)中具有良好的檢測(cè)性能,可以更好地應(yīng)用于工業(yè)。
SSD模型的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,該結(jié)構(gòu)由兩部分組成。SSD模型在特征提取部分中采用VGG16[15]結(jié)構(gòu),通過(guò)深度卷積提取多個(gè)尺度的特征圖。另一部分為輔助卷積層,通過(guò)不同尺度的卷積層輸出進(jìn)行特征融合。
圖1 SSD模型圖Fig.1 SSD model diagram
SSD使用VGGNet作為骨干網(wǎng)絡(luò)時(shí),使用了VGGNet的前13個(gè)網(wǎng)絡(luò)層,其中Conv4_3作為提取特征的特征圖。為了獲取更多的特征信息,在VGGNet后增加了幾層卷積結(jié)構(gòu),即組成了SSD算法的輔助卷積層。使用Conv6、Conv7取代原始VGGNet中的全連接層。Conv6中使用擴(kuò)張率為6的空洞卷積,使用該結(jié)構(gòu)可以在增加感受野的同時(shí)保持參數(shù)量不變。由骨干網(wǎng)絡(luò)和輔助卷積層生成的6個(gè)不同尺度的特征圖,如圖1中所示的Conv4_3生成大小為38×38的特征圖,Conv7至Conv11依次輸出大小為19×19、10×10、5×5、3×3和1×1的特征圖。其中淺層的特征圖用于檢測(cè)小物體,深層的特征圖用于檢測(cè)大物體。
6個(gè)特征圖分別對(duì)應(yīng)人工設(shè)置的PriorBox,分別為4、6、6、6、4、4。將其與標(biāo)簽邊框匹配,篩選出正負(fù)樣本,并計(jì)算損失。通過(guò)分類(lèi)網(wǎng)絡(luò)和回歸網(wǎng)絡(luò)預(yù)測(cè)不同大小目標(biāo)的位置和分類(lèi)。
由于SSD算法采用多層特征圖進(jìn)行預(yù)測(cè),且為一階網(wǎng)絡(luò),因此在速度和精度上都有較好的效果。尤其是在速度方面可以很好地應(yīng)用于工業(yè)中,可滿足可回收垃圾檢測(cè)任務(wù)的速度要求。
本文試圖采用輕量級(jí)的網(wǎng)絡(luò)結(jié)構(gòu)在保證精度的情況下,以解決由VGG16網(wǎng)絡(luò)造成的參數(shù)量大、內(nèi)存占有率高等問(wèn)題。同時(shí)對(duì)SSD算法的輔助卷積層進(jìn)行改進(jìn),對(duì)比了多種卷積結(jié)構(gòu),最終選用由不對(duì)稱(chēng)卷積組成的RepVGG式結(jié)構(gòu)與ReLU相結(jié)合的方式作為SSD的輔助卷積層。為進(jìn)一步降低參數(shù)量和計(jì)算量,采用結(jié)構(gòu)重參數(shù)化提高模型的推理速度。同時(shí)對(duì)可回收垃圾數(shù)據(jù)進(jìn)行研究,發(fā)現(xiàn)其尺寸變化大的問(wèn)題,因此引入了SK模塊旨在提高網(wǎng)絡(luò)結(jié)構(gòu)的檢測(cè)準(zhǔn)確率。算法的具體網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 實(shí)驗(yàn)?zāi)P蛨DFig.2 Experimental model diagram
2021年Ding等人[16]提出了RepVGG網(wǎng)絡(luò),組建了一個(gè)由3×3卷積、1×1卷積分支和identity的殘差分支結(jié)合的結(jié)構(gòu)。同時(shí)該網(wǎng)絡(luò)中采用了結(jié)構(gòu)重參數(shù)化方式,將訓(xùn)練階段和推理階段分割開(kāi)。訓(xùn)練階段的模型可以更好地提取特征,更方便優(yōu)化,得到更好的訓(xùn)練結(jié)果,獲取更多的特征信息。在訓(xùn)練階段選用組合的殘差結(jié)構(gòu)以提高檢測(cè)精度,同時(shí)在推理階段轉(zhuǎn)化為類(lèi)VGG的架構(gòu),極大地提高了推理速度,方便模型部署和加速。
類(lèi)VGG式的結(jié)構(gòu)有諸多優(yōu)勢(shì)。首先在GPU中3×3的卷積結(jié)構(gòu)相較于1×1卷積甚至是5×5卷積而言計(jì)算密度更大,因此使用3×3的卷積結(jié)構(gòu)在GPU運(yùn)行上速度更快。其次,VGG結(jié)構(gòu)采用單路架構(gòu),具有較高的并行度更加節(jié)省內(nèi)存。
因此,RepVGG網(wǎng)絡(luò)采用結(jié)構(gòu)重參數(shù)化的方式后,具有以下幾個(gè)優(yōu)點(diǎn):
(1)采用結(jié)構(gòu)重參數(shù)化的方式,可將分支結(jié)構(gòu)轉(zhuǎn)變?yōu)楹?jiǎn)單的3×3卷積、ReLU堆疊的方式,提高模型的推理速度,方便模型高效部署。
(2)推理后的模型為單路結(jié)構(gòu),速度快且并行度高,節(jié)省內(nèi)存。同時(shí)單路結(jié)構(gòu)靈活性更好,方便模型剪枝。
為滿足檢測(cè)模型實(shí)時(shí)性和精度的需求,本文使用RepVGG作為骨干網(wǎng)絡(luò)用于特征提取。在訓(xùn)練階段中引入1×1卷積分支,形成不對(duì)稱(chēng)卷積結(jié)構(gòu),提高模型的特征分辨能力,獲取更多特征信息;采用identity的殘差結(jié)構(gòu)使模型更易收斂,避免出現(xiàn)梯度消失問(wèn)題。而推理階段的模型更方便部署,大幅減少計(jì)算量,提高檢測(cè)速度。RepVGG結(jié)構(gòu)在訓(xùn)練階段和推理階段的模型結(jié)構(gòu),如圖3所示。
圖3 RepVGG網(wǎng)絡(luò)在訓(xùn)練和推理時(shí)的結(jié)構(gòu)圖Fig.3 Structure diagram of RepVGG network in training and inference
本文采用的RepVGG網(wǎng)絡(luò)為RepVGG-A0結(jié)構(gòu),該網(wǎng)絡(luò)結(jié)構(gòu)在RepVGG網(wǎng)絡(luò)系列中是最輕量的網(wǎng)絡(luò),同時(shí)RepVGG-A0不僅具有更少的參數(shù)量,擁有更快的推理速度,在獲取特征信息方面也有較好的性能。因此本文考慮到可回收垃圾檢測(cè)任務(wù)需要部署于工業(yè)應(yīng)用,采用RepVGG-A0作為骨干網(wǎng)絡(luò)。
整個(gè)RepVGG網(wǎng)絡(luò)共分為5個(gè)Stage,本文未改變?cè)糞SD算法的輸出特征圖大小,將RepVGG作為骨干網(wǎng)絡(luò)時(shí)輸出的特征圖為38×38、19×19、10×10,分別由Stage2、Stage3和Stage4生成。其中Stage3設(shè)置層數(shù)為14,可獲取更多信息。RepVGG的網(wǎng)絡(luò)結(jié)構(gòu)設(shè)置如表1所示。
表1 RepVGG網(wǎng)絡(luò)結(jié)構(gòu)Table 1 RepVGG network structure
結(jié)構(gòu)重參數(shù)化這一思想是指在訓(xùn)練階段和推理階段采用不同的網(wǎng)絡(luò)結(jié)構(gòu)和模型參數(shù),將訓(xùn)練階段產(chǎn)生的模型通過(guò)結(jié)構(gòu)和參數(shù)變化得到推理模型。推理階段的模型所表達(dá)的模型功能在數(shù)學(xué)推理上是等價(jià)的,因此采用該方法可以大幅降低參數(shù)量,方便模型高效部署。
Ding于ICCV2019中提出的ACNet[17]和ICCV2021中提出的RepVGG網(wǎng)絡(luò)將結(jié)構(gòu)重參數(shù)化這一思想貫徹到底。為提高模型的推理速度,在結(jié)構(gòu)重參數(shù)化思想中主要采用數(shù)學(xué)推導(dǎo)的方式,并經(jīng)過(guò)實(shí)驗(yàn)驗(yàn)證了該思想的有效性,而本文主要采用了其中的Conv-BN合并、分支合并的思路,以下將對(duì)這兩個(gè)思路進(jìn)行分析,從而驗(yàn)證該方法。
2.2.1 Conv-BN合并
在神經(jīng)網(wǎng)絡(luò)中,BN(batch normalization)層的加入,可以快速收斂加速網(wǎng)絡(luò),有效解決梯度消失和梯度爆炸問(wèn)題。雖然BN結(jié)構(gòu)有諸多優(yōu)勢(shì),但是BN層在網(wǎng)絡(luò)前向推理是會(huì)占用更多的內(nèi)存和顯存,影響模型性能。為減少模型在前向推理時(shí)的耗時(shí),本文采用Conv層和BN層融合的方式。公式推導(dǎo)如下所示:
卷積層計(jì)算的公式,如公式(1)所示,其中ω為權(quán)重,b為偏置:
BN層的計(jì)算如公式(2)所示,其中γ和β是學(xué)習(xí)參數(shù),u是樣本均值,σ是方差,ε表示一個(gè)很小的數(shù)(防止分母為0):
將公式(1)代入公式(2)中,卷積和BN合并得到公式(3):
將公式(3)拆分后即可得到公式(4),如下所示:
根據(jù)卷積的齊次性,合并BN層的過(guò)程是線性運(yùn)算,該過(guò)程相當(dāng)于對(duì)卷積核進(jìn)行修改,而卷積仍不變。因此根據(jù)推理得知,采用卷積層和BN層合并可以提升模型前向推理的速度。
2.2.2 分支合并
在RepVGG結(jié)構(gòu)中有1×1卷積核identity兩種分支結(jié)構(gòu)。對(duì)1×1卷積而言可以將1×1卷積padding為3×3卷積,在該3×3卷積中,除了卷積核中心位置,其他位置都為0,即將卷積核移動(dòng)至3×3卷積核中心。而對(duì)identity而言可利用權(quán)重等于1的卷積核,將identity結(jié)構(gòu)構(gòu)造為一個(gè)1×1的卷積,同時(shí)該卷積的權(quán)重值為1。通過(guò)設(shè)置一個(gè)3×3的卷積核,對(duì)輸入特征映射相乘后,identity前后值不變。此時(shí)1×1卷積和identity均可轉(zhuǎn)變?yōu)?×3卷積,而根據(jù)卷積的加法特性,卷積核在形狀一致的情況下,可以滿足可加性。因此三個(gè)卷積分支可以融合,具體過(guò)程如圖4所示。
圖4 分支合并過(guò)程Fig.4 Branch merge process
在CVPR2019中Li等人[18]提出selective kernel networks(SKNet),該網(wǎng)絡(luò)是對(duì)squeeze-and-excitation networks(SENet)[19]提出的改進(jìn)網(wǎng)絡(luò)。SKNet可以根據(jù)不同的圖像得到具有不同重要性信息的卷積核,相較于Inception[20]結(jié)構(gòu)而言,SKNet更具靈活性。Inception結(jié)構(gòu)的參數(shù)是固定的,而SKNet可以根據(jù)卷積核的權(quán)重值,針對(duì)不同尺度的圖像自適應(yīng)生成卷積參數(shù)。圖5是本文采用的數(shù)據(jù)集樣本分布圖,可見(jiàn)該數(shù)據(jù)樣本尺度存在不均衡的情況。因此引入SK模塊以適應(yīng)本文圖像尺度變化大的問(wèn)題。
圖5 樣本分布圖Fig.5 Sample distribution
SK模塊主要由Split、Fuse和Select三部分組成,圖6展示了SK模塊的結(jié)構(gòu)。其中,Split部分是對(duì)輸入向量進(jìn)行不同卷積核大小的卷積操作的過(guò)程,該部分可根據(jù)輸入的特征圖自適應(yīng)產(chǎn)生多個(gè)分支結(jié)構(gòu)。Fuse部分對(duì)特征進(jìn)行融合,根據(jù)聚合多個(gè)分支的信息以計(jì)算每個(gè)卷積核的權(quán)重。Select部分是根據(jù)不同卷積核的權(quán)重信息計(jì)算后得到新的特征圖的過(guò)程。研究發(fā)現(xiàn),SK模塊可以自適應(yīng)地調(diào)整結(jié)構(gòu),以獲取不同感受野信息。
圖6 SK模塊圖Fig.6 SK module structure diagram
原始SSD算法采用普通卷積結(jié)構(gòu)、空洞卷積、池化操作和ReLU相結(jié)合的思路。該結(jié)構(gòu)采用了大量的池化操作,該方式會(huì)丟失大量的信息,同時(shí)普通卷積相較于本文的RepVGG式結(jié)構(gòu)而言,有諸多弊端,因此為進(jìn)一步降低模型參數(shù)量,本文延續(xù)RepVGG中結(jié)構(gòu)重參數(shù)化的思路,采用3×3卷積、1×1卷積分支和ReLU相結(jié)合的方式,結(jié)構(gòu)Block如圖7所示。
圖7 Block結(jié)構(gòu)Fig.7 Block structure
將SSD輔助卷積層結(jié)構(gòu)重置,改用Block結(jié)構(gòu),減小了卷積層數(shù),同時(shí)采用步長(zhǎng)為2的方式改變輸出特征圖的大小。
改進(jìn)后的SSD的輔助卷積結(jié)構(gòu)如表2所示,其中輸出大小為5×5、3×3和1×1的特征圖作為檢測(cè)層。最后同樣采用結(jié)構(gòu)重參數(shù)化法在推理階段將Block的殘差結(jié)構(gòu)轉(zhuǎn)化為普通卷積結(jié)構(gòu),極大地提高了模型的推理速度。
表2 RepVGG網(wǎng)絡(luò)結(jié)構(gòu)Table 2 RepVGG network structure
本文所采用的數(shù)據(jù)集主要來(lái)源于Kaggle網(wǎng)站中的Waste Classification data數(shù)據(jù)集(https://www.kaggle.com/techsash/wasteclassification-data),由于該數(shù)據(jù)集分為有機(jī)廢物和可回收廢物兩類(lèi),并未對(duì)可回收垃圾的類(lèi)別分類(lèi),因此本文選取了部分Waste Classification data數(shù)據(jù),并通過(guò)網(wǎng)絡(luò)爬蟲(chóng)、相機(jī)拍攝的方式,獲得1 650張數(shù)據(jù),部分樣本如圖8所示。數(shù)據(jù)共分為三類(lèi):紙板(cardboard)、玻璃(glass)、塑料(plastic)。采用LabeLImg軟件對(duì)數(shù)據(jù)集進(jìn)行人工標(biāo)注,數(shù)據(jù)集為PASCAL_VOC格式。將原始數(shù)據(jù)集劃分70%作為訓(xùn)練數(shù)據(jù),20%作為測(cè)試數(shù)據(jù),10%作為驗(yàn)證集。后采用數(shù)據(jù)擴(kuò)充的方式,經(jīng)過(guò)隨機(jī)旋轉(zhuǎn)30°、270°、330°,將原始數(shù)據(jù)集擴(kuò)充3倍后,得到新數(shù)據(jù)集共4 950張數(shù)據(jù)。
圖8 部分?jǐn)?shù)據(jù)集內(nèi)容Fig.8 Partial dataset content
實(shí)驗(yàn)在CPU E5 2450 2.10 GHz,16 GB內(nèi)存,Ubuntu 16.04系統(tǒng)下搭建的Pytorch環(huán)境下進(jìn)行,顯卡為GeForce GTX1080Ti。
為驗(yàn)證本文改進(jìn)的SSD算法在可回收垃圾檢測(cè)任務(wù)上的有效性,本文設(shè)計(jì)了4組實(shí)驗(yàn)。第一組實(shí)驗(yàn)是驗(yàn)證RepVGG作為骨干網(wǎng)絡(luò)時(shí)的性能,對(duì)比了原始SSD算法與RepVGG-SSD算法;第二組實(shí)驗(yàn)是驗(yàn)證本文所提出的SSD輔助卷積層結(jié)構(gòu),對(duì)比了普通卷積結(jié)構(gòu)、Mobile-Netv2中的深度可分離結(jié)構(gòu)以及本文所采用的RepVGG式的Block結(jié)構(gòu);第三組實(shí)驗(yàn)是為了驗(yàn)證結(jié)構(gòu)重參數(shù)化的效果,對(duì)比了使用結(jié)構(gòu)重參數(shù)化時(shí)和未使用時(shí)的效果;第四組實(shí)驗(yàn)是加入SK模塊后,與目前主流的網(wǎng)絡(luò)在可回收垃圾檢測(cè)任務(wù)上的性能進(jìn)行比較,以驗(yàn)證本文所提出的網(wǎng)絡(luò)的優(yōu)勢(shì)。
訓(xùn)練時(shí)輸入圖像設(shè)置為300×300,采用SGD作為優(yōu)化函數(shù)對(duì)模型進(jìn)行訓(xùn)練。初始學(xué)習(xí)率為1E-4,學(xué)習(xí)率在60 000時(shí)降低為1E-5,至90 000停止訓(xùn)練,本實(shí)驗(yàn)采用與原始SSD相同的圖像增強(qiáng)方法。
本文采用的評(píng)判標(biāo)準(zhǔn)有:mAP(mean average precision)、每秒傳輸幀數(shù)(frames per second,F(xiàn)PS)、浮點(diǎn)運(yùn)算數(shù)量(giga floating-point operations per second,GFLOPs)、乘加運(yùn)算次數(shù)(MAdds)、參數(shù)量(parameters,Params)、內(nèi)存占有量(Memory)、讀入和寫(xiě)入時(shí)的內(nèi)存量(MemR+W)。其中Memory反應(yīng)運(yùn)行時(shí)占用的內(nèi)存量,GFLOPs用來(lái)衡量模型或算法的復(fù)雜度,Params表示模型的大小。通常GFLOPs和Params越小,代表模型所需要的算力越小,對(duì)硬件的性能要求越低,越容易搭建于低端設(shè)備中。
實(shí)驗(yàn)一比較了以VGG16和RepVGG作為SSD的骨干網(wǎng)絡(luò)時(shí)的效果,如表3所示。驗(yàn)證發(fā)現(xiàn)采用RepVGG作為骨干網(wǎng)絡(luò)時(shí)精度提升1.7個(gè)百分點(diǎn),同時(shí)GFLOPs大幅降低,提高了檢測(cè)速度。
表3 RepVGG性能比較Table 3 Performance comparison of RepVGG
為進(jìn)一步減小模型的計(jì)算量,本文更換了SSD的輔助卷積層。實(shí)驗(yàn)二對(duì)比了更換為深度可分離結(jié)構(gòu)的卷積層和RepVGG結(jié)構(gòu)時(shí)的卷積層,效果如表4所示。采用RepVGG結(jié)構(gòu)時(shí)相較于深度可分離結(jié)構(gòu)提升了1.63個(gè)百分點(diǎn),相較于原始SSD結(jié)構(gòu)精度提升了0.93個(gè)百分點(diǎn)。同時(shí),采用該結(jié)構(gòu)時(shí)的浮點(diǎn)數(shù)最小為5.82,參數(shù)量雖然相較于深度可分離結(jié)構(gòu)有小幅提升,但是在精度方面展現(xiàn)的效果更好。
表4 SSD輔助卷積層比較Table 4 Comparison of SSD auxiliary convolution layer
由于可回收垃圾檢測(cè)通常應(yīng)用于工業(yè)中,為滿足輕量化的要求,方便日后的模型部署于移動(dòng)端和嵌入式端,本文采用BN層和卷積層融合,分支結(jié)構(gòu)合并的思路,減小模型前向推理的時(shí)間,提高檢測(cè)速度。主要通過(guò)結(jié)構(gòu)重參數(shù)化的方式,為驗(yàn)證該方式的有效性,本文設(shè)計(jì)了實(shí)驗(yàn)三。表5對(duì)使用結(jié)構(gòu)重參數(shù)化和未使用時(shí)進(jìn)行了比較。由實(shí)驗(yàn)可見(jiàn),內(nèi)存占有量降低了43.65×106,讀入寫(xiě)入時(shí)的內(nèi)存也下降了近一半。因此該方式可大幅減小參數(shù)量和計(jì)算量,加快模型推理。
表5 結(jié)構(gòu)重參數(shù)化性能比較Table 5 Comparison of performance of structural re-parameterization
本文加入了SK模塊,用于自適應(yīng)調(diào)整感受野尺寸,所提出的網(wǎng)絡(luò)為RepVGG-SK-SSD。為進(jìn)一步驗(yàn)證所提算法的有效性,本文比對(duì)了VGG16-SSD、MobileNet-YOLOv3、CBAM+SSD、YOLOv3、MobilNet-SSDLite、RepVGG-SSD、RFBNet[21]等網(wǎng)絡(luò)結(jié)構(gòu)的性能,如表6所示。由實(shí)驗(yàn)可得,本文所提算法在可回收垃圾檢測(cè)任務(wù)上可達(dá)到95.23%的精度。相較于原始SSD算法,共提升了4.33個(gè)百分點(diǎn)。同時(shí),該算法的參數(shù)量和計(jì)算量較小,浮點(diǎn)數(shù)只有5.16,參數(shù)量也只有10.33×106。相較于原始SSD的浮點(diǎn)數(shù)為60.29以及22.94×106的參數(shù)量而言,本文所提算法做出了更大的改進(jìn),且擁有更好的性能。雖然MobileNet-YOLOv3的精度相對(duì)本文所提算法高了0.47個(gè)百分點(diǎn),但是其浮點(diǎn)數(shù)以及參數(shù)量遠(yuǎn)大于本文算法。同時(shí)驗(yàn)證該算法在單個(gè)GTX1080TI顯卡下可達(dá)64 FPS,可滿足在移動(dòng)端和嵌入式端部署的需求。
表6 不同算法測(cè)試結(jié)果對(duì)比Table 6 Comparison of detection results of different algorithms
本文將RepVGG網(wǎng)絡(luò)與SK模塊融合,選用新的輔助卷積層,實(shí)驗(yàn)也驗(yàn)證了該算法的有效性,圖9展示了本文所提算法的檢測(cè)效果。
圖9 檢測(cè)效果圖Fig.9 Inspection effect picture
本文提出了一個(gè)實(shí)時(shí)高效的基于SSD算法的可回收垃圾檢測(cè)器。針對(duì)VGG16模型過(guò)大、運(yùn)行內(nèi)存量過(guò)高,無(wú)法用于工業(yè)部署問(wèn)題。提出采用輕量化的網(wǎng)絡(luò)RepVGG作為骨干網(wǎng)絡(luò),使用結(jié)構(gòu)重參數(shù)化的方式減少參數(shù)量和計(jì)算量,提高模型的推理速度,實(shí)現(xiàn)實(shí)時(shí)檢測(cè)。同時(shí)為進(jìn)一步減少參數(shù)量,提高模型的檢測(cè)速度,修改了SSD的輔助卷積層。針對(duì)圖像尺度變化大的問(wèn)題,提出采用SK模塊,自適應(yīng)調(diào)節(jié)感受野尺寸,提高檢測(cè)精度。實(shí)驗(yàn)表明,本模型具有良好的檢測(cè)精度和實(shí)時(shí)性,可以更好地應(yīng)用于可回收垃圾檢測(cè)任務(wù)。