1.前言

深度學習在計算機視覺主流領域已經應用的很成熟,但是在工業領域,比如產品表面缺陷檢測,總感覺沒有發揮深度學習的強大能力,近幾年表面缺陷的 相關研究主要是集中在各種借鑒主流神經網路框架,從CNN到YOLO,SSD,甚至到語義分割的FCN相關論文,通過一些技術,對框架進行輕量化,對缺陷進行分類或檢測。不過,逃不出一個問題:一定要有缺陷樣本可供訓練,而且數量不能太少!當然,也有一些課題組使用稀疏編碼、字典學習、稀疏自編碼等對錶面缺陷進行檢測,這類方法很有局限性,主要針對那些有周期性背景紋理的圖像,比如絲織品,印刷品等。國內外很多課題組、工業軟體公司都想開發出一些切合實際應用的演算法軟體,在缺陷檢測領域,比較好的公司有:VIDI、Halcon等,聽說海康威視也在搞工業產品方便的演算法研究。

開始說下這篇文章,文章是今年發表的,題目為(本想直接給下載好的文章鏈接,知乎審核說違規,論文被施普林格收錄,單pdf文件下載鏈接我放到評論里):

A Surface Defect Detection Method Based on Positive Samples

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

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

通俗說:

作者利用GAN在圖像修復(重建)上的能力,在工業現場收集一些正常(無缺陷)樣本,人工PS一些缺陷,比如線條、斑點等。

訓練時,將PS的人工製作的缺陷圖像和原圖像做輸入樣本訓練GAN,得到一個具有圖像修復重建能力的網路。

測試時,直接使用訓練好的GAN對採集到的圖像進行重建修復,如果樣本中中有缺陷區域,缺陷區域按照網路設計,肯定需要修復,將修復後的圖像和原缺陷圖像使用LBP找出顯著差異區域即為缺陷區域。

2.文章主要內容

論文的主體框架思想是基於GAN網路的結構。GAN 主要包括了兩個部分,即生成器 G與判別器 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.


推薦閱讀:
相关文章