pgGAN編碼空間解析

2021-09-25 17:17:53 字數 2033 閱讀 4750

描述一張對於人來說是乙個很簡單的事情。在機器學習中這個任務是乙個通過提取整整進行分類或者回歸的問題,當前有很多的演算法在物體識別和物體檢測領域已經超過了人類。

然而從另乙個方面來說,通過描述來生成一張真實的是非常困難的事情,在機器學習領域這是乙個生成任務,這種任務比判別任務更加具有挑戰性,主要是因為,我們需要從input中獲取更多的資訊來生成。

我們所做的工作是透明化lattent space gan,將給予現有的gan網路新的特性。

首先給出gan網路隨機生成與控制特徵生成的gan對比如下

早起的gan的工作中,有很多的優秀模型,但是這些優秀模型並不能人為的去控制他們生成影象如何改變,在進一步的研究中,一些可以應用合成和多種變化的網路開始出現。它們主要分成兩類,風格轉化和條件生成。風格轉化模型又乙個缺陷就是,每編輯一種風格就需要訓練乙個模型。條件生成也有缺點,它是根據影象以及帶特性的標籤訓練而成,如果想加入新的特徵那麼就需要重新訓練一下gan,這是乙個很浪費時間和資源的東西。

本文中的tl-gan解決了這個問題,可以讓使用者微調乙個或者多個特性,使用單一的網路,微調特徵所用的時間較短大概只有小於乙個小時。

我們主要是對nvidia的pg-gan為基礎做實驗,pg-gan會生成1024畫素的,然後這個中的特性是受到512維度的向量控制的,如果我們可以理解這512維度的向量空間我們就能夠完成控制生成器輸出的特性。

通過對預訓練pg-gan的大量實驗,我們發現了向量空間的兩個特性:

空間是稠密的,也就是所絕大數的點在空間能夠生成合理的影象。

空間是連續的,這就意味著使用潛在空間的兩個點插值,可以實現對應影象的平滑轉移。

對於上述的結論可以直觀的認為,在潛在空間中存在代表影象特徵的方向,如果真的是這樣的話,那麼使用單一向量直接控制生成的過程稱為了可能。

為了挖掘出這些特徵軸,我們使用的方法是基於(z, y)資料訓練乙個模型。其中z表示latent code, y表示影象的特徵標籤。但是目前我們沒有這樣的資料。

第一種方法是,根據真實影象計算z_code,但是gan並不存在一種簡單的可逆方法,是得x_real可逆成zcode,這個方法變得十分困難。

第二種方法是,使用z 生成影象,但是問題在於生成的影象並沒有打標籤。

第三種方法,是本文開創性使用的方法,**的特徵提取器。首先訓練乙個y = f(x)使用打標籤的真實資料。然後將這個特徵抽取模型與原始的生成模型耦合,那麼我們就能夠得到了,成對的特徵。然後使用成對的特徵做回歸,即可。

上圖展示了tl-gan的結構

選擇乙個訓練好的gan模型。

選擇乙個訓練好的特徵提取器或者自己訓練乙個。

使用生成器耦合特徵提取器,產生成對的(z, y)

使用乙個線性模型做回歸

然後對乙個向量,只在單獨的特徵中動他,看一下生成影象的變化。

經過大量實驗驗證效果還不錯

分離特徵軸

上面的初始方法是有一些缺陷的,就是特徵之間的冗雜,比如為了減少鬍子,但是出來的影象更加的女性化,這主要歸因於自然界中鬍子和女性的相關性,同樣的特性也在捲髮和髮際線特性之間發生。

為了解決這個問題,我們直接使用了線性代數的知識,將相關的特徵,正交化,

結語一般來說,模型的好壞依賴於資料集合,當使用的是少量的資料集合的時候那麼生成模型只能代表人類中乙個很小的子集合。

bencoding編碼詳細解析

bt種子檔案使用了一種叫bencoding的編碼方法來儲存資料。bencoding現有四種型別的資料 srings 字串 integers 整數 lists 列表 dictionaries 字典 編碼規則如下 strings 字串 編碼為 字串長度 字串 例如 4 test 表示為字串 test 4...

php mysql apache編碼深度解析

php mysql apache編碼深度解析 好了,廢話少說,直接切入 我們在做php專案的時候,經常會遇到中文亂碼的問題,有時候編碼問題還導致mysql的報錯。中文亂碼總共有三個原因 1 apache伺服器設定導致亂碼 2 php,或者html頁面編碼導致中文亂碼 3 mysql資料庫的表以及字段...

php mysql apache編碼深度解析

我們在做php專案的時候,經常會遇到中文亂碼的問題,有時候編碼問題還導致mysql的報錯。中文亂碼總共有三個原因 1 apache伺服器設定導致亂碼 2 php,或者html頁面編碼導致中文亂碼 3 mysql資料庫的表以及字段編碼導致中文亂碼 我們分別從這三個部分來 php程式設計中的編碼問題 在...