圖/文 歐尼克斯實境互動工作室 許哲豪 2020/6/25
在前兩篇「導入AI異常偵測技術讓傳產也能邁向智慧製造」[1]和「如何利用時序型資料異常偵測提昇智慧製造成效」[2]中已幫大家介紹過關於智慧製造中常會遇到的「一元分類型(One-Class Classification)」及「時序型(Time-Series)」資料異常偵測(Anomaly Detection, AD),而這些作法大多僅適用在單一信號源或低維度資料,而本文將繼續延伸至超高維度的「影像類型(Image Type)」異常偵測,藉此說明如何利用人工智慧來提升產品製造品質。
一般影像類型異常偵測可分為「單分類(Single-Class)」及「多分類(Multi-Class)」。前者偵測出的異常類又可分為屬於正常但未見過的「新型態(Novelty)」及根本不屬於正常類別範圍的「離群者(Outlier)」。而後者則至少分為兩類,可以是不同的正常類型,若分類超過兩類則將各類「分佈範圍內(In-Distribution)」資料視為正常,「分佈範圍外(Out-of-Distribution)」視為異常。
如Fig. 1上圖所示,在單分類時,若黃色的貓是正常,那黑、白、混色、條紋貓雖然也是貓,但仍會被視為異常,未來可視需求重新歸類到正常類。而像老虎、豹、獅子這類貓科動物,因外表實在差很多,會被歸類到「離群者」,所以一定會被視為異常。而如Fig. 1下圖所示,在多分類時,若假設手寫的數字0到9視為正常範圍內,那街道上出現的那些數字就不在範圍內,屬於異常範圍。
Fig. 1 影像類型異常偵測分類示意圖(OmniXRI 2020/6/25整理繪製)(點擊圖放大) |
在智慧製造中,用影像來進行「品質(瑕疵)檢測」或「異常偵測」是非常常見的手段。早期可能會稱其為「機器視覺(Machine Vision, MV)」或「自動光學檢測(Auto Optical Inspection, AOI)」,主要依賴專家提供的領域知識加上數位影像處理手段及少部份機器學習算法組成視覺檢測系統。近年來因人工智慧相關算法崛起,因此開始有了以「深度學習」技術為主的「智慧視覺檢測系統(Intelligent Vision Inspection System)」。
這些系統可以應用到各種製造產業,其系統主要由相機、鏡頭、光源、影像擷取及計算(軟、硬體)等單元構成,提供了如「缺(多)件」、「尺寸量測」、「圖像識別」、「物件定位」、「物件分級」、「表面瑕疵」、「色彩」、「亮度」、「深度(距離)」等項目的分析、計算功能。
其中又以「表面瑕疵檢測(異常偵測)」應用最廣,同時也最為複雜,包括「刮(折)痕」、「裂(凸)縫」、「凹(凸)點」、「穿孔(凸起)」、「缺(重)印」、「污染」、「摩擦」、「扭曲」、「破損」、「色偏」、「色散」等問題。人們通常不容易訂出明確的檢測規範,如長度、寬度、面積、顏色、形狀等,導致經常會發生異常當成正常的「漏報(Underkill)」或正常當成異常的「誤殺(Overkill)」,造成產品不良率提高及人工複檢時間大幅增加。
在表面瑕疵檢測問題上,同樣會遇到有大量正常影像資料集,卻難以收集到異常影像的問題,同時對於異常的分類也很難定義邊界。若只是以「物件偵測(Object Detection)」技術在影像上標出一個方框來表示異常發生的位置,通常是很難滿足現場需求。因此大部份都會用到影像「語義分割(Semantic Segmetation)」技術來精準地判定每個像素是正常或是異常。另外由於不同材料表面會造成不同類型的瑕疵(異常),需要應用不同的解決方案,本文無法一一涵蓋,只能先針對較常見的表面瑕疵「刮痕」、「裂縫」及「孔洞」等問題的異常偵測方法做一簡單介紹。接下來會依「語義分割」技術衍生的不同作法來進行說明,主要包括「基於完全卷積網路(Fully Convolutional Network-Based)」、「基於編/解碼器(Encoder/Decoder-Based)」及「基於分割/決策(Segmentation/Decision-Based)」等表面瑕疵檢測(異常偵測)技術。
基於完全卷積網路瑕疵檢測
一般提及深度學習就一定會說到最基本的「卷積神經網路(Convolution Neural Network, CNN)」,其利用大量的卷積(Convolution)、池化(Pooling)及全連結(Full Connection)就能順利的進行單張影像分類。而為了能進行像素等級的分類及定位,只要把最後幾層的全連結層替換成卷積層就能還原出原尺寸影像,如此即能做到對每個像素分類,於是就把這種方法稱為「完全卷積網路(Fully Convolutional Network, FCN) 」,如Fig. 2上圖所示。不過這種作法缺點就是池化過程中會令影像尺寸縮小,導致還原成原尺寸時內容較不精準、邊界較為粗糙。為了改善這個問題,則需加入不同層(不同解析度)內容的資訊進行融合,如此就能得到較精準的邊界,如Fig. 2下圖所示。
Fig. 2 完全卷積網路語義分割示意圖[3](點擊圖放大) |
在[4]中利用FCN的概念進行輪胎X光影像的瑕疵檢測,所有影像像素最後會被分類成異常(白色)和正常(黑色),如Fig. 3下圖所示,由左至右分別為胎面瑕疵二種、胎壁瑕疵四種(氣泡、鬆弛、重疊及雜質)。其主要工作流程如Fig. 3上圖所示,上半部利用卷積及池化提取特徵,下半部則將提取出的特徵進行上採樣(Up-sampling)放大至影像原尺寸,最後再將所有特徵融合得到完整輸出結果,具有像素分級且較精準的瑕疵圖。
Fig. 3 基於完全卷積網路之語義分割應用於輪胎表面瑕疵檢測[4](點擊圖放大) |
基於編/解碼器瑕疵檢測
在先前異常偵測介紹[1][2]中,有提及一種非監督學習的作法「自動編碼器(Auto-Encoder)」技術,它主要利用反覆卷積及池化動作的「編碼器(Encoder)」提取影像低維度特徵,再反向操作,利用「解碼器(Decoder)」進行反卷積(deconvolution)及上池化(Up-pooling)(或稱上採樣(Up-sampling))動作還原至原尺寸影像,如此即可訓練出合適的網路,如Fig. 4所示。
Fig. 4 編/解碼器網路語義分割示意圖[3](點擊圖放大) |
在此類概念下,後來逐漸又演化出模型外觀看起來像字母U的U-Net,在解碼過程同時加入編碼過程中產出的同尺寸結果影像一起訓練,如此即可得到更穩定的輸出。在[5]中就是借用U-Net這種概念,同時加入Push的全連結網路來預測異常的外框(Bounding Box)位置,其網路結構如Fig. 5上圖所示。而[5]用此來偵測一種磁性拼磚玩具的表面瑕疵,如Fig. 5下圖所示,可偵測孔洞(Blowhole)、裂紋(Crack)、破碎(Break)、磨損(Fray)、不均勻(Uneven)等五種瑕疵及無瑕疵(Free)等狀況,不僅明確標示出有瑕疵的像素,更可為不同類型瑕疵進行分類,方便後續檢討製程需改善的地方。
Fig. 5 基於編/解碼器之語義分割應用於磁性拼磚表面瑕疵檢測[5](點擊圖放大) |
基於分割/決策瑕疵檢測
在[6]中提出了一種兩段式的結構,前段稱為分割網路(Segmentation Network) ,後段則稱為決策網路(Decision Network),如Fig. 6上圖所示。前段和一般卷積網路類似,只是在最後一層採用一個1x1x1024的卷積核把到數第二層的1024組結果降維到一組分割輸出結果,為原圖1/8大小,即為瑕疵的遮罩(Mask)。
而此同時將其結果合併到原來的1024組結果開始決策網路。接著再經過數次卷積、池化得到1/16原圖大小,如Fig. 6上圖右下方所示。然後再將分割輸出和這些結果分別進行全域最大池化(Max Pooling)和平均池化(Average Pooling)。最後合併起來作全連結層運算即可得到分類(異常機率)結果,如Fig. 6上圖右上方所示。如Fig. 6下圖所示,即為馬達轉子表面裂縫瑕疵檢測結果示意圖。
Fig. 6 基於影像分割之語義分割應用於馬達轉子表面瑕疵檢測[6](點擊圖放大) |
表面瑕疵公開資料集
一般通用型的影像資料集大多可在公開管道取得,像ImageNet, MS CoCo不僅分類繁多且標註數量、品質皆有一定水準,因此大多數的應用都能順利完成模型開發及訓練。但通用型資料集的特性及內容和工業生產用的影像相差太多,不易當成預訓練(Pre-training)或遷移學習(Transfer Learning)的資料集,且生產用影像多半有商業機密考量不易取得,造成想開發相關算法(模型)的人遇到很多麻煩。這裡幫大家收集了幾個表面瑕疵參考資料集,希望能有助於後續的開發及測試。
1. Kaggle - DAGM 2007 competition dataset, Weakly Supervised Learning for Industrial Optical Inspection
分成10組資料集(不同類型瑕疵),前6個於開發模型,後4個用於競賽評估,另帶有瑕疵標註(遮罩)資料。前6個資料集每個分別有1000張無瑕疵及150張有瑕疵灰階影像。而後4個資料集則每個有2000張無瑕疵及300張有瑕疵灰階影像。
https://www.kaggle.com/mhskjelvareid/dagm-2007-competition-dataset-optical-inspection
2. Kaggle - Severstal: Steel Defect Detection
鋼板表面瑕疵資料集,四種瑕疵,訓練集共12,538張,測試集5,476張。
https://www.kaggle.com/c/severstal-steel-defect-detection
3. (中國)東北大學機械工程與自動化學院宋克臣博士實驗室
熱軋鋼帶表面瑕疵資料集,六種瑕疵(氧化、斑塊、裂痕、點蝕、內含物、刮痕),每一種有300個樣本,共1,800張灰階影像。
http://faculty.neu.edu.cn/yunhyan/NEU_surface_defect_database.html
4. 中國科學院大學自動化所
磁性拼磚表面瑕疵資料集,六類瑕疵(孔洞、刮痕、破裂、磨損、不均勻及正常)共1,344張影像。
https://github.com/abin24/Magnetic-tile-defect-datasets.
5. 斯洛維尼亞盧布爾雅那計算機與信息科學學院視覺辨識系統實驗室(VCSL)
Kolektor Surface-Defect Dataset
轉子表面瑕疵資料集,共50個實體物件,每個物件取8張影像,合計399張影像,52張有瑕疵。
https://www.vicos.si/Downloads/KolektorSDD
小結
在智慧製造中表面瑕疵檢測(異常偵測)是非常重要的技術,透過人工智慧(深度學習)的相關算法可大幅改善以往條件式(Rule-Based)專家系統,值得多花點時間研究。本文篇幅有限無法一一道盡所有作法,除了上述提及三種作法外,還有很多語義分割技術(11大類)[3]亦可滿足瑕疵偵測方式。而非深度學習的視覺算法也有很多,[7]收錄了五大類共220篇相關文獻,想要深入研究朋友可參考一下。
*本文同步發行於歐尼克斯實境互動工作室部落格及AI HUB,歡迎連結至AI HUB網站【社群互動】下【AI技術交流區】瀏覽更多精采文章*
參考文獻
[1] 許哲豪,“導入AI異常偵測技術讓傳產也能邁向智慧製造”
https://omnixri.blogspot.com/2020/06/ai-hubai.html
[2] 許哲豪,“如何利用時序型資料異常偵測提昇智慧製造成效”
https://omnixri.blogspot.com/2020/06/ai-hub.html
[3] Shervin Minaee et al., "Image Segmentation Using Deep Learning: A Survey"
https://arxiv.org/pdf/2001.05566.pdf
[4] Ren Wang et al., "Tire Defect Detection Using Fully Convolutional Network"
https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=8678643
[5] Yibin Huang et al., "Surface Defect Saliency of Magnetic Tile"
https://www.researchgate.net/publication/325882869_Surface_Defect_Saliency_of_Magnetic_Tile
[6] Domen Tabernik et al., "Segmentation-Based Deep-Learning Approach for Surface-Defect Detection"
https://arxiv.org/abs/1903.08536?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+arxiv%2FQSXk+%28ExcitingAds%21+cs+updates+on+arXiv.org%29
[7] Tamás Czimmermann et al., "Visual-Based Defect Detection and Classification Approaches for Industrial Applications—A SURVEY"
https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7085592/
好像都需要 Ground truth mask,開發成本挺高的
回覆刪除如果是走監督型學習的方式才需有Ground truth來進行學習,若採非監督型的就不需要,此次介紹的主要是以非監督式的方式。另外若是表面瑕疵的GT建立,大多可透過傳統電腦視覺中的色彩(亮度)提取、邊緣提取加上膨漲算法或者超像素(super pixel)等方式提取出來,和提取自然影像中的物件來比相對簡單許多。且就算要人工標註,通常這類瑕庛影像不易取得,所以不會有成千上萬的影像要標註,每張花個幾分鐘應該也不是太麻煩的事。
刪除