5分钟教你用GANs生成CryptoPunks风格图像
2021年,NFT數字藝術品和數字藏品迅速出圈,在這場浪潮中,2017年成立的“加密朋克”(CryptoPunks)項目因其收藏者的知名度和不斷刷新的成交價,升值成為最具價值的收藏品之一,更成為了先鋒投資者和藝術收藏者身份的象征。
圖片來源:larvalabs
多個NFT數字藝術品項目的成功,也將AI生成數字藝術品推至臺前。在這場“出圈浪潮”中,很多藝術家選擇用AI技術作為圖像創造的工具,最終再將藝術品鑄造為NFT,使用AI技術進行NFT數字藝術品創作的可能性被充分發掘。與藝術生成有關的AL/ML工作專注于藝術風格的創造,很多團隊和個人也關注到藝術品,通過生成對抗網絡(GANs)“批量”生成特定風格的作品。
最近有一個名為“CryptoPunks GAN”的項目發布在Github上,用于生成 CryptoPunks 的簡單 SN-GAN,項目地址:https://github.com/teddykoker/cryptopunks-gan?。這個項目用Python完成,我們通過矩池云?www.matpool.com?對其進行了復現。矩池云提供面向元宇宙的解決方案,創作者可以使用平臺輕松訓練和部署其AI模型,加速元宇宙中的如NLP虛擬人、圖像內容生成等環節的過程。本次用機器學習生成CryptoPunks項目的復現,上手過程非常簡單,不需要任何安裝和調試,打開界面就能在云端就感受到生成藝術的創作過程。
一、分析項目依賴,租用機器
1.1 分析項目依賴環境
首先通過開源項目的requirements.txt文件,我們知道該項目主要需要Pytorch1.10.2和CUDA11.3環境,另外還需要pandas、Pillow等第三方包,如果將其在本地安裝我們還是需要花一定的時間的,不過我們不需要這些復雜的步驟。
分析項目依賴環境
我們進入矩池云,如果你還沒有注冊過賬號,可以先注冊一個賬號,新注冊用戶關注并綁定矩池云微信公眾號可獲贈5元體驗金,體驗金在租用機器時直接抵扣(等會就可以用)。
1.2 在矩池云租用合適的機器
在矩池云的主機市場,我們可以選擇需要使用到的機器,這里我們就選最便宜的NVIDIA Tesla K80(經過測試,可以使用代碼模型和訓練)。
選擇機器點擊租用按鈕后,我們可以對機器進行配置:
1 、選擇基礎鏡像,我們直接搜索Pytorch1.10
2 、發現有相關鏡像,并且其他依賴如CUDA11.3也符合要求,點擊選擇即可
3 、選擇好鏡像后,我們可以進行其他配置,如:VNC功能開啟、公鑰設置、高級選項中的自定義端口等(首次嘗試也可以先忽略這些功能)
設置好機器基本環境,我們點擊下單即可。(如上所述,如果你是新用戶,綁定矩池云微信公眾號后獲得的體驗金可以在釋放機器時直接抵扣費用)
二、下載代碼、數據及模型
租用好機器后,我們選擇最簡單的使用方法,直接點擊租用界面的JupyterLab連接,即可快速使用服務器。
打開JupyterLab進入JupyterLab頁面后,我們先點擊Terminal進入終端,并輸入下面指令。
打開Terminalcd /mntmkdir MyCode && cd MyCode git clone https://hub.fastgit.xyz/teddykoker/cryptopunks-gan.git我們只需把上方代碼復制粘貼即可,當出現 Checking out files:? 100% 即代表下載開源項目CryptoPunks-GAN項目成功,可以進入到下一步。
Checking out files: 100%我們可以了解一下剛才輸入這段代碼的含義,它代表著:
先進入/mnt目錄(矩池云網盤掛載目錄)
新建一個文件夾MyCode并進入文件夾(用于存放項目文件)
git clone下載開源項目cryptopunks-gan
三、使用模型和訓練
3.1 使用預訓練模型測試
我們進入到cryptopunks-gan項目目錄。具體方式為,找到名為 mnt 的文件夾。
mnt文件夾進入到MyCode,再進入到cryptopunks-gan。
路徑然后點擊左上角+新建一個Launcher,點擊Notebook中的myconda。即可新建一個jupyter notebook文件。
新建ipynb步驟我們可以先使用預訓練好的模型來測試使用,測試使用代碼官方已經給我們提供好了。
可以直接復制以下所有代碼,或者像我一樣一段一段運行。
import torch from torchvision.utils import save_image from train import Generatormodel = Generator() model.load_state_dict(torch.load("models/net_g_epoch_999.pth")) z = torch.randn(64, 100, 1, 1) punks = model(z) save_image(punks, "punks.png", normalize=True)運行按鈕如下:
運行按鈕運行成功后會在項目目錄下生成一個punks.png文件。
punks.png我們可以直接點擊查看預訓練結果。
點擊查看3.2 訓練模型
按照教程,除了使用預訓練模型,我們還可以對模型進行訓練,訓練代碼在項目目錄的train.py文件中。
我們重新回到JupyterLab的Terminal中。
打開Terminal輸入下面指令(首先進入項目目錄,然后運行train.py):
cd /mnt/MyCode/cryptopunks-gan python train.py運行過程這個過程比較漫長,預計1個小時左右,訓練完成后默認會在項目目錄中生成一個out目錄,里面會存放訓練好的權重文件和樣本圖片文件。最終完成訓練的圖片是序號最大的那張,在這個案例中即編號為999的文件。
out目錄此時回到“我的網盤”,即可看到 out 文件夾,剛才的訓練過程和結果圖片都在其中。
我的網盤在訓練使用過程中你還可以查看機器監控,看機器的GPU、內存等使用情況。
機器使用情況3.3 釋放機器
當你的代碼都跑完,不需要使用機器時,可以選擇釋放機器。
在機器租用頁面,你可以看到釋放機器按鈕,在更多按鈕中你還可以看到保存環境功能。
釋放和保存環境如果你在基礎環境中還安裝了一些其他包,并且想在下次使用的時候想繼續使用,你可以選擇保存環境,保存的環境會存放在你的網盤中。
如果不需要保存環境,直接點擊釋放機器即可。
以下一部分為epoch訓練后生成的圖片:
訓練最終的完成圖如下:
GANs生成圖四、關于GANs
Ian Goodfellow等人在2014年的一篇論文中首次提出生成對抗網絡(GANs),它的實現方式是通過同時使用生成模型和判別模型,兩個模型相互競爭,從而訓練出圖片。這一過程可以這樣簡單解釋,生成模型的作用類似于一個人不斷地創造假的《蒙娜麗莎》,他要在創造過程中不斷提升其和真畫的相似度,判別模型則類似于鑒別師,他負責鑒別和確認假畫。兩個人相互競爭,雙方提升各自的創造方法和鑒別方法,直到假畫達到與真畫難以區分的程度。
在CrypoPunks GAN項目中所用到的算法是SN-GAN,即Spectral Normalization for Generative Adversarial Network,訓練過程更穩定,更容易收斂,文獻內容可參考 :
https://arxiv.org/abs/1802.05957?。
中文推特:https://twitter.com/8BTC_OFFICIAL
英文推特:https://twitter.com/btcinchina
Discord社區:https://discord.gg/defidao
電報頻道:https://t.me/Mute_8btc
電報社區:https://t.me/news_8btc
總結
以上是生活随笔為你收集整理的5分钟教你用GANs生成CryptoPunks风格图像的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: # 原码、反码、补码和移码详解 # 原码
- 下一篇: 数字信号处理 --- 信号的采样和奇妙的