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

更新 發佈閱讀 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
貓貓學習筆記
10會員
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
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
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