GAN用於(無缺陷樣本)產品表面缺陷檢測
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],當然也可以參考論文里的參考文獻。