2020年8月3日 星期一

【AI HUB專欄】生成對抗網路不只能變臉也能成為異常偵測好幫手


圖/文 歐尼克斯實境互動工作室 許哲豪 2020/7/23

「人工智慧」無中生有的本事是眾所皆知,從早期的自動生成一張超逼真卻不存在世上的人臉,到可隨意替換影像中人臉的Deep Fake,及每隔一陣子就造成社群洗板的變臉濾鏡APP,讓人可任意變成兒童、老人、男(女)生甚至是卡通人物,皆是人工智慧的傑作。除此之外,人工智慧還可學習某些畫作的風格,再套用至一般影像中創作出類似風格的畫作,或者是將早期模糊不清或破損的影像進行修復,包括填補、上色及提高解析度。而「人臉生成」、「風格遷移」及「圖像修復」這些應用(如Fig. 1下圖所示)背後都有一項重要技術,那就是「生成對抗網路(Generative Adversarial Network, GAN)」。

那什麼是生成對抗網路呢?顧名思義,就是有「生成網路(Generator Network)」(以下簡稱生成器)和「鑑別網路(Discriminator Network)」(以下簡稱鑑別器)兩組網路相互對抗(如Fig. 1上圖所示),如同金庸武俠小說「神雕俠侶」中老頑童周伯通的「左右互搏」之術一樣,讓兩手相互攻擊、學習,越練越厲害。舉例來說,假設要生成一張很逼真(虛假)的人臉影像,一開始準備一些真人的人臉影像,讓鑑別器開始學習人臉特徵及參數,此時鑑別能力可能還不是很強。接著以生成器搭配雜訊產生一些虛假的人臉來測試鑑別器是否足夠辨別真偽,直到鑑別器已無法辨識出生成器產生的虛假人臉。再換訓練鑑別器,使其更強大,能辨別生成器產生的虛假人臉影像,接著再訓練生成器,讓它能騙過鑑別器,如此反覆,直到人眼也分辨不出產出的虛假人臉影像是否為真就完成所有訓練。

Fig. 1生成對抗網路架構及應用於人臉生成、風格轉換、圖像修復案例 (OmniXRI July 2020整理繪製)
 Fig. 1生成對抗網路架構及應用於人臉生成、風格轉換、圖像修復案例 (OmniXRI July 2020整理繪製) (點擊圖放大)

在先前文章中已討論過許多不同類型的「異常偵測」技術,如「一元分類型」[1]、「時序型」[2]及「影像型」[3]。在異常偵測中最常會遇到的問題就是有大量負樣本(正常產品)卻很難收集到正樣本(異常產品),加上即使收集到適當數量的正樣本,若缺乏有效的標註、分類及樣本數平衡,就更難得到理想的異常偵測能力,所以如何只藉由正常樣本就能產生足夠辨別的特徵(非監督學習)就變成一項重要課題。

恰好GAN這項技術為「非監督式學習(Unsupervised Learning, UL)」的一種,無需人員介入,也不需事先對資料進行標註,更可以提供「無中生有」及「建立正常樣本基準」的能力。前者可協助彌補資料集不足問題,而後者可以協助找出異常(偏離正常)的樣本,進而可自動標示出異常區域,對於工業生產建立精準「問題」及「對策」是很有幫助的。接下來就針對不同GAN提供的「異常偵測」方法進行說明,包括「AnoGAN」[4]、「BiGAN」[5]及「GANomaly」[6]。

AnoGAN


AnoGAN [4]其架構如Fig. 2 左上圖所示,這種方式是最接近標準型GAN(如Fig. 1上圖)作法。首先取得視網膜影像,如Fig. 2右上圖所示,再將原始彎曲影像預處理成長條型影像,再裁切出很多健康(正常)影像,來反向訓練生成器G及對應的雜訊z潛在空間,使其學習到正常影像應有的特徵及範圍。完成訓練後,生成器G即可令隨機產生的雜訊z產生正常範圍的影像G(z)。

測試時如Fig. 2下圖所示,輸入未見過的影像(Unseen data)和生成器產生的影像G(z)比較,再從正常影像z的範圍中查找出和輸入圖像最接近的z,待生成比對基準影像和輸入影像經鑑別器後,就能得出異常的分數,更能清楚辨識出異常區域。但此種方式最大缺點就是在測試時仍需花很多時間的去找出最合適的z。

Fig. 2 AnoGAN架構圖[4] (點擊圖放大)

BiGAN


