與時(shí)代共振,AI助力工業(yè)缺陷檢測(cè)
[ 摘要 ]由于深度學(xué)習(xí)強(qiáng)大的特征提取能力,代替了人工目檢和傳統(tǒng)的機(jī)器視覺,成為了工業(yè)缺陷檢測(cè)的新利器。然而,基于深度學(xué)習(xí)的語義分割技術(shù)在工業(yè)缺陷檢測(cè)領(lǐng)域的應(yīng)用仍具有挑戰(zhàn)性。本文先對(duì)比自然場(chǎng)景下的語義分割,概述了工業(yè)缺陷檢測(cè)背景下語義分割技術(shù)的特點(diǎn);接著,對(duì)于工業(yè)缺陷檢測(cè)的常見難點(diǎn),對(duì)常見的解決方案進(jìn)行介紹。最后,作者提出了關(guān)于工業(yè)缺陷檢測(cè)實(shí)際應(yīng)用中一些問題的思考。
1 問題概述:工業(yè)缺陷檢測(cè)場(chǎng)景中的語義分割
語義分割是指使用語義標(biāo)簽對(duì)圖像中的每一個(gè)像素進(jìn)行分類。相比圖像分類,前者要求更高,因?yàn)楹笳咧皇穷A(yù)測(cè)整個(gè)圖像的單個(gè)標(biāo)簽[1] 。相比于人工目檢的費(fèi)時(shí)費(fèi)力,傳統(tǒng)機(jī)器視覺強(qiáng)依賴于工程師的經(jīng)驗(yàn)與試錯(cuò),基于深度學(xué)習(xí)的方法由于其端到端自動(dòng)提取特征實(shí)現(xiàn)分割過程的特點(diǎn)而逐漸嶄露頭角。FCN(全卷積神經(jīng)網(wǎng)絡(luò))[2]作為基于深度學(xué)習(xí)的語義分割技術(shù)的開山之作早在2014年就已經(jīng)被提出,但是計(jì)算機(jī)視覺背景下的語義分割研究大多以自然場(chǎng)景為主,例如常用的cityscape數(shù)據(jù)集[3],便是涵蓋了城市道路、車,人,樹等物體的自然場(chǎng)景數(shù)據(jù)集。工業(yè)缺陷檢測(cè)相比于自然場(chǎng)景,類別更少,而且工件表面一般背景干擾小,變化更少,而且可以通過硬件(如打光)等方式去改良光照等條件以獲取更好的數(shù)據(jù)集。那么是否意味著工業(yè)缺陷檢測(cè)中的語義分割更為簡(jiǎn)單呢?
其實(shí)不然,簡(jiǎn)單來說,工業(yè)缺陷檢測(cè)中的語義分割存在以下的問題:
類間差異小,存在模糊地帶:以磁瓦缺陷數(shù)據(jù)集[4]為例,線狀物體在多種缺陷或者無缺陷情況都有出現(xiàn)。這是這一數(shù)據(jù)集的固有屬性,也是缺陷檢測(cè)難做的原因。有一些情況,由于正負(fù)樣本類內(nèi)差異小,比如按照面積、灰度值等繪制其直方圖,中間過渡區(qū)域永遠(yuǎn)存在一定量的樣本,處于灰色地帶,很難分辨。
類內(nèi)差異大:同一類缺陷下,缺陷的大小,形狀,位置多變。
樣本不平衡:有些數(shù)據(jù)集中,嚴(yán)重存在著正負(fù)樣本不平衡的問題,良品多,不良率小。
缺陷級(jí)別小:例如在磁瓦缺陷數(shù)據(jù)集中 ,有些裂痕或者空洞的尺寸很小,對(duì)于目標(biāo)細(xì)節(jié)的分辨率要求高。
圖1 磁瓦缺陷數(shù)據(jù)集[4] 該數(shù)據(jù)集是中國科學(xué)院自動(dòng)所一個(gè)課題組收集的數(shù)據(jù)集,收集了6種常見磁瓦缺陷的圖像,并做了語義分割的標(biāo)注。
下面我們結(jié)合上述難點(diǎn),對(duì)于工業(yè)缺陷檢測(cè)的常見難點(diǎn),對(duì)常見的解決方案進(jìn)行介紹:
2.選擇什么樣的網(wǎng)絡(luò)拓?fù)淇梢圆蹲侥繕?biāo)細(xì)節(jié)?
Long等人提出了全卷積神經(jīng)網(wǎng)絡(luò)(FCN)[2]是基于深度學(xué)習(xí)的語義分割模型的一個(gè)里程碑。FCN將常用的CNN 架構(gòu)(如VGG16和GoogleNet)中的全連接層替換成卷積層,即整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)為 先通過卷積層下采樣得到熱圖,再上采樣得到空間分割映射圖。如圖2所示,如果直接將經(jīng)過5次池化操作后得到的熱圖上采樣,則得到FCN32s。但是這樣的效果很差,這是經(jīng)過多次卷積池化操作,雖然得到的語義信息不斷增強(qiáng),但是也造成了像素位置等信息的損失。
因此,F(xiàn)CN采用了(skip-connection)結(jié)構(gòu),這一結(jié)構(gòu)將不同尺度的信息融合,這里主要用到的是將不同尺度的熱圖相加,得到了最終的分割結(jié)果(FCN8s)。相比于真實(shí)分割,網(wǎng)絡(luò)推理的結(jié)果忽略了很多目標(biāo)細(xì)節(jié)結(jié)構(gòu),而在實(shí)際工業(yè)缺陷背景下,由于缺陷級(jí)別低,特別是有些缺陷的判定會(huì)規(guī)定尺寸,例如小于某一尺寸的缺陷可以算作良品。所以選擇能夠提高目標(biāo)細(xì)節(jié)分辨率的網(wǎng)絡(luò)特別重要。
此外,F(xiàn)CN 表現(xiàn)不好的另一原因在于經(jīng)驗(yàn)感受野和理論感受野的不一致[5]。感受野(ReceptiveField)是指卷積神經(jīng)網(wǎng)絡(luò)每一層輸出的特征圖(feature map)上的像素點(diǎn)在輸入圖片上映射的區(qū)域大小。圖4的實(shí)驗(yàn)結(jié)果證明,F(xiàn)CN的經(jīng)驗(yàn)感受野不及理論感受野的1/4,因此選擇能夠增強(qiáng)經(jīng)驗(yàn)感受野的拓?fù)湟彩橇硪粋€(gè)重要的問題。
圖2 FCN 網(wǎng)絡(luò)拓?fù)涫疽鈭D[2] FCN將來自于不同深度層的信息融合
FCN-32s是將特征提取的最后一層經(jīng)過步長為32的上采樣的像素預(yù)測(cè)結(jié)果。FCN-16s融合最后一層和4次池化操作以后經(jīng)過步長為16的上采樣的像素預(yù)測(cè)結(jié)果。FCN-8s融合前面兩者和3次池化操作經(jīng)過步長為8的上采樣的像素預(yù)測(cè)結(jié)果。
圖3 FCN不同分辨率下(左一至左三)的分割效果與真實(shí)標(biāo)簽的對(duì)比(右)[2]
圖4 FCN經(jīng)驗(yàn)感受野嚴(yán)重缺失示意圖[5]從左至右依次是原始圖像;來自網(wǎng)絡(luò)最后一層通道的熱圖;由網(wǎng)絡(luò)結(jié)構(gòu)定義的理論感受野;與之對(duì)應(yīng)的經(jīng)驗(yàn)感受野
顯然,經(jīng)驗(yàn)感受野不夠大,不足以捕捉全局的背景。
FCN之后的語義分割模型大致可以分為以下幾類:編碼器-****結(jié)構(gòu)、基于金字塔的模型、遞歸神經(jīng)網(wǎng)絡(luò)、視覺注意力模型,生成對(duì)抗網(wǎng)絡(luò)。我們著重介紹其中幾類能夠更好捕捉目標(biāo)細(xì)節(jié),增強(qiáng)網(wǎng)絡(luò)的經(jīng)驗(yàn)感受野的模型結(jié)構(gòu)。
編碼器-****結(jié)構(gòu)與FCN類似,編碼器相當(dāng)于下采樣提取特征的過程,****相當(dāng)于上采樣得到預(yù)測(cè)分割結(jié)果的過程。如圖5,Unet是這一結(jié)構(gòu)中的代表作[6]。為了擴(kuò)大感受野得到更多尺度的特征信息,****結(jié)構(gòu)設(shè)計(jì)為多層卷積池化。此外,多尺度的信息融合的過程也更為豐富,相比于FCN的直接加和,這里利用了通道維度拼接的方法。
注意的是,在拼接之前,需要把前層的特征圖剪裁到和后層一樣的大小。在上采樣時(shí),還加入了更為精細(xì)的卷積結(jié)構(gòu)。SegNet是另一代表性結(jié)構(gòu)[7](如圖6),在結(jié)構(gòu)上看,SegNet和U-net其實(shí)大同小異。區(qū)別在于,SegNet沒有直接融合不同尺度的層的信息,而是利用了反池化操作,防止池化過程里像素位置的丟失。反池化是SegNet在池化的時(shí)候保留了最大池化對(duì)應(yīng)的位置索引,然后上采樣的時(shí)候加入了這個(gè)索引,就可以恢復(fù)空間信息了。
在****中使用最大池化索引有幾個(gè)實(shí)際優(yōu)勢(shì):
它改善了邊界的預(yù)測(cè),因?yàn)楸苊饬讼袼匚恢眯畔⒌膿p失;
它對(duì)算力友好,這是由于本身上采樣不會(huì)參與網(wǎng)絡(luò)訓(xùn)練;
這種形式的上采樣可以合并到任何編碼器-****結(jié)構(gòu)中。
圖5 Unet網(wǎng)絡(luò)拓?fù)涫疽鈭D[6]每個(gè)藍(lán)框?qū)?yīng)一個(gè)多通道特征圖
通道的數(shù)量在框的頂部表示。每一層的x-y尺寸在框的左下邊緣提供。白框表示復(fù)制的特征。箭頭表示不同的操作。
圖6 Segnet網(wǎng)絡(luò)拓?fù)鋱D[7]****使用編碼器保留的池化索引對(duì)其輸入進(jìn)行上采樣,以生成稀疏特征映射
多尺度分析是圖像處理中的一個(gè)成熟思想,已被應(yīng)用于各種神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中。Zhao等人開發(fā)了PSPN[8],如圖7所示,利用擴(kuò)展后的殘差網(wǎng)絡(luò)(ResNet)作為特征提取器,這些特征圖被輸入一個(gè)金字塔池模塊,以四種不同的尺度匯集在一起,每一種對(duì)應(yīng)于一個(gè)金字塔級(jí)別,金字塔層的輸出被上采樣,并與初始特征圖連接,以捕獲局部和全局上下文信息,從而可以更好地學(xué)習(xí)場(chǎng)景的全局上下文表示。
圖7 PSPN 網(wǎng)絡(luò)拓?fù)鋄8]
Deeplab系列是這一思想的另一個(gè)重要模型,其中最重要的組件就是Atrous Spatial Pyramid Pooling (ASPP),ASPP模塊。該模塊與上文的金字塔類似,不同在于將普通卷積換成了空洞卷積。空洞卷積設(shè)置了采樣率,在不增加額外開銷的前提下,增強(qiáng)了感受野。除此之外,Deeplabv3之后相對(duì)于先前的版本,在ASPP中加入了BatchNormalization層和特征的全局平均池化。
加入特征的全局平均池化。圖8中的Image Pooling就是全局平均池化,它的加入是對(duì)全局特征的加強(qiáng)。另外,我們也可以把Deeplabv3+模型看成一個(gè)編碼器-****模型。編碼器部分可以利用Xception結(jié)構(gòu),這是一種可以有效減小參數(shù)量的深度可分離卷積。[9-11]
圖8 Deeplabv3+網(wǎng)絡(luò)拓?fù)涫疽鈭D[11]
圖9 ASqueeze-and-Excitation block[12]
Attention toscale[13]這篇論文中提出了一個(gè)基于多尺度注意力的模型。基于特征提取的共享網(wǎng)絡(luò),假設(shè)輸入圖像的大小被調(diào)整至幾個(gè)比例。每個(gè)尺度都通過Deeplab(權(quán)重值在所有尺度上共享),并生成尺度為s的得分圖,表示為
。為了使得不同尺度的得分圖具有相同的分辨率,通過雙線插差值的辦法調(diào)整小尺度的得分圖。最后通道 c,位置 i 特征圖上的值:
其中代表尺度 s 的得分圖中位置 i 的得分值。
3. 缺陷樣本少導(dǎo)致樣本不平衡怎么辦?
首先可以通過損失函數(shù)來改進(jìn)。損失函數(shù)分兩類,一類是基于分布的,一類是基于區(qū)域的。[14]
基于分布的損失函數(shù)常見的就是圖像分類中經(jīng)常用到的交叉熵?fù)p失函數(shù),這是由于語義分割可以看成是每個(gè)像素點(diǎn)的分類問題。交叉熵?fù)p失的問題在于,當(dāng)有缺陷的樣本很少時(shí),它對(duì)于每個(gè)樣本的關(guān)注依然是相同的,這可能會(huì)導(dǎo)致漏檢的發(fā)生。加權(quán)交叉熵以及平衡交叉熵,可以改善這一狀況。
基于區(qū)域的損失函數(shù)最常見的就是Diceloss損失函數(shù)。這一損失函數(shù)首先在醫(yī)學(xué)影像語義分割的背景下提出[6]。從數(shù)學(xué)上它代表著召回率和精準(zhǔn)率的調(diào)和平均值,因此同時(shí)兼顧了漏檢和過檢兩種情況。Diceloss的表達(dá)式如下:
y,p分別代表標(biāo)注值和預(yù)測(cè)的概率值。公式中分子分母同時(shí)加1是拉普拉斯平滑化的結(jié)果,為了避免出現(xiàn)分母為0的情況。基于Dice loss,后續(xù)由相繼提出Tverskyloss, Focel Tversky loss等等。由于Dice loss函數(shù)的非凸特性,可能導(dǎo)致訓(xùn)練時(shí)不收斂,近年來也有Log-CoshDice Loss對(duì)數(shù)損失被提出[14]。
除此之外,數(shù)據(jù)增強(qiáng)也是一個(gè)從原始數(shù)據(jù)集中提取更多信息的方式。數(shù)據(jù)增強(qiáng)的方法大致可以分為兩個(gè)類型:轉(zhuǎn)換現(xiàn)有圖片,標(biāo)簽不變或者創(chuàng)造人工樣本并加入訓(xùn)練集。轉(zhuǎn)換現(xiàn)有圖片常用的方法有幾何變換(如:翻轉(zhuǎn),鏡像,旋轉(zhuǎn))、色彩變換(如:rgb到hsv)、像素變換(高斯模糊,隨機(jī)擦除等)。人工創(chuàng)造則有圖像融合(例如將缺陷裁剪粘貼,泊松融合)、特征空間增強(qiáng)、生成對(duì)抗網(wǎng)絡(luò)等等[15]。
4. 一些思考
工業(yè)缺陷檢測(cè)的指標(biāo)需要具體情況具體分析。有些場(chǎng)景下的工業(yè)缺陷檢測(cè)并不需要逐像素分類準(zhǔn)確,需要知道缺陷種類和大致位置即可,更傾向于“目標(biāo)分類”這樣的任務(wù)。之所以不采取目標(biāo)檢測(cè)的方式,是由于缺陷表現(xiàn)形式不一,很難確定長寬比,從而進(jìn)行錨框的設(shè)置。很多工業(yè)缺陷檢測(cè)的評(píng)價(jià)以計(jì)算機(jī)視覺領(lǐng)域常用的指標(biāo)來判別模型的優(yōu)劣,如mAP(Mean Average Precision,均像素精度)等等,把其看成“目標(biāo)檢測(cè)”或者“目標(biāo)分割”問題,脫離了實(shí)際的工業(yè)應(yīng)用。在實(shí)際應(yīng)用中,應(yīng)該結(jié)合具體情況設(shè)置合適的指標(biāo)。
工業(yè)缺陷檢測(cè)的另一個(gè)問題是不良品樣本會(huì)在產(chǎn)線中不斷產(chǎn)生。這就帶來一個(gè)問題即:能否保持前期訓(xùn)練的模型,利用新數(shù)據(jù)追加訓(xùn)練模型。這就是數(shù)據(jù)增量學(xué)習(xí)(DataIncremental Deep Learning)。常見的增量學(xué)習(xí)有基于正則化,基于回放數(shù)據(jù)等等。以基于正則化的Lwf(learning without forgetting)學(xué)習(xí)為例,這一算法的主要思想是來自于知識(shí)蒸餾,也就除了分類損失,還有一項(xiàng)蒸餾損失,使新模型在新任務(wù)上的預(yù)測(cè)與舊模型在任務(wù)上的預(yù)測(cè)相近,從而避免新任務(wù)的訓(xùn)練對(duì)舊模型過分調(diào)整導(dǎo)致新模型在舊任務(wù)上性能的下降[16]。增量學(xué)習(xí)可能成為未來工業(yè)缺陷檢測(cè)結(jié)合緊密的方向。
參考文獻(xiàn):
[1] S.Minaee, Y. Y. Boykov, F. Porikli, A. J. Plaza, N. Kehtarnavaz, and D.Terzopoulos, "Image segmentation using deep learning: A survey," IEEE Transactions on Pattern Analysis andMachine Intelligence, 2021.
[2] J. Long, E. Shelhamer, and T. Darrell,"Fully convolutional networks for semantic segmentation," in Proceedings of the IEEE conference oncomputer vision and pattern recognition, 2015, pp. 3431-3440.
[3] M. Cordts et al., "The cityscapes dataset for semantic urban sceneunderstanding," in Proceedings ofthe IEEE conference on computer vision and pattern recognition, 2016, pp.3213-3223.
[4] Y. Huang, C. Qiu, and K. Yuan,"Surface defect saliency of magnetic tile," The Visual Computer, vol. 36, no. 1, pp. 85-96, 2020.
[5] W. Liu, A. Rabinovich, and A. C. Berg,"Parsenet: Looking wider to see better," arXiv preprint arXiv:1506.04579, 2015.
[6] O. Ronneberger, P. Fischer, and T. Brox,"U-net: Convolutional networks for biomedical image segmentation," inInternational Conference on Medical imagecomputing and computer-assisted intervention, 2015, pp. 234-241: Springer.
[7] V. Badrinarayanan, A. Kendall, and R.Cipolla, "Segnet: A deep convolutional encoder-decoder architecture forimage segmentation," IEEEtransactions on pattern analysis and machine intelligence, vol. 39, no. 12,pp. 2481-2495, 2017.
[8] H. Zhao, J. Shi, X. Qi, X. Wang, and J.Jia, "Pyramid scene parsing network," in Proceedings of the IEEE conference on computer vision and patternrecognition, 2017, pp. 2881-2890.
[9] L.-C. Chen, G. Papandreou, F. Schroff,and H. Adam, "Rethinking atrous convolution for semantic imagesegmentation," arXiv preprintarXiv:1706.05587, 2017.
[10] L.-C. Chen, G. Papandreou, I. Kokkinos,K. Murphy, and A. L. Yuille, "Deeplab: Semantic image segmentation withdeep convolutional nets, atrous convolution, and fully connected crfs," IEEE transactions on pattern analysis andmachine intelligence, vol. 40, no. 4, pp. 834-848, 2017.
[11] L.-C. Chen, Y. Zhu, G. Papandreou, F.Schroff, and H. Adam, "Encoder-decoder with atrous separable convolutionfor semantic image segmentation," in Proceedingsof the European conference on computer vision (ECCV), 2018, pp. 801-818.
[12] J. Hu, L. Shen, and G. Sun,"Squeeze-and-excitation networks," in Proceedings of the IEEE conference on computer vision and patternrecognition, 2018, pp. 7132-7141.
[13] L.-C. Chen, Y. Yang, J. Wang, W. Xu, andA. L. Yuille, "Attention to scale: Scale-aware semantic imagesegmentation," in Proceedings of theIEEE conference on computer vision and pattern recognition, 2016, pp.3640-3649.
[14] S. Jadon, "A survey of lossfunctions for semantic segmentation," in 2020 IEEE Conference on Computational Intelligence in Bioinformaticsand Computational Biology (CIBCB), 2020, pp. 1-7: IEEE.
[15] C. Shorten and T. M. Khoshgoftaar,"A survey on image data augmentation for deep learning," Journal of Big Data, vol. 6, no. 1, pp.1-48, 2019.
[16] Z. Li and D. Hoiem, "Learningwithout forgetting," IEEEtransactions on pattern analysis and machine intelligence, vol. 40, no. 12,pp. 2935-2947, 2017.
另外筆者在項(xiàng)目實(shí)踐中也曾受到下面文章的啟發(fā),特向作者表示致謝:
https://zhuanlan.zhihu.com/p/375828501
https://blog.csdn.net/scarecrow_wiscom/article/details/102819916
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。