1. 程式人生 > >使用深度學習 進行缺陷檢測,GAN用於表面缺陷檢測

使用深度學習 進行缺陷檢測,GAN用於表面缺陷檢測

使用深度學習 進行缺陷檢測

連結: 千順智慧.

資料庫–

GRIMA database

http://dmery.ing.puc.cl/index.php/material/gdxray/

steel surface defects – Micro surface defect database

faculty.neu.edu.cn/me/songkc/vision-based_SIS_Steel.html

faculty.neu.edu.cn/yunhyan/SCACM.html

https://github.com/abin24/Magnetic-tile-defect-datasets

https://github.com/abin24/For-share

https://github.com/cuilimeng/CrackForest-dataset

https://github.com/maweifei/Bridge_Crack_Image_Data

前言
深度學習在計算機視覺主流領域已經應用的很成熟,但是在工業領域(某些領域應用也很成熟),比如產品表面缺陷檢測,總感覺沒有發揮深度學習的強大能力,近幾年表面缺陷的 相關研究主要是集中在各種借鑑主流神經網路框架,從CNN到YOLO,SSD,甚至到語義分割的FCN相關論文,通過一些技術,對框架進行輕量化,對缺陷進行分類或檢測。不過,逃不出一個基礎:一定要有缺陷樣本可供訓練,而且數量不能太少!當然,也有一些課題組記住稀疏編碼、字典學習、稀疏自編碼等對錶面缺陷進行檢測,這類方法很有侷限性,主要針對那些有周期性背景紋理的影象,比如絲織品,印刷品等。

很多課題組、工業軟體公司都想開發出一些切合實際應用的演算法軟體,在缺陷檢測領域,比較好的公司有:VIDI、Halcon等,聽說海康威視也在搞工業產品方便的演算法研究。

下面開始說下這篇文章,文章是今年發表的,我不知道前人有沒有這樣的嘗試,作者提出只依據已有的正常表面影象樣本,通過一定的技術手段對缺陷樣本進行檢測,很好的將最近研究火熱的GAN應用於框架中,這一年,課題組的老師也一直討論這種方法的可行性,缺陷的檢測要不要有缺陷樣本,從稀疏自編碼,小樣本學習再到計算機視覺研究熱點之一的零樣本學習,得出結論:大多數工業產品表面缺陷檢測是需要缺陷樣本或者人為製作的缺陷樣本,論文雖然是沒有直接使用生產線上的缺陷樣本,但是通過演算法人為的產生了缺陷樣本,並很好的融合和GAN在影象修復領域的強大能力,整個框架的設計很巧妙。

論文下載連結:A Surface Defect Detection Method Based on Positive Samples

文章思路:論文的整體思路就是GAN在影象修復和重建方便具有很強大的能力,通過人為的去在正常樣本上“隨意”新增一些缺陷,訓練階段讓GAN去學習一個可以修復這些缺陷區域的網路,檢測階段時,輸入一個真實缺陷樣本,訓練好的GAN會對其進行修復,再基於LBP可完成缺陷檢測。整個演算法框架不需要真實的缺陷樣本和手工標籤,但是在框架中通過人工會產生一些缺陷區域。

具體實施:

(1)結合GAN和Autoencoder演算法進行影象樣本修復(重建);

(2)利用LBP演算法比較恢復後的影象和原始輸入影象,從而更準確的找到缺陷的位置。

2.文章主要內容
論文的主體框架思想是基於GAN網路的結構。GAN 主要包括了兩個部分,即生成器 generator  G與判別器 discriminator D。生成器主要用來學習真實影象分佈從而讓自身生成的影象更加真實,以“騙過”判別器。判別器則需要對接收的圖片進行真假判別。在整個過程中,生成器努力地讓生成的影象更加真實,而判別器則努力地去識別出影象的真假,這個過程相當於一個博弈過程,隨著時間的推移,生成器和判別器在不斷地進行對抗,最終兩個網路達到了一個動態均衡:生成器生成的影象接近於真實影象分佈,而判別器識別不出真假影象,對於給定影象的預測為真的概率基本接近 0.5(這段話從李巨集毅老師那引用的,致敬李老師)。


