
在這個教程中,我們將學習如何使用使用一組基礎特征實現生成式NFT藝術品。 使用的工具包括Python和Scrappy Squirrels提供的基礎特征庫。
用熟悉的語言學習 以太坊DApp開發 : Java | Php | Python | .Net / C# | Golang | Node.JS | Flutter / Dart
像Cryptopunks 和Bored Ape Yacht Club這樣的Marquee NFT 項目 已經產生了數億美元的收入,并讓 開發者成為了百萬富翁。這些項目(以及當今大多數其他成功的 NFT 項目)的共同點是它們都是PFP 項目。 這意味著它們通常是 10,000 多個化身的集合,其中每個化身都是獨一無二的,并且具有一組特征。
在這個教程中,我們將學習如何使用自定義稀有度生成這樣的收藏。我們將使用Scrappy Squirrels團隊創建的庫來完成此任務。 在本教程結束時,你將生成自己的自定義頭像集合以及關聯的元數據。
1、準備工作我們的庫是用 Python 編寫的,因此需要在計算機上安裝Python,此外你還需要 pip, 它將為我們安裝重要的軟件包。 可以到此網站并下載最新版本的 Python。即使不熟悉如何編程(使用 Python 或其他方式) 也可以學習本教程。
你還需要一位了解數字藝術的藝術家來創建自己的定制收藏。但是,這不是學習本教程所必需的。我們將為你提供某些測試圖像。
作為本教程的一部分,我們將引導你完成創建Scrappy Squirrels NFT 的過程,這是我們已經啟動的一個真實項目。本教程 以及后續教程是我們路線圖目標的一部分,旨在讓人們更容易訪問 NFT 和區塊鏈。
松鼠已經使用超過 85 個特征生成。這里有幾個示例:
我們在上面看到的松鼠是通過將 PNG 圖像堆疊在一起生成的。盡管沒有藍籌 NFT 項目描述他們如何產生藝術,但我們確信 這也是他們所做的。你看到的幾乎每個 NFT 頭像都是一組堆疊的 PNG 圖像。
從右上角開始,如果你將每個特征圖像按順時針順序堆疊,一個接一個,最終會得到位于中心的圖像。這里有幾點需要注意:
每個特征圖像(以及最終的松鼠頭像)具有完全相同的尺寸。除了背景特征(這是第一個特征)之外,其他所有特征圖像都有透明背景。特征圖像必須堆疊以獲得正確的松鼠頭像(即從右上角順時針方向)。特征圖像的繪制方式使其位置相對于所有其他特征都有意義。我們可以將任何特征與同一類別的另一個特征交換(例如,將紅色襯衫換成藍色襯衫)。因此,在這種情況下,如果每個特征 類別有 10 個特征,我們理論上可以生產 1 億只不同的松鼠。因此,藝術家的工作是創建各種特征類別的多個圖像。你可以根據需要擁有盡可能多或盡可能少的特征類別。請記住,可能的 組合數量會隨著特征類別的數量呈指數增長。
在Scrappy Squirrels項目中,我們創建了 8 個特征類別:
每個特征類別都有不同數量的特征圖像。例如,我們有 11 種不同的襯衫可供使用:
現在輪到你了。你需要確定要使用的特征類別并為每個類別生成特征圖像。確保它們滿足上述條件(應具有相同的尺寸,應正確定位等)。 此外,請確保正確命名特征圖像。你為圖像命名的內容將出現在元數據文件中。
完成此操作后,我們現在就可以使用庫自動生成我們的收藏了!如果你不是藝術家(或無法接觸藝術家),請不要擔心!我們 有一些示例圖像可供你使用。
注意:目前該庫僅能夠處理 PNG 圖像。我們將很快增加對其他媒體類型的支持。
3、下載庫并安裝所需的軟件包我們的生成式NFT藝術庫在 GitHub上 免費提供。
下載庫后,打開終端或命令提示符,然后運行以下命令:
1
pip install Pillow pandas progressbar2
運行此命令將安裝我們的庫所依賴的三個重要的 Python 包:
Pillow:一個圖像處理庫,可以幫助我們堆疊特征圖像。Pandas:一個數據分析庫,可以幫助我們生成和保存圖像元數據。Progressbar:一個庫,它會告訴我們圖像生成發生時的進度。4、添加自定義資產在你下載的generation-art-nft存儲庫中,會看到有一個assets文件夾。如果有可用的自定義特征藝術品, 請將此文件夾的內容替換為你的資產。在我們的例子中,assets文件夾有 8 個子文件夾,代表適當命名的類別(見上文), 每個子文件夾都有該特定類別的特征圖像。
如果沒有自定義圖稿,請保持默認資產文件夾不變。
5、配置 config.py 文件這是生成頭像集合之前的最后一步(也許也是最重要的一步)。打開config.py文件并按照以下說明進行填寫。
配置文件由一個名為 CONFIG 的 Python 變量組成。CONFIG 是一個 Python 列表(由 [] 封裝)。它包含按 需要堆疊的順序排列的特征類別列表。這里的順序非常重要。這是一個示例配置。
1234567891011128425262728293033738394044748495055758
CONFIG = [ { 'id': 1, 'name': 'background', 'directory': 'Background', 'required': True, 'rarity_weights': None, }, { 'id': 2, 'name': 'body', 'directory': 'Body', 'required': True, 'rarity_weights': 'random' }, { 'id': 3, 'name': 'eyes', 'directory': 'Expressions', 'required': True, 'rarity_weights': None }, { 'id': 4, 'name': 'head_gear', 'directory': 'Head Gear', 'required': False, 'rarity_weights': None }, { 'id': 5, 'name': 'clothes', 'directory': 'Shirt', 'required': False, 'rarity_weights': None }, { 'id': 6, 'name': 'held_item', 'directory': 'Misc', 'required': True, 'rarity_weights': None, }, { 'id': 7, 'name': 'hands', 'directory': 'Hands', 'required': True, 'rarity_weights': None, }, { 'id': 8, 'name': 'wristband', 'directory': 'Wristband', 'required': False, 'rarity_weights': [100, 5, 5, 15, 5, 5, 15, 15, 5, 1] },]
每個特征類別都表示為一個 Python 字典(由 {} 封裝)。所需要做的就是在 CONFIG 列表中按順序定義這些特征類別字典。
特征類別字典有 5 個它需要的鍵。它們是id、name、directory、required 和 rarity_weights。創建新層(或替換現有層)時, 請確保已定義所有這些鍵。
下面是為每個鍵分配值的方式:
id:層數。例如,如果主體是需要堆疊的第二個特征類別(或層),它的 id 將為 2。請注意,層仍必須以正確的順序定義。name:特征類別的名稱。這可以是你選擇的任何內容。它將出現在元數據中。directory:資產中包含該特定特征類別圖像的文件夾的名稱。required:如果每個圖像都需要此類別。某些特征類別(例如背景、身體和眼睛)必須出現在每個頭像中,而某些其他 類別(例如頭飾、腕帶或衣服)可以是可選的。我們強烈建議你將第一層所需的值設置為 true。rarity_weights:這個類別將決定你的特征有多普遍(或稀有)。查看下一部分以獲取更多詳細信息。6、配置稀有權重rarity_weights鍵可以采用三種值:None、Random 或 Python 列表。讓我們一一探索每個值。
如果將 rarity_weights 值設置為None,每個特征將被分配相同的權重。因此,如果有 5 個特征,則每個特征將出現在 大約 20% 的化身中。
如果required為 False,則同樣可能根本無法獲得該特定特征。在前一種情況下,如果required屬性設置為 false,則每個 特征將出現在大約 16.6% 的頭像中。另有 16.6% 的化身根本沒有這種特殊特征。
將rarity_weights設置為 ‘random’(注意括號)會隨機為每個類別分配權重。我們強烈建議你不要使用此功能。始終采用相同 或自定義的用戶定義稀有度。
Python 列表可能是分配稀有度權重的最常用方法。首先要做的是轉到特征類別文件夾并按名稱對特征圖像進行排序。例如, 對Wristbands文件夾進行排序將為我們生成以下內容:
可以看到我們有 9 種不同類型的腕帶。現在,我們需要定義一個 Python 列表(由 [] 封裝),其中每個數字代表按升序 分配給特定特征的權重。
如果必需的設置為 True,則權重的數量應等于該類別的特征數量。如果必需的設置為 False,那么權重的數量應該等于特征 數量加一。
在我們的例子中,如果需要腕帶,我們將在列表中定義九個權重,如果不需要,我們將定義十個權重。在后一種情況下,第 一個重量將是與根本沒有腕帶相關的重量。
讓我們看一下我們為腕帶定義的rarity_weights。
1
[100、5、5、15、5、5、15、15、5、1]
由于不需要腕帶,我們設置了十個重量(九加一)。第一個重量是與根本沒有腕帶相關的重量。第二個權重與Cheetah樂隊相關聯, 第三個權重與Giraffe樂隊相關聯,依此類推。注意這里的字母順序。
權重越高,特定特征越常見。例如,Cheetah的權重為 5,沒有手環的權重為 100。這意味著擁有Cheetah手環的幾率是沒有手環的 20 倍。
7、生成NFT藝術品集合一旦配置了 config.py 文件,現在是時候生成你的集合了。打開終端(或命令提示符)并導航到generation-art-nft文件夾 運行以下命令:
1
python nft.py
運行此命令將啟動圖像生成程序。它將首先檢查 config.py 文件是否有效。接下來,它將告訴你不同的可能組合的總數。 然后它會詢問你要創建多少個頭像。我們建議創建比你想要創建的多 20% 的內容,這樣即使在刪除重復項之后也有足夠的剩余。 在我們的例子中,我們選擇創建 12,000 個化身,盡管我們想要 10,000 個。然后它會要求你為集合命名,然后開始生成過程。
我們花了大約 30 分鐘來生成 11,957 個頭像(刪除重復后)。圖像及其相關元數據將在輸出文件夾中可用。
圖像文件夾看起來像這樣。請注意,這只是一個示例,而不是我們生成的最終松鼠:
元數據文件是一個 CSV 文件,可以將其導入 Excel 并進行分析(例如哪個特征最稀有、哪個特征組合最常見、頭像稀有度排名等)。
原文鏈接:http://blog.hubwiz.com/2022/04/07/generative-nft-art-tutorial/