圖像風格轉換(三)-我全~都要

更新於 發佈於 閱讀時間約 5 分鐘

一.引言

  上篇我們已經把風格融入在一個網路之中,實現了訓練一次就可以轉換不同的圖片成我們訓練的風格,但是這樣還不夠,因為這樣每個風格都得訓練一個網路來轉換,太浪費了,那麼,我們有沒有辦法在同一個網路中訓練多個風格呢?


二.方法說明

  在上篇我們已證實了<圖-圖>的網路結構是有辦法處理風格轉換問題的,所以在主要網路結構方向及 Loss 設計上是沒什麼問題的,那麼只要讓網路能夠記憶不同風格時的權重變化,是不是就能夠在同一個網路中實現多風格的轉換呢 ?
  基於這個想法,Google Brain 2017 提出的 A Learned Representation For Artistic Style 便在網路結構中加入了 Conditional Instance Normalization 機制,使網路能夠儲存多組風格的參數。

  接著我們來解析 Conditional Instance Normalization 機制,Conditional Instance Normalization(以下簡稱CIN)從名字上可以知道他是一種 Normalization 方法,Normalization 通常用於控制輸入層的均值和標準差,以此來避免訓練過程中的梯度消失或爆炸,而 Instance Normalization 指將每個樣本獨立正則化,對每個樣本的每個通道進行獨立的 Normalization,計算方式為:

raw-image

其中 x 是輸入特徵,μ(x) 和 σ(x) 分別是該特徵在空間維度上的均值和標準差。

而CIN中,不僅進行Instance Normalization,而且對Normalization後的輸出進行風格特定的規模和偏移調整:

raw-image

這裡,γs​ 和 βs​ 是學習得到的風格特定參數,其中索引 s 表示特定的風格。這使得網絡可以根據選擇的風格動態調整其行為,每種風格都有一組專屬的 γ 和 β 值。

  在每個 Conv / Residual 後都增加 CIN 模組,建置網路時便可以在 Conv / Residual 階段預置多組 γ 及 β,可以用來訓練不同風格的表現形態,接下來我們就來實作看看。


三.實際演練

  本次實作主要擴充上一篇的程式,所以與論文內細節可能不一樣,但核心 CIN 部分是完整復刻了,詳細模組如下,詳細可參考我的Github :

class CIN(nn.Module):
def __init__(self, num_features, num_styles):
super(CIN, self).__init__()
self.num_features = num_features
self.num_styles = num_styles

# 初始化風格特定的 gamma 和 beta
self.gamma = nn.Parameter(torch.ones(num_styles, num_features))
self.beta = nn.Parameter(torch.zeros(num_styles, num_features))

def forward(self, x, style_id):
"""
x: 輸入特徵,維度為 (N, C, H, W)
style_id: 表示風格的整數索引,維度為 (N,)
"""
# 獲取每個樣本的 gamma 和 beta
gamma = self.gamma[style_id].view(-1, self.num_features, 1, 1)
beta = self.beta[style_id].view(-1, self.num_features, 1, 1)

# 計算特徵的均值和標準差
mean = x.mean(dim=[2, 3], keepdim=True)
std = x.std(dim=[2, 3], keepdim=True)

# 應用條件實例正則化
normalized = (x - mean) / (std + 1e-5)
out = normalized * gamma + beta

return out

本次預置了4個sytle,然後訓練 0 : 壁畫風格 、 1 : 彩繪玻璃風格、2/3未訓練,結果如下,可以看到兩種風格確實分散在不同的參數組中,而2/3則保持一致(上篇的新媒體藝術風格太過廣泛,替代成風格較統一的彩繪玻璃風格)。

raw-image


四.結語

  這次擴展了上篇的程式,加入了 CIN 模組讓模型能夠記憶不同風格的參數組合,所以目前的模型已經能做到同時訓練多個風格,且訓練完後可以轉換不同的圖像到已訓練風格,接下來還能做什麼呢 ?人類是貪心的,這樣還不夠,如果我只要預訓練幾種風格,後續使用其他風格時,若模型也能根據我提供的風格圖轉換的話豈不美哉,所以下一篇便是要介紹該如何再進化。



