李 東,梁家睿,馬鵬濤
(金發科技股份有限公司企業技術中心,廣州 510663)
改性塑料顆粒的品質對于注塑成型之后的制件性能、外觀有很大影響,因此改性塑料顆粒生產過程中的品質檢測環節是極其關鍵重要的環節。
改性塑料顆粒生產過程中的品質檢測為出廠前的最后一環,也是保證質量的最后一關,因此在顆粒質量和外觀以下方面做要求:塑料顆粒的粒比;塑料顆粒表面是否有黑點以及黑點的大小、個數;塑料顆粒的色差等?,F目前行業內普遍的檢測方式為人工檢測,檢測模式為人工巡檢的模式:開機生產時做一次品質檢測,生產過程中間隔1~2 h抽樣500 g,做人工檢測。但人工檢測的模式有很多不足:首先,人眼檢測主觀成分很大,受到很多因素的制約對檢測結果造成影響,甚至對同樣品質的塑料顆粒會造成不同的判斷,容易造成誤檢和漏檢,對下游注塑客戶的制件造成影響;其次,人工檢測的時效性、效率低,每隔1~2 h 的檢測頻率無法覆蓋完全的生產過程,當發現不合格品產生時,已經造成了相應的經濟損失;另外人眼檢測容易造成視覺疲勞,更加降低了檢測質量;最后,人工檢測的精度不能滿足品質要求,人工檢測一般對于黑點、色差、粒徑比相對較大的缺陷能夠識別出來,對于一些品質要求高的產品,時常發生漏檢現象。
隨著人工智能、圖像檢測等技術的不斷發展,工業計算機、工業相機、傳感器等硬件的成本不斷降低,在改性塑料行業采用圖像處理技術、在線檢測系統去替代人工檢測已經成為一種趨勢[1]。Park 等[2]針對工件表面的毛刺、劃痕、污痕等缺陷難以檢測的問題,設計了一種簡易的CNN 網絡,該方法在實驗測試集上準確率為98%。Kyeong 等[3]設計了一種卷積神經網絡框架對半導體行業的晶圓倉圖進行了分類。Liang等[4]為了解決塑料容器行業復雜背景下在線噴碼檢測識別的問題,提出了一種基于ShuffleNetV2 的神經網絡。上述3 個場景,都是對圖片直接分類來實現工件、樣品缺陷的檢測。大多數場景,用戶只關心ROI(Region Of Interesting)區域是否有缺陷,Shang等[5]提出了一種先基于Canny 邊緣檢測算子分割目標區域,再對目標區域圖片搭建卷積神經網絡進行缺陷分類計算的模型,在減少模型的運算時間的同時,提高了分類精度,目前廣泛用于工業的缺陷檢測。
上述CNN 網絡都能在一定程度上解決工業上產品表面缺陷檢測的問題。目前面臨的問題是,雖然成熟或者經過fine-tuning 的成熟網絡模型經過訓練之后能表現出優秀的性能、魯棒性及泛化能力,如VGG[6]、Resnet[7]等,但是網絡在線推理的時間必須和生產產品的節拍同步,才能滿足在線檢測的需求。因此模型大小和深度嚴重限制了工業場景的產業化落地使用。Hinton 等[8]提出知識蒸餾的架構,其核心思想是通過大模型教師網絡對輕量化學生網絡進行指導。通過保持或犧牲少有復雜模型準確率的基礎上,優化了模型的參數以及推理運算耗時,實現了在線成功部署,大大降低了模型部署的成本,特別切合于改性塑料顆粒的在線生產。
本文提出Vgg-16、Vgg-19、Resnet-18 作為教師網絡,來指導自主搭建的輕量化殘差網絡,在保證準確率的基礎上減少模型參數,提高模型推理速度,以匹配改性塑料生產線在線高速檢測的需求。與此同時,采用梯度加權映射(Grad-CAM)算法可視化學生網絡對塑料顆粒樣品特征提取的熱力圖,能對輕量化學生網絡的性能做出直觀的判斷,更清晰地表征了知識蒸餾對學生網絡優化帶來的作用。
本文所用的樣品通過在塑料顆粒生產線在線抽樣,再通過在實驗室搭建圖像采集系統獲取,采集系統的配置如表1 所示,實物如圖1所示。
表1 硬件配置
圖1 實驗室圖像采集系統
圖像采集系統由1 個8k 45 kHz 線掃相機、2 個角度約為45°的高亮線掃光源、工作站以及傳輸裝置組成,傳送帶均速傳輸保證了線掃相機良好的成像。本次實驗采集的圖像總數約為6 000 張,數量上基本滿足卷積神經網絡對樣本集的要求,不需要做數據增強或者旋轉變換等操作來制造更多樣本。圖片數據分為OK類和NG類兩類,OK類表示合格的樣品,NG類表示表面有黑點的樣品,比例約為1∶1,樣本比例比較均衡,如圖2 所示。圖像數據集由訓練集,驗證集與測試集組成,比例為7∶2∶1,70%的訓練集保證了模型迭代訓練的魯棒性和泛化能力,20%的驗證集用于反向傳播過程中的模型參數調優,10%的測試集用于評估模型最終的性能,如表2 所示。
表2 圖像數據集
圖2 樣本分類
本研究搭建的輕量化網絡由1 個輸入層、10 個卷積層、4個最大池化層、1 個全局均化層和2 個全連接層組成。大量采用殘差塊來增加模型的魯棒性,保證了深度網絡能更好的提取到樣本的特征以及不發生退化以及梯度消失的現象。輸入網路的輸入圖片大小為50×50×1的單通道圖像,圖像在傳入網絡之前先進行標準化處理,使得網絡更容易收斂。在卷積層末端,通過全局均化層代替flatten 函數把多維特征張量轉化為一維向量以減少模型的參數量。再經過全連接層映射為二分類輸出,經過softmax 激活函數變化,輸出值直接表征圖像屬于每個類別的概率。網絡的詳細結構如圖3~4 所示。與此同時,輕量化網絡從以下幾個方面來優化網絡,防止過擬合,提高模型的精度和泛化能力:(1)采用LeakyRelu 作為來替代常規的Relu 作為激活函數,能夠避免輸出值為負時,神經元“死亡”的問題;(2)采用Dropout層防止模型過擬合;(3)大量采用BN 層(Batch Normalization Layer),防止數據輸入到激活函數時進入飽和區無法迭代;(4)學習速率的優化方法采用余弦退火的方式,使得網絡快速收斂,逃離局部最優點。
圖3 輕量化模型基本結構
圖4 網絡模型結構詳細信息
在深度學習中,深度卷積網絡通過融合各個層次的特征圖來加強語義信息。深度卷積網絡深度的增加會提高網絡的表征能力,從而提高模型的識別率,但是深度的增加,會帶來梯度消失與網絡退化的風險。通過Resnet網絡里的殘差模塊,可以有效堆疊高中低維度特征,深度網絡更加容易訓練和擬合,同時加強網絡的變現能力和模型的泛化性。
殘差模塊的原理圖及表達式如圖5 所示。殘差模塊有兩種堆疊方式:第一種是通過兩個3×3 的卷積層去提取網絡層次的特征信息,再去堆疊不同層之間的特征圖,第二種是通過1×1、3×3、1×1卷積層去實現特征的提取和堆疊。兩種方式之間的區別是第二種通過1×1 的卷積層去改變特征圖的通道數,再通過3×3的卷積層去提取高層次信息,最后通過1×1的卷積層去調整特征圖的通道數,這樣一來網絡整體的參數會比用兩個3×3 的卷積層的參數要少,加快網絡的訓練速度。
圖5 殘差模塊的兩種堆疊方式
低緯度特征圖通常只能表征圖像的點、線、面、邊緣信息,更加豐富的語義信息通常在高緯度的特征圖里。本文中通過3 次使用殘差塊來堆疊圖像的特征圖,提取到顆粒的語義信息的同時減少了網絡訓練的困難度,加快了模型的收斂速度。
訓練過程中,學習速率作為十分重要的超參數,變化的趨勢為初始時為比較大的設定值,然后通過指數衰減的方式下降。這樣一來會造成網絡訓練初期由于模型不穩定,Loss的波動會比較大,在模型逐步趨向穩定之后,這時的學習速率已經衰減到比較小的值,會有陷入局部最小值的風險。在本文研究的過程中,通過余弦退火[9]的方式去優化學習速率。起初學習速率的變化是一個Warmup 線性增加的過程,這時可以減少由于模型不穩定Loss 波動過大帶來的影響。當學習速率達到LRbase點時,再通過余弦函數的關系式去逐步減小學習速率,去匹配模型Loss 減小進入最小點的可能,避免跳過全局最小點。當學習速率達到最小值時,再次采用warmup 熱重啟的方式去增加學習速率,以跳過網絡迭代過程中遇到的局部最優點。余弦退火算法在實際運用中,熱重啟階段及下降階段的變化函數表達式如下:
式中:LRbase為預先設置的學習速率,當warmup 階段學習速率達到LRbase點時,學習速率開始下降;LRwarmup為熱重啟階段設置的初始學習速率;stepwarmup為熱重啟階段設置的步長;stepglobal為網絡訓練的過程中的全局步長;steptotal為網絡訓練總共的預設步長;LRlinear為熱重啟階段的學習速率;LRcosine_delay為余弦下降階段的學習速率。
本文中優化器使用ADAM反向傳播去迭代模型,初始學習速率設置為10-4,分別用plateau 和cos 退火曲線去控制學習速率的變化曲線,Batchsize 樣本量設置為64,擬合100 個epoch,分別得到Loss 曲線、驗證集val_loss、val_acc 曲線以及學習速率曲線,如圖6 所示。由圖可知:(1)loss 曲線在經過一定epoch 陷入局部最優值時,通過余弦退火的優化方式,大約在epoch 為60 時,這時學習速率通過warm_up 階段達到最大值,會產生一種陡峭的大斜率躍階突變來跳過局部最優;(2)采用余弦退火的優化方式在擬合的最初幾個epoch 內,loss 值相比常規通過plateau 去優化方式較低,這樣可以在一定的程度上避免模型過擬合;(3)通過val_loss、val_acc 曲線去觀測模型的可靠性,可以得出,經過100epoch的迭代,采用余弦退火的優化方式相比常規通過plateau 的優化方式,可以得到更低的val_loss 值以及更高的val_acc 值,由此可以證明,模型采用余弦退火的方式去優化學習速率,可以提高模型的魯棒性和推理能力。
圖6 對比曲線
在搭建的輕量化殘差網絡中,末端softmax 層會把全連接層的logit 輸出向量轉化為一個概率向量P,用來表示當前樣本屬于每一個類的概率,每一類概率Pi的計算公式為:
式中:j為分類的總類別個數;Zj為總類別全連接層的logit 值;Zi為當前類全連接層的logit值。
而知識蒸餾引入了一個溫度系數T,在計算概率向量qi的時候使得softmax層的輸出更加平緩,計算式如下:
溫度參數T的值越大,概率函數的分布圖就越平緩,模型的軟化程度就越大。當溫度參數T=1的時候,輸出是沒有經過軟化的概率分布。知識蒸餾通過引入參數T,使得教師網絡更多的“暗知識”被蒸餾出來傳入學生網絡,從而提升了學生網絡的性能[10]。
現有研究表明[11],通過多個復雜的教師網絡通過知識蒸餾的方式,把“暗知識”傳遞給學生網絡和單一教師網絡相比,會明顯提升學生網絡的模型的性能和泛化能力。此外,教師網絡的結構如何和學生網絡相比,如果相似度較高也能提高學生模型的性能[12]。本文采用Vgg-16、Vgg-19、Resnet-18 三個復雜網絡作為教師網絡,對教師網絡的訓練通過在末端全連接層logit 輸出值添加溫度參數T的軟化,形成3 個軟化標簽,取軟化標簽的平均值作為教師網絡的輸出標簽n1。對學生網絡的訓練分為兩部分,第一部分的末端全連接層logit輸出進行知識蒸餾系數T軟化,形成學生網絡軟化預測結果m1,第二部分直接得到的概率向量P作為硬預測結果m2。知識蒸餾的流程如圖7所示。
圖7 知識蒸餾流程
知識蒸餾網絡的混合損失函數由兩部分組成,第一部分是由n1與m1組成相對熵損失函數,相對熵損失函數(Kullback-Leibler Divergence)定了兩個事件的不同程度,當兩個概率分布相似時,其相對熵損失函數的值趨近于0。第二部分由m2與真實標簽Label 組成傳統的交叉熵函數,交叉熵損失函數(Cross Entropy)的作用是表示預測樣本標簽和真實樣本標簽之間的差值?;旌蠐p失函數的表達式如下:
式中:T為溫度參數;Lambda為比例系數,當Lambda=0 時,混合損失函數相當于沒有使用知識蒸餾,常規的交叉熵損失函數構成了知識蒸餾網絡的損失函數。
為了驗證知識蒸餾對學生網絡帶來的影響,選取Vgg-16、Vgg-19、Resnet-18 三個復雜網絡作為教師網絡,分別訓練教師網絡、未使用和使用知識蒸餾技術的輕量化殘差網絡。訓練完成后,以精確度、召回率、模型參數、模型浮點運算次數以及單次檢測耗時來評估模型的性能,對比結果如表3 所示。實驗結果表明,訓練完成后,未經過知識蒸餾的學生網絡,模型的精確度、召回率分別為88.8%、96.7%,而經過知識蒸餾的學生網絡(后面簡稱KD學生網絡),模型的精確度、召回率分別為90.6%、98.9%,相較于未經過蒸餾的網絡,2個指標均有較大幅度的提高,精確度和召回率分別提高了1.8%和2.2%,精確度從88.8%提升到90.6%,召回率從96.7%提升到98.9%。實驗結果說明了輕量化殘差網絡經過知識蒸餾過程,教師網絡能夠傳遞大量“暗知識”給到學生網絡,顯著地提高學生網路的性能。
表3 模型實驗結果對比
與此同時,學生網絡和教師網絡相比,準確度和召回率在沒有明顯降低甚至超過部分教師網絡的情況下,模型參數和浮點運算次數以及單次檢測耗時大大降低。輕量化殘差模型參數為0.643×107,模型浮點運算次數1.288×107,單次檢測耗時為0.005 s。3 個教師模型的平均參數量為1.576×107,模型浮點運算次數為3.151×107,單次檢測耗時為0.01 s。模型的浮點運算次數和參數量決定了模型的復雜程度。模型越復雜,模型對硬件的要求就越高,相應的部署成本和部署難度就越大。從數據可知,和教師網絡相比,模型的參數量、浮點運算次數、單次檢測耗時分別降低了59.2%、59.124%、50%。尤其是單次檢測耗時的降低為模型在輕量化的邊緣側、移動端、嵌入式部署提供了更大的靈活性以及拓展性。
圖8 所示為學生網絡以及KD 學生網絡驗證集準確率函數的過程曲線。模型的訓練過程可以表征出模型的可靠性和泛化能力。從學生網絡以及KD 學生網絡損失曲線的過程相比較,可以看出最開始兩者的準確率的值都以比較快的速度上升,兩者在epoch 為40 左右時網絡逐漸擬合,val_acc 趨近全局最大值。最終學生網路的準確值穩定在0.92 左右,KD 學生網絡的準確值穩定在0.96左右,說明通過知識蒸餾網絡“暗知識”的傳遞,訓練過程中學生網絡在驗證集上的表現能力顯著上升,模型的性能和泛化能力顯著增強。
圖8 學生網絡經過知識蒸餾val_acc前后對比曲線
類激活熱力圖是根據輸入圖像類在當前層的梯度或卷積核權重進行疊加,生成熱力圖,表達的是圖像每個位置對該類的重要程度。從類激活熱力圖的映射的結果,可以得到網絡模型對圖像每個位置的判斷結果以及對當前類的決策能力,從而指導后續的網絡調整以及優化。根據類激活熱力圖當前類的可視化結果,可以評估當前模型的決策能力以及魯棒性。
本文通過softmax 層輸出值類權重對不同的卷積層反向求導,導數求平均值作為權重加權到每個卷積層輸出結果上,根據生成的梯度類激活熱力圖來評估經過知識蒸餾學生網絡模型的可靠性和推理能力。模型部分卷積層的梯度類激活熱力結果如圖9所示,很直觀地表征了模型的推測性能。
圖9 模型卷積層梯度類激活熱力圖
本文在Intel(R)Xeon(R)Silver 4210 CPU 處理器搭載NVIDIA GeForce RTX 2080 顯卡的硬件環境下,采用cudnn7.0 GPU 加速計算包,基于Python 平臺,用Tensorflow-keras 算法包實現了模型的搭建、訓練、評估驗證以及優化器、損失函數、學習速率等超參數的設置。從知識蒸餾前后模型的對比實驗結果以及網絡類激活熱力圖可視化分析結果可以得出以下結論。
(1)經過知識蒸餾的學生網絡,相較于未經過蒸餾的網絡,精確度和召回率顯著的提高,說明了本文的方法是可行的。輕量化殘差網絡經過知識蒸餾過程,能夠顯著提高模型的性能和泛化能力,通過“暗知識“的傳遞,達到甚至超過教師網絡的性能。
(2)由于輕量化的網絡可以大幅度降低模型的推理時間,本文的方法可作為一種通用方法應用于基于深度學習高速檢測中以及輕量化部署的邊緣側、嵌入式部署的解決方案。