圖像風格轉換(四)-最終進化?

閱讀時間約 4 分鐘

一.引言

  經過三篇的進展,我們目前實作的網路已經能做到同時訓練多種風格,且後續可以直接進行轉換,不用重新訓練,但是這種方法畢竟還是受到了預訓練的風格制約,無法跳脫出來,那麼有什麼辦法能夠讓他對於沒學過的風格也有一定的反應能力呢?

二.方法說明

  在上篇我們談到了CIN,其基本概念假設風格可以藉由正規化的特徵向量進行線性組合而得,所以不同的風格只是代表了不同的線性組合參數,所以,是不是只要能自動的根據不同的風格產生出不同的參數組合,就能在沒訓練的風格情況下也有一定效果呢?

  在這個想法下,Ghiasi et al. 2017 提出的 Exploring the structure of a real-time, arbitrary neural artistic stylization network 便使用了一個風格預測模型去預測一個風格向量,並且在CIN模塊內導入風格向量去自行產生Gamma及Beta值,這樣一來只要同時訓練這個風格預測模型,就能夠在未訓練的風格上也有一定的泛用性。

三.實際演練

  實際操作上CIN與風格向量的銜接方法挺特殊的,若風格向量為1000維,在使用時會使用線性層將1000維再次壓縮成每個CIN模組需要的大小,以下為修改後的捲積層,詳細整體實作可以前往我的Github:

class ConvLayer(nn.Module):
def __init__(self, in_channels, out_channels, kernel_size, stride,style_vector_size):
super(ConvLayer, self).__init__()
padding = kernel_size // 2
self.reflection_pad = nn.ReflectionPad2d(padding)
self.conv2d = nn.Conv2d(in_channels, out_channels, kernel_size, stride)
self.cin = CIN(out_channels)
self.style_gamma = nn.Linear(style_vector_size, out_channels)
self.style_beta = nn.Linear(style_vector_size, out_channels)

def forward(self, x, style_vector):
# 获取本层的gamma和beta
gamma = self.style_gamma(style_vector).view(-1, self.conv2d.out_channels, 1, 1)
beta = self.style_beta(style_vector).view(-1, self.conv2d.out_channels, 1, 1)

out = self.reflection_pad(x)
out = self.conv2d(out)
out = self.cin(out, gamma, beta)
return out

本次訓練集使用 COCO(作為content) 及 Painter by numbers(作為style)進行訓練,其中有幾點本次實作遇到的小坎 :

  1. 圖片載入時的正規化動作在訓練時造成了影響,將其拿掉在我的實驗中有更好的效果
  2. content weight 及 style weight 及 tv weight 的設定需要再調整
  3. 因為本次同時要對兩個資料集做迭代,其中以content為主,所以要注意style dataset的迭代狀況
  4. 請注意預測時的每個部件都處在正確的狀態,否則會出現復現失敗的問題

以下為實驗結果 :

raw-image

四.結語

  從實驗結果來看,目前我的模型對於鮮豔色彩及幾何風格尚無法很好的表現出來,但接下來就是超參微調及持續訓練的問題,於是想了想還是將目前狀態整理好發了出來,對於風格轉換的研究也會先告一段落,雖然風格轉換後續還有很多有趣的用法,如更細微的控制及結合不同風格的綜合體,但到此為止也已經對於風格轉換有著基本的認識,接下來會進行其他領域的探索,當然也期待著有機會能再將風格轉換系列繼續寫到最新,讓我們下篇再見 OwO/

avatar-img
8會員
21內容數
AI、電腦視覺、圖像處理、AWS等等持續學習時的學習筆記,也包含一些心得,主要是幫助自己學習,若能同時幫助到不小心來到這裡的人,那也是好事一件 : )
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
貓貓學習筆記 的其他內容
上篇我們已經把風格融入在一個網路之中,實現了訓練一次就可以轉換不同的圖片成我們訓練的風格,但是這樣還不夠,因為這樣每個風格都得訓練一個網路來轉換,太浪費了,那麼,我們有沒有辦法在同一個網路中訓練多個風格呢?
在第一篇我講到一開始的圖像風格轉換,每產生一張圖片都得重新訓練,這對於使用上難免綁手綁腳,所以理所當然的下一步就是要解決這個問題,看看能不能只要訓練一次,就可以重複使用。
  最近遇到一些人想做音訊的合成,我回答他或許可以從圖像風格轉換中找到些靈感,我才突然想起我對於這部分的認知只止於知道他能做什麼及結果大概如何,對於內部訓練邏輯及結構並沒有認真的去了解,現在剛好趁此機會好好的學習一下。
