汪 剛 魏 赟 張宇辰
(上海理工大學光電信息與計算機工程學院 上海 200093)
移動物流機器人的出現(xiàn)極大提高了物流倉庫的工作效率,快速精準的障礙物檢測是安全避障和高效工作的前提?,F(xiàn)階段移動物流機器人上應用的障礙物檢測方法分為兩種。第一種是利用激光雷達[1]、紅外[2]、雙目相機[3]等傳感器,以及多傳感器融合[4]進行檢測。這些方法優(yōu)勢在于檢測速度快,但是只能模糊檢測到障礙物位置,不能精準檢測出障礙物,且不能識別出障礙物類別,也容易受到外界環(huán)境因素的影響。
隨著深度學習[5]的發(fā)展,基于圖像處理的障礙物檢測算法已經(jīng)能夠逐漸替代傳統(tǒng)的檢測方法,檢測的精度、速度和功能性也進一步提高。基于深度學習的檢測算法分為兩類,第一類是雙階段目標檢測算法,先用候選區(qū)域生成網(wǎng)絡來生成可能包含物體的檢測框,再用檢測網(wǎng)絡對候選框中的物體進行分類和檢測,例如R-CNN[6]、Fast R-CNN[7]、Faster R-CNN[8-9]等。第二類是單階段目標檢測算法,這類算法將目標檢測視為回歸問題,將整張圖片作為網(wǎng)絡的輸入,通過卷積神經(jīng)網(wǎng)絡直接預測物體的位置和類別,屬于端到端的檢測算法,如SSD[10~12]、YOLO[13]、YOLOv2[14]、YOLOv3[15~17]等,解決了雙階段目標檢測算法檢測速度慢的問題,但檢測精度略有不足。然而上述兩類目標檢測算法比較復雜,依賴高性能GPU 進行計算,不適用于計算性能有限的嵌入式設備。模型剪枝是解決該問題有效的方法,Redmon J[15]設計了輕量級的Tiny-YOLOv3[18],刪減了殘差層且只使用兩個尺度輸出,有效壓縮了模型,提高了檢測速度。Iandola 等[19]基于fire module,利用1×1 卷積核對特征圖進行壓縮,提出了SqueezeNet 模型。Howard 等提出MobileNetV1[20]和MobileNetV2[21]采用深度可分離卷積的方法,減少了網(wǎng)絡權值參數(shù)。
對比上述幾種模型剪枝的方法,通道剪枝可以不用特別的庫來實現(xiàn)加速訓練,并且更節(jié)省內存,在工業(yè)領域被廣泛的應用。YOLOv3 對比其他算法,能夠實現(xiàn)多尺度特征檢測,并改進了v1和v2的不足,平衡了檢測精度和速度,更適合小目標物體的檢測。此外,近年來注意力機制的提出[23~24],有效地提高了目標檢測模型的性能。因此本文選擇YOLOv3 模型進行通道剪枝稀疏化,并添加注意力模塊,提出SlimYOLOv3-A 模型。針對移動物流機器人在障礙物檢測中,保證檢測精度和速度的同時,精簡模型體積,減少參數(shù)量和計算量。本文的主要貢獻如下:
1)在YOLOv3 中引入輕量、高效的PSA 通道注意力模塊,更有效地提取多尺度特征信息,并形成遠程通道依賴關系,提高小目標障礙物檢測精度。
2)利用通道稀疏正則化訓練模型,根據(jù)特征通道比例因子,修剪模型,得到精簡的SlimYOLOv3模型,通過微調來補償暫時下降的精度。
在檢測任務中,存在光線暗、背景復雜、障礙物目標小這些不利于檢測的問題。為了通過對網(wǎng)絡進行最小的修改來加強檢測效果,借鑒注意力機制,引入PSA(Pyramid Squeeze Attention)模塊結構,如圖1所示。
圖1 PSA模塊結構
PSA 模塊中,最重要的步驟是利用SPC(Split Pyramid Concat)模塊進行多尺度特征的提取,結構如圖1 虛線框中所示。該模塊采用多分支的方式(類似空間金字塔),將輸入特征圖分成多組,對每個子特征圖使用不同的卷積核進行多尺度特征提?。和ㄟ^壓縮輸入特征圖的通道維數(shù),可以有效地提取每個通道特征圖上不同尺度的空間信息;最后將提取的多尺度特征在通道維度進行拼接。
為了降低多分支上的多尺度特征提取帶來的計算量,使用分組卷積的方法進行卷積操作。分組數(shù)G由卷積核大小k決定:
普通卷積的計算量為
分組卷積的計算量為
Cin和Cout為輸入和輸出通道數(shù),Cg_in和Cg_out為每個分組卷積核的輸入和輸出通道數(shù),Cg_in為Cin/G,因此分組卷積的計算量為普通卷積的1/G,有效地降低了多分支上的多尺度特征提取帶來的計算量。
PSA模塊的具體過程如下:
1)通過SPC 模塊的分組卷積對輸入特征圖X進行多尺度特征提取:
Fi(i=0,1,…S-1)為每組卷積提取的特征;ki為卷積核大??;Gi為組數(shù);將提取后的特征Fi在通道維度上進行拼接:
2)利用SEWeight模塊對Fi提取通道注意力權重信息,得到不同尺度的注意力權重向量:
SEWeight 模塊由Squeeze 和Excitation 兩部分組成,結構如圖2所示。
圖2 SEWeight模塊結構
Squeeze 部分通過在特征圖上進行全局平均池化操作,得到當前特征圖的全局壓縮特征向量:
Excitation 部分先將特征向量進入全連接層,然后進行Relu 激活,再進入全連接,最后再進行Sigmoid 激活,以提取更重要的通道信息,得到注意力權重向量:
H、W、C分別為特征圖的高、寬,通道數(shù);δ為Relu激活函數(shù),σ為Sigmoid 激活函數(shù);W0和W1代表全連接層的參數(shù)。
在不破壞原有通道注意向量的前提下,為了更好地實現(xiàn)注意力信息交互并融合跨維度信息,將Zi也進行拼接:
3)利用softmax對注意力權值Z重新標定:
4)將特征圖F和注意力權重att相乘,得到最終輸出的特征圖Y:
通過PSA 模塊的輸出具有更豐富的多尺度特征信息,同時該模塊的使用比較便攜且沒有增加過多的計算量,因此在YOLOv3 的backbone 尾端添加PSA 模塊,以此來提升模型在復雜場景對小目標障礙物的檢測效果。
本文目標是在YOLOv3 的基礎上提出一種更緊湊高效的目標檢測模型,按照圖3 所示的過程,對YOLOv3進行精簡。
圖3 模型修剪的迭代過程
將YOLOv3 網(wǎng)絡中隨著訓練逐漸降低重要性的通道進行修剪,可大幅度精簡網(wǎng)絡,且不改變網(wǎng)絡結構。在修剪之前,需要評估通道的重要性。為每個通道引入一個比例因子γ,| |γ表示通道的重要性,并乘以該通道的輸出。然后聯(lián)合訓練網(wǎng)絡權值和這些比例因子,并對后者進行稀疏正則化。訓練目標公式如式(12):
其中f(γ)= |γ|表示γ的L1 正則化。將YOLOv3 的損失函數(shù)和γ的正則化相結合,用懲罰因子α平衡這兩個損失項。f(γ)是非平滑函數(shù),采用次梯度法進行優(yōu)化。將式(3)用于稀疏訓練,利用反向傳播算法不斷更新γ,即可得到每個通道的重要性。在YOLOv3 中,除檢測層外,每個卷積層后都連接BN層,對卷積層輸出的特征進行標準化,加快模型收斂速度,提高泛化能力。如式(13)~(16):
其中m為mini-batch 的樣本數(shù),xi為卷積層的輸出,μB和為xi的均值和方差,均由統(tǒng)計得到,ε是為了防止除0出錯設置的極小數(shù),x?為xi標準化之后的值,γ和β為可訓練的比例因子和偏差,分別對x?進行縮放和平移,由反向傳播算法自動優(yōu)化更新,y為BN 層的輸出。本文直接利用BN 層中的γ參數(shù)作為通道修剪所需的比例因子,可以避免引入新參數(shù)。
在經(jīng)過稀疏訓練得到通道的重要性后,接下來進行通道修剪。為了控制修剪比例,引入全局閾值γ?來決定是否要進行修剪和修剪哪些特征通道,γ?設為所有γ的百分之n。再引入局部安閾值π,防止卷積層的過度修剪的同時保持網(wǎng)絡的完整性,π設為當前卷積層中所有γ的百分之k。修剪比例因子同時小于γ?和π的特征通道。修剪之后的模型中每層的通道數(shù)C'為原通道數(shù)C的( )1-p%(p為剪枝率),特征圖參與訓練的通道數(shù)減少p%,因此最終模型的參數(shù)量和體積會精簡很多。
在修剪過程中,對池化層、上采樣層、route 層和shortcut層進行特殊處理。因最大池化層和上采樣層與通道數(shù)無關,直接忽略。根據(jù)全局閾值γ?和局部閾值p為各卷積層構造修剪掩碼Mask,本文是對通道維度進行修剪,Mask 為一維向量,長度和對應層的通道數(shù)相等,需要修剪的通道在Mask 向量中對應的值為0,不需要修剪的為1。對于route層,按順序合并其輸入層的掩碼,并將合并的掩碼作為其修剪掩碼。對于shortcut 層,將所有與其相連層的修剪掩碼,進行or運算,運算后的結果作為shortcut層的修剪掩碼。具體操作如圖4所示。
圖4 Route與Shortcut層的修剪掩碼構建
在通道修剪之后,模型的檢測精度可能會有暫時的下降,尤其是在對小目標物體進行檢測時,對通道剪枝更加敏感,通過對修剪后的模型進行微調操作,以恢復損失的檢測精度。在實驗中,使用與YOLOv3-A 正常訓練相同的超參數(shù)重新訓練SlimYOLOv3-A,以達到微調的效果。
實驗環(huán)境為i7-8700K 處理器,32G 內存,GTX2080Ti顯卡。
本文使用VisDrone2018 數(shù)據(jù)集測試模型的修剪效果,使用自制物流倉庫常見障礙物數(shù)據(jù)集測試修剪后的模型障礙物檢測效果。VisDrone2018 數(shù)據(jù)集包括人、汽車、貨車、摩托車等共十類目標;障礙物數(shù)據(jù)集包括物流箱、叉車、貨架、機器人、垃圾桶、警示牌共六種大小,遠近不同的障礙物,對障礙物數(shù)據(jù)集進行旋轉、縮放、翻轉等操作實現(xiàn)數(shù)據(jù)擴充。選取Tiny-YOLOv3 和YOLOv3 作為基準模型,與不同剪枝率的SlimYOLOv3-SPP3 進行對比實驗,評價指標有精準率、召回率、F1、mAP、FPS、參數(shù)量、模型體積。
在VisDrone2018 和障礙物數(shù)據(jù)集上,對YOLOv3 和YOLOv3-A 進行訓練,網(wǎng)絡輸入的圖片尺寸為416×416,mini-batch 為64,動量系數(shù)為0.9,權重衰減為0.0005,初始學習速率為1-3,分別在迭代到7 萬次和10 萬次時,學習率下降到1-4和1-5。對YOLOv3-A 迭代100 次稀疏訓練,使用三個不同的懲罰因子,α分別為0.01、0.001、0.0001,全局閾值γ?設為所有比例因子的50%、90%和95%,局部閾值p設為各卷積層中所有比例因子的90%,以保證每層至少有10%的通道未被修剪,其他參數(shù)與上文一樣,修剪過后的模型為三種不同剪枝率的SlimYOLOv3-A。為恢復因通道剪枝造成的檢測效果下降,用訓練YOLOv3-A相同的超參數(shù)重新訓練SlimYOLOv3-A。
4.3.1 實驗1
利用YOLOv3 和YOLOv3-A 在VisDrone2018數(shù)據(jù)集上進行對比實驗,分析PSA模塊對檢測效果的影響,結果如表1所示。
表1 PSA模塊對檢測效果的影響
由表1 可看出,輸入尺寸為416×416 和608×608 時,YOLOv3 和YOLOv3-A 檢測性能相當。當輸入尺寸增大到832×832 時,YOLOv3-A 比YOLOv3 在精準率、召回率上提高了0.5%左右,F(xiàn)1 提高了0.7%,mAP 提高了1.1%,F(xiàn)PS 保持不變。說明隨著輸入圖片尺寸的增大,PSA 中SPC 模塊使用的空間金字塔卷積結構,可以更好地整合輸入特征圖的空間信息,在細粒度的水平上提高多尺度的表達能力,并形成遠程通道依賴關系;檢測器從而能通過高分辨率輸入圖像中不同大小的感受野提取更多有用的多尺度深層特征信息。因此增加注意力模塊的的YOLOv3-A模型對比YOLOv3模型在Vis-Drone2018數(shù)據(jù)集上,對背景復雜、特征不明顯的小目標物體有更好的檢測效果。
4.3.2 實驗2
在實驗1 的基礎上,對檢測效果更好的YOLOv3-A模型使用大小不同的懲罰因子進行稀疏訓練,損失函數(shù)如圖5(a)、(b)、(c)所示。
圖5 不同懲罰因子α 的模型的損失函數(shù)
圖5 分別對應稀疏訓練時懲罰因子α為0.01、0.001 和0.0001 的模型迭代次數(shù)和損失曲線。模型訓練時,較小的通道比例因子數(shù)量增加,較大的數(shù)量減少。圖5(a)中模型出現(xiàn)過擬合現(xiàn)象,通過觀察發(fā)現(xiàn),因為α過大,增加了稀疏部分的權重,稀疏訓練時通道比例因子衰減的十分劇烈,從而導致該現(xiàn)象;調整α的值,發(fā)現(xiàn)隨著α的降低,通道比例因子衰減逐漸平緩,過擬合現(xiàn)象隨之消失。后續(xù)實驗中,使用α為0.0001訓練的YOLOv3-A 模型來進行通道修剪。
選取Tiny-YOLOv3、YOLOv3-A、三種不同剪枝率的SlimYOLOv3-A,共五種模型,輸入尺寸為832×832,分析稀疏訓練和模型剪枝的效果。實驗結果如表2所示。
表2 通道剪枝的效果
根據(jù)表2 的結果,與YOLOv3-A 相比,通道剪枝后的三個模型在檢測精度小幅提高的情況下,參數(shù)量分別減少了67.4%、87.5%和92.0%,模型體積分別縮小了67.5%、87.4%和91.9%。雖然剪枝后的模型在運算時間上不如Tiny-YOLOv3,但是達到了35ms~40ms,能夠滿足實時性的要求,且檢測精度提高了105%~135%,更適合實際應用場景。綜上結果,SlimYOLOv3-A 模型的可訓練參數(shù)甚至比Tiny-YOLOv3 更少,檢測效果也與YOLOv3-A 相當,這樣的結果意味在同等的可訓練參數(shù)下,一個更深更窄的YOLOv3 模型可能比一個更淺更寬的YOLOv3 模型更有效。此外通過比較三個不同剪枝率的模型可以得出,剪枝率的提高,參數(shù)量和模型體積會相應地減少,但是檢測精度有一定幅度的下降,剪枝率為90%的模型的綜合性能最好。
為了進一步體現(xiàn)改進后模型的檢測性能,選取上文中性能最優(yōu)的SlimYOLOv3-A(90%剪枝率)模型,隨機從移動物流機器人拍攝的的視頻中截取四幀圖片進行檢測,結果如圖6、圖7 所示。圖6 是利用YOLOv3和SlimYOLOv3-A對大小不同的障礙物進行檢測,圖7是對遠近不同的障礙物進行檢測。
圖6 兩種算法對大小不同障礙物的檢測結果
圖7 兩種算法對遠近不同障礙物的檢測結果
圖6 和圖7 兩組圖片,分別是對大小不同的障礙物和遠近不同的障礙物的檢測效果。每張圖片的場景復雜,光線暗,有三個大小不同或遠近不同的障礙物。從檢測結果可以看到,YOLOv3 可能因為昏暗的背景,最小的障礙物特征不明顯,有兩張漏檢了小目標障礙物,另外兩張只檢測出一部分;而改進后的SlimYOLOv3-A 算法有效地檢測出了三個障礙物。對于存在多個大小不同的障礙物的復雜場景,改進的SlimYOLOv3-A 中的PSA 模塊,可以幫助檢測器通過輸入圖像中不同大小的感受野提取有用的多尺度深層特征。因此改進后的檢測算法能夠提高對特征不明顯的小目標障礙物的檢測準確率,降低漏檢率,另兩個檢測結果中,大目標障礙物的檢測準確率,也有2%~5%的提高。
本文提出一種改進的SlimYOLOv3-A 障礙物檢測算法:在YOLOv3 的backbone 后添加PSA 注意力模塊,用最小的修改豐富深度特征;通過用L1 正則化施加再通道比例因子上,來加強卷積層的通道稀疏性,刪去通道比例因子較小的通道,從而獲得更加精簡的Slim YOLOv3-A模型。實驗證明,改進的算法能夠在保證檢測精度略有提升的情況下,參數(shù)量和模型體積都大幅度下降。改進后的算法,在保證檢測速度的前提下,更精準的檢測目標,也能夠滿足移動物流機器人設備性能,在低功耗下快速準確的檢測出障礙物。在未來可以配合相關避障算法,實現(xiàn)完整的避障操作,提高物流倉庫的工作效率和安全性。