留言
avatar-img
留言分享你的想法!
avatar-img
貓貓學習筆記
9會員
21內容數
AI、電腦視覺、圖像處理、AWS等等持續學習時的學習筆記,也包含一些心得,主要是幫助自己學習,若能同時幫助到不小心來到這裡的人,那也是好事一件 : )
貓貓學習筆記的其他內容
2024/07/08
我們前面幾篇已經講完TTS技術的一大半架構了,知道了如何將聲學特徵重建回音訊波形,也從中可以知道要是聲學特徵不完善,最終取得的結果也會不自然,剩下要探討該如何將文字轉換成聲學特徵,且能夠自然地表現停頓及細節變化,讓我們開始吧。
Thumbnail
2024/07/08
我們前面幾篇已經講完TTS技術的一大半架構了,知道了如何將聲學特徵重建回音訊波形,也從中可以知道要是聲學特徵不完善,最終取得的結果也會不自然,剩下要探討該如何將文字轉換成聲學特徵,且能夠自然地表現停頓及細節變化,讓我們開始吧。
Thumbnail
2024/06/26
距離上篇已經快過一個月了,這個月我也沒閒著,我FF14生產職拉了不少等級進行了上篇 WaveNet 的後續調試,也比較與其他人實現的效果,又發現了幾個實作上可能造成困難的點,現在就跟各位分享一下~
Thumbnail
2024/06/26
距離上篇已經快過一個月了,這個月我也沒閒著,我FF14生產職拉了不少等級進行了上篇 WaveNet 的後續調試,也比較與其他人實現的效果,又發現了幾個實作上可能造成困難的點,現在就跟各位分享一下~
Thumbnail
2024/06/01
WaveNet 提供了一個先進的架構用於音訊重建,但是,有必要嗎? Mel 頻譜本身就是經過數學轉換而獲得的結果,不能反運算嗎 ? 到底 WaveNet 在其中扮演了甚麼腳色 ?它是如何運作的 ? 讓我們在這篇好好探討下去。
Thumbnail
2024/06/01
WaveNet 提供了一個先進的架構用於音訊重建,但是,有必要嗎? Mel 頻譜本身就是經過數學轉換而獲得的結果,不能反運算嗎 ? 到底 WaveNet 在其中扮演了甚麼腳色 ?它是如何運作的 ? 讓我們在這篇好好探討下去。
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
介紹朋友新開的蝦皮選物店『10樓2選物店』,並分享方格子與蝦皮合作的分潤計畫,註冊流程簡單,0成本、無綁約,推薦給想增加收入的讀者。
Thumbnail
介紹朋友新開的蝦皮選物店『10樓2選物店』,並分享方格子與蝦皮合作的分潤計畫,註冊流程簡單,0成本、無綁約,推薦給想增加收入的讀者。
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
這節課的學習目標是了解 CSS 的基本語法結構和使用方法。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
在網路速度有限的情況下,依序記錄不斷產生的資訊,能統計使用者在頁面上操作了哪些功能。
Thumbnail
  上回練習了一個官方示例,但其中對於一些細節沒有練習到的感覺,這次我們實際將之前練習的風格轉換訓練推上去看看,看是否能體驗到更多細節。
Thumbnail
  上回練習了一個官方示例,但其中對於一些細節沒有練習到的感覺,這次我們實際將之前練習的風格轉換訓練推上去看看,看是否能體驗到更多細節。
Thumbnail
上篇我們已經把風格融入在一個網路之中,實現了訓練一次就可以轉換不同的圖片成我們訓練的風格,但是這樣還不夠,因為這樣每個風格都得訓練一個網路來轉換,太浪費了,那麼,我們有沒有辦法在同一個網路中訓練多個風格呢?
Thumbnail
上篇我們已經把風格融入在一個網路之中,實現了訓練一次就可以轉換不同的圖片成我們訓練的風格,但是這樣還不夠,因為這樣每個風格都得訓練一個網路來轉換,太浪費了,那麼,我們有沒有辦法在同一個網路中訓練多個風格呢?
Thumbnail
觀察者模式透過主題訂閱/訊息通知的機制,極度增強系統的可擴展性、靈活性以及降低組件間的耦合度。概念直觀簡單,是非常實用的設計模式。
Thumbnail
觀察者模式透過主題訂閱/訊息通知的機制,極度增強系統的可擴展性、靈活性以及降低組件間的耦合度。概念直觀簡單,是非常實用的設計模式。
Thumbnail
CSS 的繼承性是開發網頁樣式時的一個重要概念,它使得樣式設計更加靈活和高效,有助於提高程式碼的可讀性、一致性和可重用性,並加快開發速度,從而提供更好的開發體驗。
Thumbnail
CSS 的繼承性是開發網頁樣式時的一個重要概念,它使得樣式設計更加靈活和高效,有助於提高程式碼的可讀性、一致性和可重用性,並加快開發速度,從而提供更好的開發體驗。
Thumbnail
Creative Coding 作品變化概念,有或沒有的差別,隨機性,色彩模式的調整...等
Thumbnail
Creative Coding 作品變化概念,有或沒有的差別,隨機性,色彩模式的調整...等
Thumbnail
關於程式語言的學習,只要掌握住幾個基本特性要熟悉幾種程式語言也不困難,這三個基本特性就是…
Thumbnail
關於程式語言的學習,只要掌握住幾個基本特性要熟悉幾種程式語言也不困難,這三個基本特性就是…
Thumbnail
此篇教學 : 自訂Hexo 提供的主題,套版在 GitHub Pages 架好部落格網站
Thumbnail
此篇教學 : 自訂Hexo 提供的主題,套版在 GitHub Pages 架好部落格網站
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News