上篇我們已經把風格融入在一個網路之中,實現了訓練一次就可以轉換不同的圖片成我們訓練的風格,但是這樣還不夠,因為這樣每個風格都得訓練一個網路來轉換,太浪費了,那麼,我們有沒有辦法在同一個網路中訓練多個風格呢?
在第一篇我講到一開始的圖像風格轉換,每產生一張圖片都得重新訓練,這對於使用上難免綁手綁腳,所以理所當然的下一步就是要解決這個問題,看看能不能只要訓練一次,就可以重複使用。
  最近遇到一些人想做音訊的合成,我回答他或許可以從圖像風格轉換中找到些靈感,我才突然想起我對於這部分的認知只止於知道他能做什麼及結果大概如何,對於內部訓練邏輯及結構並沒有認真的去了解,現在剛好趁此機會好好的學習一下。
你可能也想看
Google News 追蹤
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
CSS 的繼承性是開發網頁樣式時的一個重要概念,它使得樣式設計更加靈活和高效,有助於提高程式碼的可讀性、一致性和可重用性,並加快開發速度,從而提供更好的開發體驗。
Thumbnail
Creative Coding 作品變化概念,有或沒有的差別,隨機性,色彩模式的調整...等
前言 終於要到這個振奮人心的章節了,我們終於要來學習,如何讓自己的網頁更加美觀。 但在這之前,我們肯定得先學習,如何將我們的 CSS 檔案,連接到 HTML 當中。 連結分類 首先,我們在連結 CSS 的方法中,有分為三種: 內聯連結 在 .html 當中,任一標籤的裡面,用屬性 s
Thumbnail
主題發想 : 傳統與現代的融合。 創作理念 : 表達古典元素和現代設計之間的和諧共存之創新藝術。
當自己習慣於某種特定的論述模式以及文法結構、語言方式
Thumbnail
如何透過 CSS 來美化和增強文本的可讀性,對於提升用戶體驗至關重要。本文將介紹如何使用 CSS 來處理網頁上的文本,包括字型設定、文本排列、裝飾等多方面。
Thumbnail
數位化已成為企業運營不可或缺的一部分,但如何有效運用數位轉型策略,尤其是線上學習平臺,以提升員工技能、保持競爭力,是企業領導者和人資需要深入探討的關鍵課題。本文將從線上培訓趨勢到實際執行策略,提供全方位的實施策略,並介紹人才戰略和數位轉型得力助手。
Thumbnail
CSS 是控制網頁外觀的語言,應用於網頁設計、UI/UX 設計、電子商務和移動應用開發。主要使用者包括前端開發者、UI/UX 設計師和網頁設計師。CSS 的特性有樣式控制、層疊優先級、響應式設計及分離內容與樣式。
Thumbnail
CSS 的繼承性是開發網頁樣式時的一個重要概念,它使得樣式設計更加靈活和高效,有助於提高程式碼的可讀性、一致性和可重用性,並加快開發速度,從而提供更好的開發體驗。
Thumbnail
Creative Coding 作品變化概念,有或沒有的差別,隨機性,色彩模式的調整...等
前言 終於要到這個振奮人心的章節了,我們終於要來學習,如何讓自己的網頁更加美觀。 但在這之前,我們肯定得先學習,如何將我們的 CSS 檔案,連接到 HTML 當中。 連結分類 首先,我們在連結 CSS 的方法中,有分為三種: 內聯連結 在 .html 當中,任一標籤的裡面,用屬性 s
Thumbnail
主題發想 : 傳統與現代的融合。 創作理念 : 表達古典元素和現代設計之間的和諧共存之創新藝術。
當自己習慣於某種特定的論述模式以及文法結構、語言方式
Thumbnail
如何透過 CSS 來美化和增強文本的可讀性,對於提升用戶體驗至關重要。本文將介紹如何使用 CSS 來處理網頁上的文本,包括字型設定、文本排列、裝飾等多方面。
Thumbnail
數位化已成為企業運營不可或缺的一部分,但如何有效運用數位轉型策略,尤其是線上學習平臺,以提升員工技能、保持競爭力,是企業領導者和人資需要深入探討的關鍵課題。本文將從線上培訓趨勢到實際執行策略,提供全方位的實施策略,並介紹人才戰略和數位轉型得力助手。