姚華瑩,彭亞雄,陸安江
(貴州大學 大數(shù)據(jù)與信息工程學院,貴陽 550025)
近年來,人工智能被研究人員廣泛關注并設計研究出大量的人工智能產品[1]。深度學習中的圖像識別技術取得的豐碩成果讓人們的生活方式更加智能化、高效化。菜品智能識別可以部署在智能餐廳,用于菜品價格自動結算,安裝在移動設備實時檢測當前食物的卡路里等詳細信息等[2-4],目標檢測算法可以實現(xiàn)這一效果。卷積神經網絡通過輸入的圖像數(shù)據(jù)進行訓練,像人類的大腦一樣學習圖像特征[5],準確的分類出菜品。目標檢測算法分為雙階段檢測和單階段檢測。其中,雙階段檢測算法中具有代表性的是R-CNN[6]和Faster-R-CNN[7]算法,這類雙階段算法檢測精度高,但檢測速度較慢。另一類單階段檢測算法YOLO[8](You Only Look Once),是繼R-CNN 之后,為解決目標檢測速度問題而提出的另一個框架,在定位邊界框的同時獲取類別概率,犧牲了一部分檢測精度以達到更快的檢測速度;由Liu 在ECCV 上提出的多尺度單發(fā)射擊檢測算法[9](Single Shot MultiBox Detector,SSD)在不同尺度的特征圖中多步提取特征。與R-CNN 相比,SSD速度更快;與YOLO 相比,SSD 在檢測精度mAP 上有更好的性能,在不降低檢測精度的同時保證了檢測速度。由于以上目標檢測模型包含大量的卷積計算,有大量參數(shù),僅能運行在高性能圖像處理器上,不利于移植到數(shù)據(jù)處理弱的平臺。
為此,本文基于優(yōu)秀的輕量型神經網絡MobileNetV2[10]對SSD 網絡進行改進,構建輕量型的菜品識別模型。使用注意力機制[11]和混洗通道[12]構建注意力逆殘差結構提高檢測準確率。設計回歸定位損失函數(shù),加快模型收斂速度。根據(jù)菜品數(shù)據(jù)集特點設置回歸預測層,提升模型檢測速度。通過使用數(shù)據(jù)集Chinesefood 對模型訓練,驗證了本文提出的Att_Mobilenetv2_SSDLite 目標檢測網絡檢測效果更佳。
單階段檢測是基于回歸的算法(例如YOLO、SSD 等),把提取候選區(qū)域框和特征提取融合在同一網絡中,同時實現(xiàn)候選區(qū)域選擇和分類。檢測網絡由基礎網絡層和回歸預測層兩部分組成。基礎網絡層用于提取輸入圖像特征,基礎網絡很大程度上能影響檢測的精度、速度以及檢測網絡體積;回歸預測層用于生成預測框及分類目標。SSD 采用基于金字塔特征層的檢測方式,在不同尺度的特征圖上進行位置回歸和分類。如圖1 所示。SSD 模型結構的前端是用于提取圖像特征的基礎網絡層,后端是用于回歸預測的附加層。
圖1 SSD 網絡結構Fig.1 Network architecture of SSD
基礎網絡層使用了VGG-16[13]網絡的前5 層卷積層,并將VGG-16 網絡中原有的全連接層FC6 和FC7 改為卷積層Conv6 和Conv7,提取基本特征;在后端附加4 個尺度大小不同的卷積層,用于高級特征提取。表1 為SSD 網絡參數(shù),整個網絡包含6 個特征預測層,前端淺層特征圖分辨率高,用于預測小目標;后端深層特征圖分辨率低,用來預測較大的目標。
表1 SSD 網絡參數(shù)Tab.1 SSD network parameters
SSD 網絡在基礎網絡中使用了VGG-16,而VGG-16 使用了大量的傳統(tǒng)卷積,導致模型體積龐大,參數(shù)量多,這些弊端導致其難以部署在計算力和存儲空間受限的設備中。為了解決這一問題,本文基于MobileNetV2 輕量型卷積網絡替換VGG-16 網絡,對SSD 進行輕量化改進,針對菜品目標檢測的特點,修改SSD 網絡層結構,獲得針對菜品識別的目標檢測網絡Att_Mobilenetv2_SSDLite。
MobileNetV2 網絡是Google 團隊對MobileNetV1的進一步調整,沿用了深度可分離卷積,減少卷積計算量,同時借鑒ResNet 中的殘差結構,設計了逆殘差結構,提高網絡對低維空間的特征提取能力[14]。
深度可分離卷積[15](Depthwise sparable convol?ution),將傳統(tǒng)卷積分為一個深度卷積和一個點卷積。首先進行深度卷積,即對每個輸入的通道,分別用單個卷積核進行相對應的卷積計算后,用1×1 的卷積核對深度卷積結果進行線性組合,構建新的特征,這個過程為點卷積。如果不考慮偏置參數(shù),深度分離后的卷積參數(shù)運算量為:
標準卷積計算量為:
其中:DK·DK為卷積核尺寸;DF·DF為輸入圖像尺寸;M和N分別是輸入通道數(shù)量和輸出通道數(shù)量。傳統(tǒng)卷積的計算量是深度可分離卷積的1/M +1/K2,當卷積核大小為3×3 時,計算量相比傳統(tǒng)卷積減少了9 倍多,能明顯提升運算速度及檢測效率。
殘差結構是先對輸入圖像降維、卷積、再升維,如圖2(a)所示。文獻[16]中先使用1×1 的卷積,將輸入通道壓縮至原來的1/4,然后再用3×3 的卷積進行計算,最后使用1×1 的卷積對通道數(shù)目還原。殘差結構通過旁干分支,將前端特征與通過一系列卷積處理后的特征進行融合,可以提高整個網絡的特征提取能力。如圖2(b)所示,MobileNetV2的逆殘差結構與殘差結構相反,對輸入圖像升維、通過深度可分離卷積、降維。先使用了1×1 卷積,將輸入通道數(shù)目擴大至原來的6 倍,再經過深度可分離卷積處理,最后通過1×1 卷積恢復通道數(shù)目。對輸入通道數(shù)目擴展是一個升維的過程,這樣做的好處是,可以提取低維特征圖上的有效特征,使用了深度可分離卷積后計算量也不會增加[17]。與ResNet的殘差結構一樣,最后會將主干分支與旁干分支特征融合。
圖2 殘差結構與逆殘差結構對比Fig.2 Comparison of residual structure and inverse residual structure
MobileNetV2 的網絡結構參數(shù)見表2,共包含19個層。其中,在7 個不同尺度的特征圖上會重復逆殘差結構(Inverted Residual)1~4 次不等,Conv2 為普通卷積,在通過所有的逆殘差塊后,特征圖經過一個卷積層和平均池化層(Avgpool)可以得到k個類別的分類。
表2 MobileNetV2 網絡參數(shù)Tab.2 MobileNetV2 network parameters
Att_Mobilenetv2_SSDLite 目標檢測算法網絡結構如圖3 所示。將SSD 的基礎卷積層替換為改進后的MobileNetV2,在逆殘差結構中增加通道注意力機制和混洗通道加強特征融合,然后對區(qū)域候選框進行重構。分別在網絡的Conv11、Conv13 _2、Conv14_2、Conv15_2、Conv16_2 這5 個尺寸不同的特征層中生成預測框,預測框的數(shù)量由8 732減少為2 254;最后通過非極大值抑制,去除置信度低于0.5的邊框線條,得到檢測結果。
圖3 Att_Mobilenetv2_SSDLite 網絡結構Fig.3 Network architecture of Att_Mobilenetv2_SSDLite
Att_Mobilenetv2_SSDLite 使用深度可分離卷積,替換原SSD 網絡中額外增加層的標準卷積層,極大減少了運算量?;A網絡使用MobileNetV2,輕量型的基礎網絡對SSD 網絡的檢測精度、檢測速度和模型體積上都有良好的影響。
Att_Mobilenetv2_SSDLite 網絡模型參數(shù)見表3?;A網絡層保留了MobileNetV2 的Conv1~Conv11,使用Att-Inverted Residual 逆殘差結構,縮減殘差結構的重復次數(shù),去掉最后用于分類的全連接層和池化層;額外添加3 個卷積層作回歸預測層。
表3 Att_Mobilenetv2_SSDLite 網絡參數(shù)Tab.3 network parameters of Att_Mobilenetv2_SSDLite
如圖4 所示,本文采用的注意力逆殘差結構(Attention Inverted Residual)與ResNet 相反,在主干分支先對輸入通道使用1×1 的卷積進行擴張,在高維度上再使用深度卷積,而后再次經過1×1 的卷積;在殘差結構旁干分支中使用注意力算法,融合主干分支和旁干分支兩類特征,最后將學習到的特征,通過混洗通道打亂重組,破除固定通道間特征無法學習的障礙,進一步提高網絡的特征提取能力。
圖4 Att_InvertedResidual 結構Fig.4 Att_InvertedResidual structure
旁干分支中,先對輸入通道進行全局池化壓縮操作(Squeeze),經過壓縮處理后的二位特征通道將變成不同值的實數(shù),表示其在特征通道中響應的全局分布;然后經過FC 全連接層、ReLU、FC、Sigmoid的激活操作(Excitation),得到每個實數(shù)對應的權重;最后再經過加權操作(Reweight),分別給每個通道特征乘上權重,將權值賦給對應通道。通過注意力加權操作后,網絡將重點關注權值更大的通道特征,有利于提取特征。
在逆殘差結構的最后,用混洗通道操作(shuffle channel)打亂重組通道特征,是基于通道分組卷積實現(xiàn)的混洗通道卷積,將輸入通道特征分為g組,每組分別與對應的卷積核卷積,卷積計算量降為原有的1/g,然后對g組通道打亂重組。原本封閉固定的通道在打亂重組后特征得到了交流,解決了由固定分組導致特征融合效果差的問題。
在本文提出的Att_MobileNetV2_SSDLite 模型中,將基礎網絡MobileNetV2 的逆殘差結構替換為Att-InvertedResidual 結構。實驗證明,本文的殘差結構可以在減少卷積層數(shù)量的同時保證特征提取能力。
特征層中提取到的預測框,通過最后的非極大值抑制,得到置信度較高的預測框,再經過損失函數(shù)處理后,最終輸出檢測結果。SSD 的損失函數(shù)包含預測框定位回歸損失(SmoothL1 損失函數(shù)[18])和類別置信度分類損失(Softmax損失函數(shù))。
在回歸過程中,對預測框和默認框重合程度的度量標準是交并比[9](IOU),表示預測框和默認框重合部分占預測框和默認框總面積的比例,用公式表示為:
但這種簡單的面積交并比,并不能很好的反應預測框和默認框的重疊情況。例如:A∩B =0 時IOU =0,這時IOU無法反向傳遞梯度,不能指導訓練參數(shù)改變;并且當A∩B≠0 時,預測框和默認框有多種重疊形式,同樣不能指導梯度傳遞。為此,本文考慮預測框與默認框的重疊程度,對IOU的計算方式做部分改進。將預測框與默認框兩中心點歐式距離作為懲罰項,與預測框和默認框重疊面積的最小矩形對角線做比,用公式表示為:
其中,d2(A,B)表示預測框A中心點與默認框B中心點的歐式距離,c2表示預測框A與默認框B最小覆蓋的矩形面積的對角線距離。用左上和右下兩點坐標表示定位框位置,預測框記:A =(x1,y1,x2,y2);默認框記:;預測框A與默認框B最小覆蓋的矩形C記:。
預測框面積S與默認框面積S′分別記為:
重疊面積SO為:
——針對江蘇省連云港市第二人民醫(yī)院腐敗案暴露出的問題和搞“團團伙伙”的嚴重危害性,江蘇省連云港市委常委、紀委書記、監(jiān)委主任劉海濤撰文稱,要堅持懲前毖后、治病救人的原則,把嚴管和厚愛結合起來,系統(tǒng)運用“四種形態(tài)”;對于違反政治紀律和政治規(guī)矩的苗頭性傾向性問題,早發(fā)現(xiàn)早提醒早處置,將問題解決在未發(fā)之際,持續(xù)建設風清氣正的政治生態(tài)。(《中國紀檢監(jiān)察報》11月2日)
得到IOU為:
預測框與默認框最小覆蓋矩形對角線Cl為:
預測框A與默認框B中心點分別為:
歐式距離為:
最后可以得到預測框回歸損失函數(shù)為:
預測候選框[9]是在特征圖上,按一定縱橫比(aspect retios)生成的可能包含預測目標的預測候選框,淺層分辨率高的特征圖主要檢測小目標,深層分辨率小的特征圖檢測大目標。預測候選框通過非極大值抑制算法后,輸出與目標最為匹配的檢測框。表4 與表5 分別列出了SSD 與本文算法Att_Mobilenetv2_SSDLite 在不同尺度特征圖上對應的預測候選框數(shù)量。本文主要檢測目標為菜品,菜品目標通常是圖片中占比最大的目標,故本文在設置默認候選框時,關注更深層的特征圖的默認候選框。
表4 SSD 與Att_Mobilenetv2_SSDLite 網絡參數(shù)Tab.4 SSD and Att_Mobilenetv2_SSDLite network parameters
表5 Att_Mobilenetv2_SSDLite 網絡參數(shù)Tab.5 Att_Mobilenetv2_SSDLite network parameters
第k個默認候選框的大小Sk計算方式為:
特征圖上的每個像素點都會生成4 個或6 個默認候選框,本文提出的Att_Mobilenetv2_SSDLite 網絡生成2 254 個默認候選框,主要舍棄了用于檢測小目標的預測框。
本文針對菜品識別設計了Att_Mobilenetv2_SSDLite 網絡,使用改進后的Att_MobileNetV2 作基礎網絡提取特征,額外增加3 個卷積層作為回歸預測層。為了減小模型體積和提高檢測速度,類別置信度與定位回歸預測中均使用可分離卷積代替?zhèn)鹘y(tǒng)卷積。針對IOU不能很好反應預測框與默認框之間的重疊效果,設計了LMIOU回歸損失函數(shù),替換SmoothL1 損失函數(shù)。
實驗環(huán)境為pytorch1.7、python3.7,AMD Ryzen 7 4800H 處理器,NVIDIA RTX 2060 6G,在windows 環(huán)境下運行,使用數(shù)據(jù)集格式為PASCAL VOC。數(shù)據(jù)集為自建中餐菜品數(shù)據(jù)集Chinesefood,選取中餐菜品數(shù)據(jù)集release_data 中的20 類菜品,每個菜品1 067張圖片,數(shù)據(jù)集共包含21 340 張圖片;使用LabelImg 標準軟件生成VOC 格式數(shù)據(jù)集,按照80%、10%、10%的比例劃分訓練數(shù)據(jù)、驗證數(shù)據(jù)和測試數(shù)據(jù)。Batchsize設為32,初始學習率設為0.001,動量為0.9,每迭代50 次降低學習率為上一階段0.5。
實驗評價指標為檢測速度(fps)、平均準確率(Average Precision,mAP)和平均召回率(Average Recall,AR)。fps表示每秒檢測圖片數(shù)量,值越高表示檢測速度越快;mAP表示不同閾值條件下的平均準確率,值越高表示檢測效果越好;AR表示平均召回率,值越高表示漏檢率越低。
式中,TP表示正樣本中預測正確部分;FP表示正樣本中預測錯誤部分;FN表示負樣本中預測錯誤部分。
對比實驗設計,使用不同數(shù)量回歸預測層的網絡進行對比,尋找最合適數(shù)量的回歸預測層;針對本文提出的改進點進行控制變量組合訓練,探索改進點對網絡整體提升能力。訓練過程使用自建的中餐菜品數(shù)據(jù)集Chinesefood,并對輸入的圖像隨機翻轉、裁剪以及顏色隨機調整。
4.3.1 不同數(shù)量回歸預測層對比
本文設計了分別有4、5、6 個回歸預測層的SSD模型。表6 列出了不同層結構的網絡在菜品數(shù)據(jù)集上的表現(xiàn),其中features_number表示該模型包含回歸預測層的個數(shù)。
表6 不同數(shù)量預測層模型檢測對比Tab.6 Comparison of model detection with different numbers of prediction layers
回歸預測層數(shù)量越多,模型檢測準確率越高,但是模型計算量隨之增加,導致檢測速度下降,每增加一層,準確率大約提升1%,模型體積增大1~2 M,見表5?;貧w預測層數(shù)量為4 時,檢測速度最快,模型體積也最小,但檢測準確率與召回率最低;回歸預測層數(shù)量為6 時,準確率和召回率最高,但檢測速度大幅下降,模型體積也增大。圖5 為不同數(shù)量特征層的檢測效果。本文使用5 個回歸預測層的模型表現(xiàn)最好,保證了速度和準確率,模型體積也控制在合適范圍。
圖5 不同數(shù)量預測層檢測效果Fig.5 The detection effect of different numbers of prediction layers
4.3.2 模型優(yōu)化效果
實驗中分別比較了注意力逆殘差塊(Att-InvertedResidual)、深度可分離卷積(SperableConv2d)和回歸定位損失函數(shù)(LMIOU)對模型的增益效果。從表7 結果可見,注意力逆殘差塊提升準確率約0.9%,深度可分離卷積可減小模型體積約24.6 M,回歸定位損失可提高準確率1.6%,召回率1.2%。
表7 不同結構對比Tab.7 Comparison of different structural
圖6 對比了使用LMIOU和SmoothL1 分別作為回歸定位損失的損失變化圖。實驗表明,LMIOU損失函數(shù)對IOU 計算方式的調整,能更全面的了解預測框與默認框的重疊關系,加快模型收斂,損失值下降更快,提升網絡識別準確率。
圖6 不同損失函數(shù)對比Fig.6 Comparison of different loss functions
4.3.3 不同模型效果比較
從表8 可以看出,對比其它的目標檢測模型,本文設計的模型相比SSD300、Tiny YOLO 和Mobilenetv1_SSD,準確率相似,但模型體積最小,檢測速度也最優(yōu)越。對比Tiny SSD300,本文的模型雖然體積略大,但準確率和速度都遠遠大于Tiny SSD300。圖7 對比了不同模型對菜品的檢測效果,綜合模型體積、準確率和速度,本文的模型相比SSD 和YOLO 具有更好的效果。
圖7 不同目標檢測模型檢測效果Fig.7 The detection effect of different target detection models
表8 不同模型檢測對比Tab.8 Comparison of different models
本文針對菜品識別設計了基于SSD 的輕量型目標檢測網絡Att_Mobilenetv2_SSDLite 模型,該模型采用MobileNetV2 作為基礎網絡,縮小模型體積提升檢測速度。對原MobileNetV2 模型中的逆殘差結構做調整,使用注意力機制和混洗通道增強特征提取能力。考慮預測框與默認框位置重疊因素設計回歸損失函數(shù),加快模型收斂。重新規(guī)劃回歸預測層數(shù)量,重點關注圖片中大目標,提高檢測準確率。通過與其他目標檢測網絡對比,本文提出的模型更加適合識別菜品,并且適合部署在存儲能力弱的其他平臺。