本文將探討生成對抗網路(GAN)與圖像轉譯(Image Translation)技術,帶大家一領圖像轉譯的風采,了解該技術背後的原理與概念,並使用Python程式語言實作「圖像轉譯」技術中的應用,將一般圖像變成莫內風格,以此體會GAN的威力。
圖像轉譯(Image Translation)技術近期在一些社群平台如Instagram、Facebook、TikTok中掀起一波風潮,平台中的用戶們紛紛將自己的照片進行圖像轉譯,使其成為完全不同風格的模樣,並在這些平台中彼此互相分享與交流,較常見的是將自己的圖像風格轉變為動漫風格,也有將拍攝的風景照片轉換成水墨畫的風格、甚至能將一幅畫作從寫實派轉換成印象派、抽象派等等,這項技術的誕生讓許多人感到嘖嘖稱奇。
如今要能達成這樣的效果已經不是件難事,有許多App已經陸續上架,常見的App包含了相片大師、Cartoon Yourself、Sketch Me!、ToonArt、美圖秀秀等等,使用者只需要開啟App,動動手指上傳相片,選取自己想要的風格,簡單幾個步驟就能夠取得一張與眾不同且獨具特色的照片。在這些有趣的技術與應用背後,都歸功於AI、機器學習(Machine Learning,ML)以及深度學習(Deep Learning,DL)技術,這些技術除了圖像上的應用,在許多不同領域與人們生活當中也都扮演著重要的角色,例如手機的人臉辨識功能、行動裝置的語音助理、影音平台YouTube影片推播的演算法、自動駕駛車輛的行人偵測等等,這些皆是AI技術的應用,可見AI技術已經從千百個層面深入人們的生活,然而,這些技術的應用對於人們似乎早已經習以為常。
值得一提的是,過往的AI常被人們視為解決高重複性問題的工具,對於從無到有的靈感創作可能還有一段距離,不過現今已經有項名為「生成對抗網路(Generative Adversarial Network,GAN)」的技術打破了這個限制,並為AI技術賦予更多可能性與創造力,GAN成為了AI創作與圖像轉譯的核心技術。不過,任何的科技都是把雙面刃,本文除了探討圖像轉譯技術外,也會說明這樣的技術如何在產業中進行運用,以及了解可能帶來的隱憂。
AI創作技術的基礎
首先,將探討AI創作技術的基礎與發展背景。
圖像轉譯技術說明
「圖像轉譯(Image Translation)」又稱為「影像轉譯」或「影像翻譯」,這項技術能夠將圖像透過AI深度學習模型進行風格轉換,將一張影像從原始的畫面轉換成一張別具風格的畫面,舉例來說,可以將現實的風景照片轉換成虛擬的動畫世界,或是將油墨畫轉換成素描畫、將現實的人物轉換成虛擬的Q版人物等等。
在圖1中,即為透過圖像轉譯技術的效果,運用應用程式「美圖秀秀」將現實世界的相片轉換成虛擬的動畫世界風格,呈現的效果好比一個漫畫家按照原始的照片進行仿畫一般,然而現在卻可以透過AI技術一鍵完成並具有一定的高品質。
AI創作與圖像轉譯技術的產業應用
在雜誌媒體、廣告這類設計相關的產業當中,時常需要大量繪圖及創意靈感,而透過AI繪圖技術的幫助,能夠快速地建立草稿,設計師也能夠參考AI製作的草稿圖中來取得靈感,後續再加以精修。除此之外,透過AI繪圖技術,客戶也能夠在短時間內預覽各式不同風格的成品,可以有效縮短交易時間並提高交易成功的機會。
AI創作與圖像轉譯技術的潛在隱憂與爭議
除了正向發展之外,AI創作與圖像轉譯技術也存在一些潛在隱憂與爭議:
在訓練AI創作與圖像轉譯的模型時,所使用的訓練資料往往來自一些在網路上有名的畫師或是漫畫家的作品進行訓練,此時AI所創作的圖像風格就非常有可能與這些創作者產生的作品非常雷同,至今仍未有明確的法條規範AI創作的著作權所屬,且目前已經有許多網路畫家與藝術家成為AI創作的苦主,卻沒有明確的管道發聲與主張版權。
由於透過AI創作能夠模仿出特定畫風的作品,若有心人士拿此技術去做惡意的仿造與重製,例如使用一個特定畫家的風格去製作黃色成人漫畫,並發布到網路上用該畫家的名義進行販售,則可能會侵害該名畫家的權利和名譽。
相較於人類而言,AI創作能以極高的速度和效率創作大量作品,倘若這些技術的門檻降低時,客戶會選擇自行使用AI技術來產生圖片,便不會選擇花錢去找尋設計業者。當客戶都投向AI創作的作品時,設計產業的需求便會減少,業者則可能需要透過降價或其他策略才能保留或吸引客群。
認識人工智慧、機器學習、深度學習
欲了解圖像轉譯的概念與原理,應先具備人工智慧(Artificial Intelligence,AI)、機器學習(Machine Learning,ML)、深度學習(Deep Learning,DL)的基本知識,這三者之間的關係環環相扣,關係圖如圖2所示。AI是一個大範圍的概念,即圖2中最大的集合,而ML包含於AI,即AI的子集合;DL則是包含於AI與ML之中。
人工智慧(AI)
人工智慧這個詞最早出現於1950年代,當初提出這個想法是希望透過電腦程式的設計能讓機器像人類一樣具有思考、學習的能力,進而運用在各種領域,如醫療業、金融業、工業等等。
到了當今,AI的興盛與硬體的進化脫離不了關係,電腦硬體的快速發展帶動運算速度的大幅提升,使AI有了更廣泛的應用。人類及電腦所建立的資料量已經大幅超越人類大腦所能吸收,許多複雜的運算等等都不是人類所能應付,因此透過AI及更快速的運算技術大幅提升決策的速度與品質。舉下棋來說,每一步的走法可以延伸出成千上萬種結果,就算是下棋高手也不可能全都顧慮到,但對應到電腦,電腦的快速運算使每種結局都有辦法快速地模擬出來,進而下出最好的一步。
機器學習(ML)
達到人工智慧的過程,就是所謂的機器學習。機器學習透過大量的「輸入訓練資料」,並由人工進行「特徵擷取」後,再交給各類型「演算法」進行分析、學習,讓機器依照人們提出的特徵進行分類,進而判斷資訊或預測資訊。
舉貓與狗的判斷方式來說,可能會根據動物的一些特徵來加以判斷,例如「耳朵尖的是貓、圓的是狗」,又或者是「貓的眼珠是一條線、狗的則是圓型」,那麼這些就會對應機器學習中的特徵擷取,接著根據輸入的資料中所具備的不同特徵進行學習,讓機器能夠運用這些特徵來判斷預測的結果,當訓練完成後,將會得到所謂的「模型(Model)」,最後即可輸入一些在訓練過程中從未使用的「貓」與「狗」的照片資料,讓模型加以判斷以驗證該模型是否成功學習判斷貓與狗的能力。
深度學習(DL)
深度學習屬於AI與機器學習的範疇,換種說法,深度學習就是一種達成機器學習的方法,但在深度學習中,多了人工神經網路(Artificial Neural Network,ANN)的概念,深度學習與機器學習最大的不同之處,在於「特徵擷取」的方式,機器學習需要透過人工的方式來擷取特徵;而深度學習則可透過神經網路的架構自動地進行特徵擷取,並加以判斷與分類,其中一個最常見的神經網路架構稱為「卷積神經網路(Convolutional Neural Network,CNN)」,它負責進行特徵的提取,以減輕透過人工方式擷取特徵的成本,再提取完特徵後,將這些特徵作為人工神經網路的輸入,再讓模型學習如何判斷與辨識輸入的內容。
人工神經網路(ANN)
人工神經網路(ANN)是深度學習中最核心的概念,它主要是想模擬生物中神經的傳導的模式,並試圖套用在電腦上。人工神經網路的架構是由大量人工神經元(Neural)所組成,其中每個神經元就像一個處理器,負責處理一個項目,這些神經元會被分成許多層,外界的訊號透過輸入層傳遞給隱藏層神經元,隱藏層負責分析、處理,通常會有很多層,層數的多寡取決於處理的複雜度,最後再傳至輸出層並做出判斷與反應,其架構如圖3所示。簡單來說,就是利用大量的人工神經元互相連接並進行個別訊息的處理,處理後再傳遞給下一個人工神經元,透過多層的處理來達到學習的效果。
神經網路架構中每條連接可以視為一個運算元,可以做加、減、乘、除等運算,同時每個神經元都會有一個相對應的原始權重(Weight),而需要透過大量的資料輸入來做模型訓練,目的是調整每個神經元的權重,以使輸出與正確答案之間的誤差最小,而最後調整完成的權重組合與演算法,就是所謂的「模型」。
以車牌辨識系統為例,先將大量含有車牌的圖片做為訓練資料輸入至神經網路,同時必須給它正確答案,這個答案即為標籤(Label),也就是人工標記的車牌位置,與對應的車牌號碼。接著,透過神經網路中的各個神經元去大量訓練學習與調整權重,然後計算正確答案與預測答案之間的誤差,利用多次的訓練回合將誤差最小化,這個回頭調整權重的過程稱作反向傳播(Backpropagation),最終就得到一個可以辨識車牌的模型。
生成對抗網路(GAN)介紹
生成對抗網路(Generative Adversarial Network,GAN)是屬於深度學習與人工神經網路的一種演算法,它的架構由兩個神經網路組成,分別為鑑別網路(Discriminating Network)與生成網路(Generative Network),圖4為其架構示意圖。生成網路的任務是負責產生出預期的結果;鑑別網路則負責判斷生成網路產生的事物是否與預期的相符,然後再將判斷結果回饋給生成網路,使生成網路可以透過回饋進行改良,在這個對抗的過程中,生成網路在產生的過程當中並無看過正確的結果,唯有鑑別網路看過,因此能夠賦與生成網路能從無到有創作圖片的能力。
舉例來說,可以將GAN想像成「繪製假畫的仿畫師」與「辨識贗品的鑑定師」之間的對決,仿畫師扮演生成網路的角色,而鑑定師扮演鑑別網路的角色,仿畫師嘗試畫出能騙過鑑定師的假畫,而鑑定師則是努力辨識畫作是真品或贗品,同時,當鑑定師辨識出仿畫師給的是假畫後,鑑定師會將如何辨識出來的漏洞回饋給仿畫師,而仿畫師就能根據回饋的內容來修正畫作,而經過多次的失敗與改良後,最後即可得到一個善於畫假畫的仿畫師以及善於辨認假畫的鑑定師。
GAN運作方式說明
接著,說明生成對抗網路的運作方式。
鑑別網路包含兩種輸入的資料,包括真實資料集與生成模型所產生的假資料集,透過神經網路與權重運算來進行判斷,並計算真實資料與假資料之間的誤差。
以常態分配或均勻分配任意地產生雜訊(Noise),並輸入至生成模型,然後經由神經網路的架構與權重的運算產生出假資料的結果,接著將這些假資料作為鑑別網路的輸入值。
當生成網路收到誤差值的回饋後,讓生成網路根據這個誤差值進行權重的調整,盡可能地減少生成資料與真實資料之間的誤差,經過多回合的訓練與學習,生成網路所產生出的結果將會與真實樣本愈來愈接近,表1以對照的方式解釋了兩個網路間的差異。
認識CycleGAN
GAN有許多種不同延伸出來的演算法,其中一個非常有名的就是CycleGAN,也是達成圖像轉譯的關鍵核心技術。在大多數的演算法中,學習的過程通常會採取成對的監督式學習方法,也就是用成對的樣本在做訓練。成對的樣本簡單來說就是有關係的一組的資料,舉個簡單的例子來說,「A與a」、「B與b」、「C與c」這三組中的關係就是大小寫,它們之間能互相對應;而非成對的概念則是「ABCDEFG…」對應到「123456…」,它們之間並沒有直接性的關係,但能透過它們的順序來做對應。
如果從圖像的概念解釋成對與不成對,如圖5照片中的蘋果和動漫風格的蘋果就是一組成對的資料,而右邊非成對的圖片就只單純分成真實水果圖片與動漫風格的水果。
在現實生活中,成對的樣本資料通常不好準備,常常需要花費很多時間與人力,若能夠透過不成對的樣本去做學習,便可以大幅地減少成本,並具有更高的可行性,而CycleGAN就能夠透過這樣的方式來做模型的訓練。
CycleGAN概念為擺脫以往訓練資料需成對的框架,從不成對的資料,找出相對的學習方法,圖6為CycleGAN的圖例。在CycleGAN中由兩組GAN模型組成,其組成架構及流程可以透過上方水果風格轉換的概念解釋。首先,必須先定義好其域值,即原本的風格與欲轉換的風格,接著定義兩組GAN的模型,CycleGAN所需的組成元件與架構如表2與圖6所示。
循環一致性損失(Cycle-Consistency Loss)
在CycleGAN的概念中,由於是使用非成對樣本進行訓練,因此在學習過程中任何可以辨識的點都有可能成為其學習生成的部分,可能導致原圖和轉換出來的圖不一致。舉例來說,在圖7中,想要將一般的星空照片(a)轉為莫內抽象風格的星空圖,而實際的成果卻是莫內抽象風格的大海圖(b),此時的轉換便沒有意義。
此時,循環一致性損失(Cycle-Consistency Loss)的概念就相當重要,示意圖如圖8所示。首先將X域轉換為Y域,再將Y域轉換為X域,接著計算原始的X域影像與還原回來的X域影像之間的誤差,訓練目標將最小化這個誤差,即最佳化這個循環一致性損失,讓生成器G能夠將現實的蘋果轉換成動畫風格,同時可以透過生成器F將動畫風格的蘋果轉換為現實的蘋果,最後計算兩個現實世界的蘋果之間的誤差並將其優化,以構成一個循環。
情境演練說明
浩志繪公司是一家平面設計與繪圖公司,公司內的畫師能將客戶需求的照片透過手藝製作成各式各樣風格的畫作。小志在公司內擔任專業繪圖師,平時的工作是負責了解顧客的需求,並繪製一個讓顧客滿意的作品。由於繪畫是一個從無到有的過程,需要花費許多工時來製作,若客戶較少,須等待2~3天的時間繪製成品,若客戶很多時,客戶須等待更長的時間,而在近期,莫內風格的畫作在市面大為流行,很多人都跟隨潮流來浩志繪公司訂製畫作,短時間裡大量的訂單讓小志常常加班趕工到深夜,讓小志近期的工作壓力非常大。
然而,有一天小志在同學聚會上遇到擅長AI技術的小宇,閒聊後聽聞了小志常常因為畫畫而加班熬夜等工作壓力後,小宇靈光乍現想到了圖像轉譯的AI技術,思考後決定用實際的行動幫他的好朋友減輕工作壓力。
首先,小宇找到在Keras官方文件中CycleGAN的範例程式(網址連結為https://keras.io/examples/generative/cyclegan/),並參考程式進行實作,在實作的環境上,小宇選擇使用Google Colaboratory,簡稱Google Colab,如圖9所示,Google Colab提供免費的CPU和GPU,並讓使用者從瀏覽器上就能直接存取Google的虛擬機器來直接編譯Python程式,且不須繁雜的環境安裝和配置設定就能進行深度學習模型的訓練,對小宇和小志而言,是再適合不過的選擇了。
接著就是程式碼中匯入套件的部分,其中會使用到的套件包含數學運算套件NumPy、視覺化套件Matplotlib、深度學習函式庫Tensorflow與Keras等等,這些套件能夠直接在Google Colab中使用而不用額外進行安裝,程式碼如圖10所示。
套件匯入完成後,接著將資料集進行導入程式當中,必須準備大量的兩種不同風格的圖片,在範例中,使用一般影像與莫內風格的影像,在Tensorflow的官方網站中,提供下載這個資料集(網址為https://www.tensorflow.org/datasets/catalog/cycle_gan),導入資料集步驟的部分程式碼如圖11所示。
接著,對資料集的影像進行前處理,讓模型訓練時的影像能夠在相同的基準之下做為輸入資料,以確保訓練出的模型品質,例如將影像的大小裁切成一致,以及將影像像素值進行標準化(Normalization)處理,部分程式碼如圖12所示。
處理完前述的步驟即完成資料的前處理,接著建立生成網路(Generators)與鑑別網路(Discriminator),小宇了解到一個完整的CycleGAN當中,具有兩組生成網路與兩組鑑別網路,而這兩組分別為將一般照片轉成莫內風格圖像的生成網路G、將莫內風格圖像轉成一般照片的生成網路F,以及負責辨認莫內風格與一般照片的鑑別網路X與Y,部分程式碼如圖13所示。
當生成網路與鑑別網路都建構完成後,組成CycleGAN模型的基本元件也就都到齊了,接著是將模型整合出完整架構,同時為了避免輸出的結果無意義,須要導入循環一致性損失的誤差值,並透過多回合的訓練將誤差值最小化,這裡的誤差值包含四項,分別是生成網路G的誤差值、生成網路F的誤差值、鑑別網路X的誤差值及鑑別網路Y的誤差值,如圖14所示。
完成這些模型參數配置後,就可以開始訓練CycleGAN模型,這邊將訓練資料集的莫內風格的影像和一般影像作為輸入放入模型中做訓練,使用cycle_gan_model.fit()函式做訓練,並可以透過epoch參數來調整訓練的回合數,在基本的情況下,回合數越多效果會越好,但過多的訓練次數可能會導致模型發生過度擬合(Overfitting)的情況,反而降低了模型輸出的效果,因此小宇將epoch設定為50來測試效果,並在每回合的訓練時就先預覽一下輸出的結果如何,模型訓練的部分程式碼如圖15所示。
訓練完成後,小宇將自己的照片輸入CycleGAN模型當中查看圖像轉譯的效果,經過圖像轉譯的效果如圖16所示。看到了這個轉換的效果,小志覺得這項技術令他嘖嘖稱奇,從此以後小志將這項技術套用在自己的工作當中,每當客戶有需求時,小志就先使用圖像轉譯技術產生出預期的成果讓客戶預覽,接著小志再從畫中加上自己的靈感,最終把完成品交給客戶。透過圖像轉譯技術,不僅節省了小志從零開始作畫的時間成本,還能從AI的成品當中學習新的靈感,讓小志能夠在減輕工作量的同時增加了產能。
結語
本文以AI做為開頭,帶大家認識最熱門的AI、機器學習以及深度學習概念與原理,再帶入本次的主題-「CycleGAN × 圖像轉譯」,並且透過Python程式語言動手實作了解AI與圖像轉譯技術的威力。這項源自於深度學習所延伸出的技術,透過兩組GAN互相學習而訓練出的模型,讓不同風格的效果可以在彈指之間自由切換,而一幅新的栩栩如生的創作就此誕生。
這樣的技術出現改變了人們對AI只善於幫助解決大量重複性問題而不擅長靈感創作等高靈活性任務的想法,可見AI技術在短時間內又有不同境界的新突破,這項技術的出現,為設計類型的相關產業帶來衝擊,也產生了新的商業模式,但與此同時,AI創作的著作權該如何歸屬?若創作過於雷同是否構成侵權?責任又該如何劃分?這將是這項技術在未來需要面臨的挑戰與需要解決的問題。
除此之外,這些透過AI產生的內容將會在網際網路的世界當中變得愈來愈多,身為資訊科技使用者,更應該具備思辨與查明的能力。
<本文作者:社團法人台灣E化資安分析管理協會(ESAM, https://www.esam.io/)中央警察大學 資訊密碼暨建構實驗室&情資安全與鑑識科學實驗室(ICCL and SECFORENSICS),1998年12月成立,目前由王旭正教授領軍,並致力於資訊安全、情資安全與鑑識科學,資料隱藏與資料快速搜尋之研究,以為人們於網際網路(Internet)世界探索的安全保障(https://hera.secforensics.org/)。>