日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

玩转StyleGAN2模型:教你生成动漫人物

發布時間:2024/4/11 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 玩转StyleGAN2模型:教你生成动漫人物 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


正文字數:2840 ?閱讀時長:6分鐘

生成式對抗網絡(GAN)是一種能夠生成新內容的生成模型。由于其有趣的應用,如生成合成訓練數據、創建藝術、風格轉換、圖像到圖像的翻譯等,這個話題在機器學習的領域中非常流行。

Posted by?Fathy Rashad?

url :?https://www.yanxishe.com/TextTranslation/2826


生成式對抗網絡

GAN架構?[Image by Author]

GAN由2個網絡、即發生器/生成器和鑒別器組成。生成器將嘗試生成假樣本,并欺騙鑒別器相信它是真實樣本。鑒別器將嘗試從真樣本和假樣本中檢測生成的樣本。這個有趣的對抗概念是由伊恩·古德費羅(Ian Goodfellow)在2014年提出的。已經有很多資源可以用來學習GAN,因此我不解釋GAN以避免冗余。

我建議閱讀Joseph Rocca 的這篇文章來了解GAN。

理解生成式對抗網絡(GANs)

https://medium.com/m/global-identity?redirectUrl=https%3A%2F%2Ftowardsdatascience.com%2Funderstanding-generative-adversarial-networks-gans-cd6e4651a29

風格GAN2

2018年,NVIDIA發布了StyleGAN論文“A Style-Based Architecture for GANs”。該文提出了一種新的GAN生成器結構,允許他們控制生成的樣本的不同層次的細節水平,從粗略的細節(如頭部形狀)到更精細的細節(如眼睛顏色)。

StyleGAN還融合了Progressive GAN的思想,即網絡最初在較低分辨率(4x4)上訓練,然后在穩定后逐漸添加更大的層數。通過這樣做,訓練時間變得更快,訓練也更加穩定。

漸進式增長GAN?[Source: Sarah Wolf]

StyleGAN進一步改進了它,增加了一個映射網絡,將輸入向量編碼成一個中間的潛伏空間,w,然后將有單獨的值用來控制不同層次的細節。

StyleGAN生成器架構 [Image by Author]

為什么要增加一個映射網絡?

GAN的一個問題之一在于它的糾纏潛碼表示(輸入向量,z)。例如,假設我們有2個維度的潛伏碼,它分別代表了臉的大小和眼睛的大小。在這種情況下,臉的大小與眼睛的大小高度糾纏在一起(眼睛越大,臉也越大)。另一方面,我們可以通過存儲臉部和眼睛的比例來簡化這一點問題,這將使我們的模型更簡單,因為無糾纏的表示方式更容易被模型解釋。

在糾纏表示下,數據分布可能不一定遵循正態分布,我們希望從中采樣輸入向量z。例如,數據分布會有這樣一個缺失的角點,它表示眼睛和臉部的比例變得不現實的區域。

[Source: Paper]

如果我們從正態分布中采樣z,我們的模型也會嘗試生成缺失的區域,并且其中的比例是不現實的,因為沒有具有這種特性的訓練數據,生成器將生成較差的圖像。因此,映射網絡的目的是拆分潛伏表征,并扭曲潛伏空間,使其能夠從正態分布中采樣。

[Source: Paper]

另外,在每個層次上有單獨的輸入向量w,使得生成器可以控制不同層次的視覺特征。前幾層(4x4、8x8)將控制更高級別(相對粗糙的)的細節,例如頭部形狀、姿勢和發型。最后幾層(512x512、1024x1024)將控制更精細的細節級別,例如頭發和眼睛的顏色。

粗糙細節的變化(頭部形狀,發型,姿勢,眼鏡) [Source: Paper]

細微層次細節的變化(發色)?[Source: Paper]

關于StyleGAN架構的完整細節,我建議您閱讀NVIDIA關于其實現的官方論文。這是從論文本身對整個體系結構的說明和架構圖。

基于風格的全球行動網文件架構

隨機變化

StyleGAN還允許您通過在各個圖層上給予噪聲來控制不同層次的細節的隨機變化。隨機變化是圖像上微小的隨機性,不會改變我們對圖像的感知或圖像的身份,例如不同的梳理的頭發、不同的頭發位置等。您可以在下面的動畫圖像中看到變化的效果。

粗糙的隨機變化?[Source: Paper]

精細的隨機變化[Source: Paper]

StyleGAN還做了一些其他改進,我在這些文章中就不一一介紹,比如AdaIN規范化和其他正則化/常規化。你可以閱讀官方論文,Jonathan Hui的這篇文章,或者Rani Horev的這篇文章來代替閱讀進一步的細節。

截斷技巧

當訓練樣本中存在代表性不足的數據時,生成器可能無法學習樣本,并產生較差的結果。為了避免這種情況,StyleGAN使用了一種“截斷技巧”,截斷中間的潛在向量w,使其接近平均值。