為了改善AnoGAN查找速度問題,Zenati等人提出了Efficient GAN-Based Anomaly Detection (EGBAD) [7]將BiGAN [5]架構帶入了異常檢測領域,而BiGAN其主要架構如Fig. 3所示。這項作法最主要多了一組編碼器(Encoder)E,訓練生成器G及得到z的潛在空間時,同時將樣本送至編碼器E訓練並得到輸入資料x及編碼後E(x)結果,最後再將(x, E(x))和(G(z), z)兩組數據一起送到鑑別器D進行對抗訓練,換句話說整個過程就是G和E聯手來騙D的對抗過程。

最後得到模型期望輸入的資料等於經編碼的特徵透過生成器產生的結果x = G(E(x)),而雜訊潛在空間為生成器產生的影像經編碼後的結果z = E(G(z))。如此雙向作法,讓D鑑別產生結果機率P(y),如果認為資料來自G則輸出為真,反之來自E則輸出為偽。

Fig. 3 BiGAN架構圖[5] (點擊圖放大)

GANomaly


如前面所述,一般正常樣本數量會大大於異常樣本數量,難以用一般二元(正常/異常)分類,因此多半會選擇學習大量正常樣本的特徵做為基準,當新樣本異於正常樣本範圍時就視為異常。其中自動編碼器(Auto Encoder) [1][3]技術經常被使用,它屬於非監督學習技術的一種,不需人員介入。而Samet Akcay等人就借用這種概念,延伸用來進行異常偵測,稱為「GANomaly」 [6]。

從Fig. 4圖中上半部可看出,原始影像x經過第一段編碼器(Encoder) G_E (x)得到第一段特徵z,再經過第一段解碼器(Decoder) G_D (z)得到重建影像x ̂,再將其進行第二段編碼E(x ̂)得到第二段特徵z ̂,訓練時令二段產生的特徵z-z ̂盡可能接近,如此即可構成GAN中生成器G的作用。接著再讓輸入影像和重建影像送入鑑別器D(x,x ̂)進行訓練,得到影像內容真偽的結果f(.)。最後再透過反覆生成對抗,就能得到理想的生成器G和鑑別器D,同時綁定編解碼產出的特徵及影像生內容的效果。

Fig. 4 GANomaly架構圖[6] (點擊圖放大)

小結


從以上說明大概可得知生成對抗網路(GAN)無中生有、建構虛假內容的本事不僅可以用在人臉生成(變臉)、影像風格遷移及影像修復等工作,更可藉此分析大量正常資料集的基準以利異常的偵測。雖然GAN有著不錯的資料變形生成能力,但還是無法超出訓練資料集太多的範圍,就像用一堆人臉來訓練GAN可生成不錯的人臉,但肯定無法生成動物的臉,因為資料集中根本沒有。同理可知若想提升異常偵測的能力,那訓練資料集還是要滿足一定的多樣性,不然就容易發生漏報的情況發生。透過此次介紹的AnoGAN, BiGAN(EGBAD), GANomaly,大家可以更理解異常偵測的原理,只要適當導入生產線並實驗適用範圍,相信良率提升、降低生產成本必定不難達成。

*本文同步發行於歐尼克斯實境互動工作室部落格AI HUB,歡迎連結至AI HUB網站【社群互動】下【AI技術交流區】瀏覽更多精采文章*

參考文獻


[1] 許哲豪,導入AI異常偵測技術讓傳產也能邁向智慧製造
http://omnixri.blogspot.com/2020/06/ai-hubai.html

[2] 許哲豪,如何利用時序型資料異常偵測提昇智慧製造成效
http://omnixri.blogspot.com/2020/06/ai-hub.html

[3] 許哲豪,導入AI表面瑕疵異常偵測提升智慧製造品質
http://omnixri.blogspot.com/2020/07/ai-hubai.html

[4] Thomas Schlegl et al., Unsupervised Anomaly Detection with Generative Adversarial Networks to Guide Marker Discovery (AnoGAN)
https://arxiv.org/abs/1703.05921

[5] Jeff Donahue et al., Adversarial Feature Learning (BiGAN)
https://arxiv.org/abs/1605.09782

[6] Samet Akcay et al., GANomaly: Semi-Supervised Anomaly Detection via Adversarial Training (GANomaly)
https://arxiv.org/abs/1805.06725

[7] Houssam Zenati et al., Efficient GAN-Based Anomaly Detection (EGBAD)
https://arxiv.org/abs/1802.06222



沒有留言:

張貼留言

【頂置】簡報、源碼、系列文快速連結區

常有人反應用手機瀏覽本部落格時常要捲很多頁才能找到系列發文、開源專案、課程及活動簡報,為了方便大家快速查詢,特整理連結如下,敬請參考! Edge AI Taiwan 邊緣智能交流區 全像顯示與互動交流區 台科大(NTUST) 人工智慧與邊緣運算實務 開南大學...