栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

AI生成藝術(No.2):訓練自己的CycleGAN模型 - -使用Paddle

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

AI生成藝術(No.2):訓練自己的CycleGAN模型 - -使用Paddle

迈向元宇宙, AI 生成艺术之路 ( No.4 )

《训练自己的 CycleGAN 模型 - -使用PaddlePaddle》

1. 說明:簡介CycleGAN模型
 ⚫CycleGAN 是一種有趣的 AI 模型,它可以用來產生不同風格或材質轉換的一個模型,通常應用於影像對影像的變換,例如將白天拍攝的 照片,轉換成為夜間照片;可以產生一些很酷的效果。
⚫再如照片增強、圖像著色、樣式轉換等。您所需要的只是 X(原圖像 集)和 T(目標圖像集)。除了一般照片的轉換之外,CycleGan 還可以 實現斑馬與馬,貓與狗,西瓜與橘子,夏天與冬天,男人與女人等圖 片之間的轉換。如下圖:

 ⚫CycleGAN 能夠學習到莫奈(或其他畫家)的全部作品藝術風格,從 而將實現照片的色彩轉換成莫奈的畫風。

⚫從上圖裡,可以看出來,這 CycleGAN 實際上就是兩個 GAN 的結 合。於是就能將 A(馬)轉成 B(斑馬)再轉回 A(馬),如上圖所示。
⚫同時,也能把 B(斑馬)轉成 A(馬)再轉回 B(斑馬),如下圖所示。

⚫其中共包含 4 個子模型:Discriminator A、Discriminator B、 Generator A2B、Generator B2A 。總共是兩個生成器,分別用來產 生假 A 與假 B;而兩個判別器,一個用來辨別 A 與假 A,另一個用 來辨別 B與假 B。
⚫在上圖裡,但實際上就只是兩個網路的結合,分別是把 A(馬)轉成 B(斑馬)再轉回 A(馬),把 B(斑馬)轉成 A(馬)再轉回 B(斑 馬)。
⚫附帶說明上面的示意圖看起來是上下兩個架構,但實際上這兩個是同 一個架構,注意 Discriminator A、B、Generator A2B、B2A 都是 同一個人,只是整個網路在不同時間點有不同的 input 跟 output,
⚫所以總共是兩個生成器(以 G 和 F 表示之)。
 首先步驟-1,把 A(馬圖像)輸入給 G,由 G 來生成假 B(假斑馬)。此 時,也把假 B輸入給 F,由 F 來生成假 A(假馬)。
 接著步驟-2,把 B(斑馬圖像)輸入給 F,由 F 來生成假 A(假馬)。此 時,也把假 A 輸入給 G,由 G 來生成假 B(假斑馬)。
 然後重複上述的兩個步驟,一直循環訓練下去。
⚫而且,這 CycleGAN 中有 2 个判别器,分别用来判断输入的馬和斑 馬图像是真或是假。
⚫本文使用 Pytorch 框架,來完成 Cycle GAN 訓練流程。
⚫CycleGAN 的優秀之處是:雙方彩繪風格(包括顏色)互換。

2. 準備訓練數據集(Dataset)
⚫數據集的(文件夾)路徑。

⚫其中的/trainA/裡有 8 張 Apple 的圖片。

⚫其中的/trainB/裡有 8 張 Grape 的圖片。

3. 讀取圖片:使用Paddle的Dataset
⚫程式(1):
⚫使用 Paddle的 Dataset、DataLoader 讀取數據集裡的圖片。




⚫執行時,繪出:

4. 觀察D和G的輸入與輸出格式
程式(2):
⚫定義判別器(D)和生成器(G)的 Input/Output Shape。
⚫程式碼:








⚫其中,real_A 是原圖。
⚫指令:z_da = D_A(real_A)
⚫是把 real_A 給判別器 D_A,然後由 D_A 輸出預測值:z_da。
⚫指令: fake_A = G_BA(real_B)
⚫以 real_B為條件,由 G_BA 生成 A 假品。
⚫於是,輸出了 real_A、z_da 和 fake_A 的格式(Shape)。
⚫ 如下:

5. 展開訓練流程
程式(3):
⚫這是典型的 CycleGAN 模型。
⚫訓練完成時,會自動將模型儲存起來。以便分階段來訓練(待會詳述 之)。
⚫程式碼:














[第 一階段訓練]
⚫第一階段訓練時,請將這指令:
load_model = False
⚫將其設定為:False。表示不讀取既有的模型檔。(因為第一次訓練 時,還沒有模型檔)。
⚫並且,將這指令:
Base = 0
epochs = 5
⚫這是用來設定計數器從 0 算起,並將訓練 5 回合。
⚫可以在螢幕畫面上呈現出目前訓練到第幾回合。
⚫接下來,就可以執行這程式碼,展開訓練了。
⚫會輸出如下:

⚫這顯示了,訓練過程中,其 Loss 值會逐漸下降(縮小)。
⚫總共訓練 5 回合。訓練完畢,就繪出:

⚫而且,訓練完成時,會自動將模型儲存起來。以便分段訓練。
⚫可以看到了,模型檔就儲存在這裡:

⚫可以看到了,模型檔就儲存在這裡:

[第二階段訓練]
⚫此時,請將這指令:
load_model = True
⚫將其設定為:True。表示會基於上一階段所訓練的結果(即模型檔), 繼續訓練下去。所以會去讀取上一階段所儲存的模型檔。
⚫並且,將這指令更改為:
Base = 5
epochs = 10
⚫這是用來設定計數器從 5 算起,並將訓練 10 回合。
⚫可以在螢幕畫面上呈現出目前訓練到第幾回合。
⚫接下來,就可以再一次執行這程式碼,展開第二階段的訓練了。
⚫訓練時會輸出:

⚫這顯示了,訓練過程中,其 Loss 值會持續地下降(縮小)。
⚫訓練完成時,就繪出:

⚫而且,會自動更新模型檔,以便支持下一階段的訓練。

[第三階段訓練]
⚫第一階段訓練時,請將這指令:
load_model = True
⚫將其設定為:True。表示會基於上一階段所訓練的結果(即模型檔), 繼續訓練下去。所以會去讀取上一階段所儲存的模型檔。
⚫並且,將這指令,更改為:
Base = 15
epochs = 10
⚫這是用來設定計數器從 15 算起,並將訓練 10 回合。
⚫可以在螢幕畫面上呈現出目前訓練到第幾回合。
⚫接下來,就可以再一次執行這程式碼,展開第二階段的訓練了。
⚫訓練時會輸出:


⚫這顯示了,訓練過程中,其 Loss 值會持續地下降(縮小)。
⚫訓練完成時,就繪出:

⚫CycleGAN 的優秀之處是:雙方彩繪風格(包括顏色)互換。

⚫大功告成。

END

◆◆◆

神鹰AI团队准备了10支《彩绘GAN模型》,更多paddlepaddle的讨论与知识也可关注公众号,我们一起探索迈向元宇宙,AI生成艺术之路,欢迎留言、讨论与指教哦~~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/865012.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号