????(psi)是閾值,用來截斷和重新采樣高于閾值的潛向量。因此,如果使用更高的????,你可以在生成的圖像上獲得更高的多樣性,但它也有更高的機會生成奇怪或破碎的面孔。對于這個網絡來說,????的值在0.5到0.7之間,根據Gwern的說法,似乎可以得到一個具有足夠多樣性的好圖像。雖然,可以隨意試驗一下閾值。

3x3 Grid Images generated with 0.3 psi (left) vs 0.7 psi (middle) vs 1.3 psi (right)

生成動漫人物

我將使用Aaron Gokaslan預先訓練好的Anime StyleGAN2,以便我們可以加載模型直接生成動畫臉。所以,打開你的Jupyter筆記本或googlecolab,讓我們開始編碼。

注意:如果你遇到困難,可以參考我的Colab筆記本

因此,首先,我們應該克隆styleGAN repo。

$ git clone https://github.com/NVlabs/stylegan2.git

如果您使用的是googlecolab,可以在命令前面加上“!'以命令的形式運行它:!!"git clone https://github.com/NVlabs/stylegan2.git

接下來,我們需要下載預先訓練好的權重并加載模型。當您使用googlecolab時,請確保您是使用GPU運行時運行的,因為模型被配置為使用GPU。

這段代碼是從這個筆記本上修改而來的

現在,我們需要生成隨機向量z,作為我們的生成器的輸入。讓我們創建一個函數,從給定的種子生成潛在代碼z。

然后,我們可以創建一個函數,將它生成的隨機向量z,生成圖像。

現在,我們可以嘗試生成一些圖像并查看結果。

該函數將返回一個PIL.Image的數組. 在googlecolab中,可以通過打印變量直接顯示圖像。這是第一個生成的圖像。

Image by Author

讓我們在一個圖像網格中顯示它,這樣我們可以一次看到多個圖像。

然后我們可以在一個3x3的網格中顯示生成的圖像。

Image by Author

GAN的一個優點是它具有平滑和連續的潛伏空間,而不像VAE(變分自動編碼器Variational Auto Encoder)那樣有間隙。因此,當您在潛伏空間中獲取兩個將生成兩個不同面的點時,您可以通過在兩個點之間采用線性路徑來創建兩個面的過渡或插值。

潛伏空間的插值 ?[Source: Joseph Rocca]

讓我們在代碼中實現這一點,并創建一個函數來在z向量的兩個值之間進行插值。

讓我們看看插值結果。您可以看到第一個圖像逐漸過渡到第二個圖像。

Image by Author

現在我們已經完成了插值。最后我們可以嘗試在上面的縮略圖中制作插值動畫。我們將使用moviepy庫創建視頻或GIF文件。

當您運行代碼時,它將生成一個插值的GIF動畫。您還可以使用頂部的變量修改持續時間、網格大小或fps。

生成的StyleGAN2插值GIF [Image by Author]

如果你成功了,恭喜你!你已經使用StyleGAN2生成了動畫人臉面孔,并學習了GAN和StyleGAN架構的基礎知識。

接下來我們應該做什么

既然我們已經完成了,你還能做些什么來進一步改進呢?這里有一些你可以做的事情。

  • 其他數據集

顯然,StyleGAN不僅僅局限于動畫/動漫數據集,還有許多可以使用的預先訓練得數據集,比如真實的臉、貓、藝術和繪畫的圖像。

查看此GitHub repo(https://github.com/justinpinkney/awesome-pretrained-stylegan2),了解可用的預訓練權重。另一方面,您還可以使用自己選擇的數據集訓練StyleGAN。

  • 有條件的GAN

目前,我們無法真正控制我們想要生成的特征,例如頭發顏色、眼睛顏色、發型和配飾。條件GAN允許您在輸入向量z旁邊給出一個標簽,從而將生成的圖像調整為我們想要的樣子。或者,您可以嘗試通過回歸或手動來理解潛伏空間。如果你想朝這個方向發展,斯諾·哈爾西Snow Halcy repo或許能幫到你,因為他已經做了,甚至在這個Jupyter筆記本上做了互動。

特別鳴謝

我要感謝gwenn Branwen就如何用StyleGAN生成動畫人臉做了大量的文章和解釋,我在文章中強烈提到了這一點。我完全建議你訪問他的網站,因為他的著作是知識寶庫。此外,看看訪問waifudoesnotex(https://www.thiswaifudoesnotexist.net/)網站,它擁有StyleGAN模型來生成動畫人臉和GPT模型來生成動畫情節。

LiveVideoStackCon 2020?北京

2020年10月31日-11月1日

點擊【閱讀原文】了解更多詳細信息

總結

以上是生活随笔為你收集整理的玩转StyleGAN2模型:教你生成动漫人物的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。