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