iT邦幫忙

2021 iThome 鐵人賽

DAY 23
1
AI & Data

AI ninja project系列 第 23

AI ninja project [day 23] 生成對抗網路 Generative Adversarial Network(GAN)

相信大家都有聽過GAN的名子,
原理就好像同時有一名創作家及一名鑑定員,
創作家進行創造,而鑑定員進行鑑定,
兩者有各自跟原始作品的損失函數,
利用損失資訊的大小,以優化器來修正創作家創作的方向以及鑑定員鑑定的依據。

參考攻略:
https://www.tensorflow.org/tutorials/generative/dcgan?hl=zh_tw

https://ithelp.ithome.com.tw/upload/images/20210923/20122678vDXE3pIIyj.png

colab:
https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/generative/dcgan.ipynb?hl=zh_tw

安裝及載入:
https://ithelp.ithome.com.tw/upload/images/20210923/20122678sXSbHGdnRS.png

https://ithelp.ithome.com.tw/upload/images/20210923/20122678INuS6CXqmG.png

imageio套件是為了讓訓練過程以動畫的方式來呈現。

載入手寫數字資料集:
https://ithelp.ithome.com.tw/upload/images/20210923/20122678z5lbgC0iP1.png

將圖片轉成28×28像素,每一個像素正規化成-1到1之間的數值:
https://ithelp.ithome.com.tw/upload/images/20210923/20122678JP8eYnH0Ok.png

調整batch大小,並且改變訓練資料的排序:
https://ithelp.ithome.com.tw/upload/images/20210923/20122678mXX5wr3SmS.png

建立生成器:
https://ithelp.ithome.com.tw/upload/images/20210923/20122678ajUbNHbKWC.png

輸入為100維的矩陣,我們可以先查看未訓練的生成結果:
https://ithelp.ithome.com.tw/upload/images/20210923/20122678D2M2GQxMnl.png

搭建判別器:
https://ithelp.ithome.com.tw/upload/images/20210923/20122678lksuEhYmh5.png

輸出結果為正數代表認定為真品,負數認定生成作品為假的,
不過目前還沒訓練,所以結果不具有意義:
https://ithelp.ithome.com.tw/upload/images/20210923/201226784ct6rbXEyn.png

創立生成器及判別器各自的損失函數:
https://ithelp.ithome.com.tw/upload/images/20210923/201226782LH3vwhZuf.png

https://ithelp.ithome.com.tw/upload/images/20210923/201226784Nt6hcBFag.png

https://ithelp.ithome.com.tw/upload/images/20210923/20122678oVKgPKIcs9.png

設定各自的優化器:
https://ithelp.ithome.com.tw/upload/images/20210923/20122678qpP87bEXdQ.png

載入過去別人訓練好的儲存點,降低訓練時間,
自己重新訓練也可以:
https://ithelp.ithome.com.tw/upload/images/20210923/20122678ROj7XItcVq.png

設定初始生成畫作的隨機數值,並且一次生成16張圖片:
https://ithelp.ithome.com.tw/upload/images/20210923/20122678Rx1xpCqTHu.png

設定生成對抗的過程,優化器依據生成器及判別器各自的損失資訊來修正生成及判別方向:
https://ithelp.ithome.com.tw/upload/images/20210923/20122678AykYc4BGvq.png

搭建function,依據epochs來進行生成對抗的訓練:
https://ithelp.ithome.com.tw/upload/images/20210923/2012267806ZoY3UU6S.png

將每一個epochs的訓練結果保存起來:
https://ithelp.ithome.com.tw/upload/images/20210923/2012267867zw5sRWLe.png

開始訓練:
https://ithelp.ithome.com.tw/upload/images/20210923/20122678zXIxQVg5dU.png

那可以將訓練過程以動畫的方式來呈現:
https://ithelp.ithome.com.tw/upload/images/20210923/201226788rOkVko3Df.png

假設哪一天需要依靠販賣藝術品維生,
但是又沒有藝術天份,
這個時候就可以請GAN來幫我們創作藝術作品了。

下面的攻略有對浪漫時期的作品進行創作:
https://www.kaggle.com/amyjang/creating-romantic-period-art-w-tensorflow-dcgan

該資料集還有表現主義及立體主義的作品可以參考。

那這個攻略是對於彩色圖片CIFAR10資料集進行創作:
https://machinelearningmastery.com/how-to-develop-a-generative-adversarial-network-for-a-cifar-10-small-object-photographs-from-scratch/


上一篇
AI ninja project [day 22] 變分自動編碼器 Variational Autoencoder
下一篇
AI ninja project [day 24] 決策樹森林 --排名資料
系列文
AI ninja project30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言