訓練階段示意圖
訓練階段
在訓練階段,模型採用一些影象處理技術,人為的在正常樣本影象上產生一些缺陷(示意圖中的紅色框模組),使用由自編碼器構成的G模組進行缺陷修復學習,學習的目標是與正常樣本之間的L1範數最小,通過一定數量的樣本訓練可以獲得有缺陷修復能力的G模組。GAN用於影象修復的一些資料可以參考[3][4],當然也可以參考論文裡的參考文獻。


測試階段
測試階段
在測試階段,將上步驟訓練好的G模組作為測試階段的圖片修復模組,對於輸出的影象樣本,假如存在缺陷區域,通過修復模組G將得到修復後的影象,與原缺陷樣本影象一起作為LBP演算法的輸入,通過LBP演算法對其缺陷區域進行精確定位。

3. 其他細節
3.1缺陷生成

在實際訓練中,論文作者手工生成一些缺陷樣本,如圖3所示,訓練網路自動修復缺陷。另外作者也通過一些技術進行了樣本的擴充,比如加入高斯噪聲、隨機resize大小等。


缺陷生成
3.2缺陷影象重建

缺陷影象重建部分主要的作用是:缺陷影象重建後儘量和正常樣本一樣,作者在這部分在文獻[5][6]基礎上進行框架修改的,比如使用L1 distance作為衡量重建差異的目標函式。

然後實驗中作者又發現只使用L1不行,影象邊緣等細節可能會衡量不準確,又加入GAN loss來提升網路的重建效果。


標題
 最後,得到了下面目標函式。

3.3缺陷檢測

因為使用GAN修復後的圖片和原始缺陷樣本圖片之間在畫素級的細節上有一些差異,作者使用了前幾年在人臉領域應用比較好的LBP演算法進行缺陷區域的檢測,這裡不介紹演算法的細節,示意圖如下。

 

4.實驗
文章對DAGM 2007資料集和織物密集影象進行了驗證實驗。實驗表明,提出的GAN+LBP演算法和有足夠訓練樣本的監督訓練演算法具有較高的檢測準確率。實驗使用兩種型別的資料集,4.1是印花紋表面,4.2是織物表面。

4.1Texture surface


測試樣本

結果對比

a.原始影象,b.修復影象,c.論文方法,d. FCN方法,e.真實標籤
4.2Fabric Picture

實驗中缺陷樣本的型別有五種。實驗樣本按背景分有三類,每類包含5個缺陷樣本,25個正常樣本。


測試樣本

結果對比
 


測試結果
a.原始影象,b.修復影象,c.論文方法,d. FCN方法,e.真實標籤
參考文獻

[1] Zhao Z, Li B, Dong R, et al. A Surface Defect Detection Method Based on Positive Samples[C]// Pacific Rim International Conference on Artificial Intelligence. Springer, Cham, 2018:473-481.

[2] Wu X. Fully Convolutional Networks for Semantic Segmentation[J]. Computer Science, 2015.

[3] Li Y, Liu S, Yang J, et al. Generative Face Completion[J]. 2017.

[4]. Yang C, Lu X, Lin Z, et al. High-Resolution Image Inpainting using Multi-Scale Neural Patch Synthesis[J]. arXiv preprint arXiv:1611.09969, 2016.

[5]Image-to-Image Translation with Conditional Adversarial Networks

[6]Unsupervised representation learning with deep convolutional generative adversarial networks
--------------------- 
作者:慶志的小徒弟 
來源:CSDN 
原文:https://blog.csdn.net/qq_27871973/article/details/82683043 
版權宣告:本文為博主原創文章,轉載請附上博文連結!