請注意,我已經推出了“夢工廠”,這是對此的重大升級。它有一個(可選)GUI、真正的同步多 GPU 支援、具有完整 EXIF 元資料支援的整合圖庫以及許多其他新功能。
我放棄了 VQGAN 和 Disco Diffusion 支持,轉而專注於穩定擴散,因此,如果您想要 VQGAN 和/或 Disco Diffusion,現在應該堅持使用此選項。否則我鼓勵大家遷移到夢工廠!我將繼續修補此儲存庫上的錯誤修復,但我可能不會繼續添加新功能。
用於在本地自動創建大批量人工智慧生成的藝術品。讓您的 GPU 全天候 24/7 地製作人工智慧生成的藝術作品,並能夠自動執行大型提示隊列,結合用戶選擇的主題、風格/藝術家等!範例圖片後提供了有關哪些型號可用的更多資訊。
我透過此過程創建的一些示例圖像(這些是經過精心挑选和銳化的):
請注意,我沒有創建或訓練該專案中使用的模型,也沒有參與原始編碼。我只是修改了原始的 colab 版本,以便它們可以在本地運行,並添加了一些對自動化的支援。目前支援的模型,及其原始實現的連結:
您需要 Nvidia GPU,最好有足夠的 VRAM。 12GB VRAM 足以支援 512x512 輸出影像,具體取決於型號和設置,8GB 應足以支援 384x384(8GB 應被視為合理的最小值!)。要產生 1024x1024 影像,您需要 ~24GB 或更多 VRAM。產生小圖像,然後透過 ESRGAN 或其他一些套件進行放大也能提供非常好的結果。
它應該可以在 AMD GPU 上運行,但您需要在 Linux 上安裝 ROCm 版本的 Pytorch。我沒有 AMD GPU 可以放入 Linux 機器中,所以我自己沒有測試過。
這些指令在配備 Nvidia 3080 Ti GPU (12GB VRAM) 的 Windows 10 桌面以及配備舊版 Nvidia Tesla M40 GPU (24GB VRAM) 的 Ubuntu Server 20.04.3 系統上進行了測試。
[1]安裝Anaconda,開啟root終端,建立新環境(並啟動):
conda create --name ai-art python=3.9
conda activate ai-art
[2]安裝Pytorch:
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
請注意,您可以使用此處的線上工具自訂 Pytorch 安裝。
[3]安裝其他需要的Python套件:
conda install -c anaconda git urllib3
pip install transformers keyboard pillow ftfy regex tqdm omegaconf pytorch-lightning IPython kornia imageio imageio-ffmpeg einops torch_optimizer
[4]複製此儲存庫並切換到其目錄:
git clone https://github.com/rbbrdckybk/ai-art-generator
cd ai-art-generator
請注意,Linux 使用者可能需要在克隆命令中將 URL 引起來單引號。
[5]複製其他所需的儲存庫:
git clone https://github.com/openai/CLIP
git clone https://github.com/CompVis/taming-transformers
[6]下載預設的VQGAN預訓練模型檢查點檔:
mkdir checkpoints
curl -L -o checkpoints/vqgan_imagenet_f16_16384.yaml -C - "https://heibox.uni-heidelberg.de/d/a7530b09fed84f80a887/files/?p=%2Fconfigs%2Fmodel.yaml&dl=1"
curl -L -o checkpoints/vqgan_imagenet_f16_16384.ckpt -C - "https://heibox.uni-heidelberg.de/d/a7530b09fed84f80a887/files/?p=%2Fckpts%2Flast.ckpt&dl=1"
請注意,Linux 使用者應將curl 命令中的雙引號替換為單引號。
[7] (可選)下載其他預訓練模型:
額外的型號不是必需的,但可以為您提供更多選擇。這是可用的預訓練模型的詳細清單。
例如,如果您還想要 FFHQ 模型(在臉部上訓練):
curl -L -o checkpoints/ffhq.yaml -C - "https://app.koofr.net/content/links/0fc005bf-3dca-4079-9d40-cdf38d42cd7a/files/get/2021-04-23T18-19-01-project.yaml?path=%2F2021-04-23T18-19-01_ffhq_transformer%2Fconfigs%2F2021-04-23T18-19-01-project.yaml&force"
curl -L -o checkpoints/ffhq.ckpt -C - "https://app.koofr.net/content/links/0fc005bf-3dca-4079-9d40-cdf38d42cd7a/files/get/last.ckpt?path=%2F2021-04-23T18-19-01_ffhq_transformer%2Fcheckpoints%2Flast.ckpt"
[8] (可選)測試VQGAN+CLIP:
python vqgan.py -s 128 128 -i 200 -p "a red apple" -o output/output.png
您應該會看到在輸出目錄中創建了output.png,它應該大致類似於一個蘋果。
[9]安裝用於 CLIP 引導擴散的軟體包(如果您只對 VQGAN+CLIP 感興趣,您可以跳過從這裡到最後的所有內容):
pip install ipywidgets omegaconf torch-fidelity einops wandb opencv-python matplotlib lpips datetime timm
conda install pandas
[10]用於 CLIP 引導擴散的克隆儲存庫:
git clone https://github.com/crowsonkb/guided-diffusion
git clone https://github.com/assafshocher/ResizeRight
git clone https://github.com/CompVis/latent-diffusion
[11]下載 CLIP 引導擴散所需的模型:
mkdir contentmodels
curl -L -o content/models/256x256_diffusion_uncond.pt -C - "https://openaipublic.blob.core.windows.net/diffusion/jul-2021/256x256_diffusion_uncond.pt"
curl -L -o content/models/512x512_diffusion_uncond_finetune_008100.pt -C - "http://batbot.tv/ai/models/guided-diffusion/512x512_diffusion_uncond_finetune_008100.pt"
curl -L -o content/models/secondary_model_imagenet_2.pth -C - "https://ipfs.pollinations.ai/ipfs/bafybeibaawhhk7fhyhvmm7x24zwwkeuocuizbqbcg5nqx64jq42j75rdiy/secondary_model_imagenet_2.pth"
mkdir contentmodelssuperres
curl -L -o content/models/superres/project.yaml -C - "https://heibox.uni-heidelberg.de/f/31a76b13ea27482981b4/?dl=1"
curl -L -o content/models/superres/last.ckpt -C - "https://heibox.uni-heidelberg.de/f/578df07c8fc04ffbadf3/?dl=1"
請注意,Linux 使用者應再次將curl 指令中的雙引號替換為單引號,並將mkdir反斜線替換為正斜線。
[12] (可選)測試 CLIP 引導擴散:
python diffusion.py -s 128 128 -i 200 -p "a red apple" -o output.png
您應該會看到在輸出目錄中創建了output.png,它應該大致類似於一個蘋果。
[13] Clone Stable Diffusion 儲存庫(如果你對 SD 不感興趣,你可以跳過從這裡到最後的所有內容):
git clone https://github.com/rbbrdckybk/stable-diffusion
[14]安裝穩定擴散所需的附加相依性:
pip install diffusers
[15]下載穩定擴散預訓練檢查點檔:
mkdir stable-diffusionmodelsldmstable-diffusion-v1
curl -L -o stable-diffusion/models/ldm/stable-diffusion-v1/model.ckpt -C - "https://huggingface.co/CompVis/stable-diffusion-v-1-4-original/resolve/main/sd-v1-4.ckpt"
如果curl 指令不下載檢查點,則它會在登入後被控制。您需要在此處註冊(僅需要電子郵件和姓名),然後您可以在此處下載檢查點文件。
下載後,您需要將 .ckpt 檔案放置在上面建立的目錄中,並將其命名為model.ckpt 。
[16] (可選)測試穩定擴散:
測試 SD 最簡單的方法是使用!PROCESS = stablediff和單一主題建立一個簡單的提示檔案。有關詳細信息,請參閱example-prompts.txt和下一節。假設您首先建立一個名為test.txt的簡單提示文件,您可以透過執行進行測試:
python make_art.py test.txt
如果成功,圖像應保存到輸出目錄(組織到以日期和提示檔案命名的子目錄中)。
[17]設定 ESRGAN/GFPGAN(如果您不打算升級影像,則可以跳過此步驟和其他所有內容):
git clone https://github.com/xinntao/Real-ESRGAN
pip install basicsr facexlib gfpgan
cd Real-ESRGAN
curl -L -o experiments/pretrained_models/RealESRGAN_x4plus.pth -C - "https://github.com/xinntao/Real-ESRGAN/releases/download/v0.1.0/RealESRGAN_x4plus.pth"
python setup.py develop
cd ..
你完成了!
如果您在運行時遇到 GPU VRAM 不足之外的錯誤,並且有一段時間沒有更新您的安裝,請嘗試更新一些更重要的軟體包,例如:
pip install transformers -U
本質上,您只需要建立一個文字文件,其中包含要用於生成圖像的主題和樣式。如果提示檔案中有 5 個主題和 20 種風格,則總共將建立 100 個輸出影像(每個主題 20 個風格影像)。
查看example-prompts.txt以了解提示檔案的外觀。現在您可以忽略除[主題]和[樣式]區域之外的所有內容。以“#”開頭的行是註釋,將被忽略,以“!”開頭的行是設定指令,將在下一節中進行解釋。現在,只需使用您想要使用的內容修改範例主題和樣式即可。
根據您的喜好填充example-prompts.txt後,您只需運行:
python make_art.py example-prompts.txt
根據您的硬體和設置,創建每個圖像將需要幾秒鐘到幾個小時(在較舊的硬體上)。如果您可以運行穩定擴散,我強烈推薦它以獲得最佳結果 - 無論是速度還是影像品質。
預設情況下,輸出影像在output/[目前日期]-[提示檔案名稱]/目錄中建立。輸出目錄將包含每個圖像的 JPG 文件,該文件以用於創建它的主題和風格命名。例如,如果您將“摩托車上的猴子”作為主題之一,並將“畢加索的作品”作為風格,則輸出圖像將創建為output/[當前日期]-[提示檔案名稱]/a -monkey- on-a-motorcycle-by-picasso.jpg(檔案名稱會根據所使用的進程而略有不同)。
您可以隨時按下CTRL+SHIFT+P暫停執行(暫停將在目前影像渲染完成後生效)。再按CTRL+SHIFT+P可取消暫停。如果您在主電腦上執行此程式並且需要暫時使用 GPU 來做其他事情,那麼這很有用。如果您變更了提示文件,您也可以按CTRL+SHIFT+R重新載入提示檔案(目前工作佇列將被丟棄,並根據提示檔案的內容建立新的工作佇列)。請注意,鍵盤輸入僅適用於 Windows。
預設情況下,用於建立每個影像的設定將作為元資料保存在每個輸出 JPG 檔案中。您可以使用任何 EXIF 實用程式讀回元資料信息,或者只需右鍵單擊 Windows 資源管理器中的映像檔並選擇“屬性”,然後單擊“詳細資料”窗格即可。 「註釋」欄位包含用於建立影像的命令。
指令可以包含在提示檔案中,以修改其後的所有提示的設定。這些設定指令是透過將它們放在提示檔案的 [subject] 區域內的自己的行上來指定的,格式如下:
![要更改的設定] = [新值]
對於[setting to change] ,有效的指令是:
一些例子:
!PROCESS = vqgan
這將設定目前的人工智慧影像生成過程。有效選項包括vqgan (用於 VQGAN+CLIP)、擴散(用於 CLIP 引導擴散(Disco 擴散))或stablediff (用於穩定擴散)。
!CUDA_DEVICE = 0
這將強制使用 GPU 0(預設)。如果您有多個 GPU,則很有用 - 您可以運行多個實例,每個實例都有自己的提示文件,指定唯一的 GPU ID。
!WIDTH = 384
!HEIGHT = 384
這會將輸出影像大小設定為 384x384。較大的輸出大小需要更多的 GPU VRAM。請注意,對於穩定擴散,這些值應為 64 的倍數。
!TRANSFORMER = ffhq
這將告訴 VQGAN 使用 FFHQ 轉換器(在臉部方面效果更好),而不是預設的(vqgan_imagenet_f16_16384)。您可以按照上面設定說明中的步驟 7 取得 ffhq 轉換器以及其他幾個轉換器的連結。
無論您在此處指定什麼,都必須以 .ckpt 和 .yaml 檔案的形式存在於檢查點目錄中。
!INPUT_IMAGE = samples/face-input.jpg
這將使用樣本/face-input.jpg(或您指定的任何圖像)作為起始圖像,而不是預設的隨機雜訊。輸入影像的長寬比必須與輸出影像相同,才能獲得良好的效果。請注意,與穩定擴散一起使用時,輸出影像尺寸將與輸入影像相同(您的高度/寬度設定將被忽略)。
!SEED = 42
這將使用 42 作為輸入種子值,而不是隨機數(預設值)。對於再現性很有用 - 當所有其他參數相同時,使用相同的種子值應該在多次運行中產生相同的圖像。設定為無或 -1 以重設為使用隨機值。
!INPUT_IMAGE =
將這些值中的任何一個設為空都會將其恢復為預設值。所以在這個例子中,不會使用起始影像。
!STEPS = 50
將使用穩定擴散時的步驟數(類似於迭代)設定為 50(預設值)。較高的值需要更多時間,並且可能會提高影像品質。與較低的值相比,超過 100 的值很少會產生明顯的差異。
!SCALE = 7.5
將使用穩定擴散時的引導比例設定為 7.5(預設值)。較高的值(在某種程度上,超過約 25 結果可能會很奇怪)將導致輸出更緊密地遵循您的提示。
!SAMPLES = 1
將使用穩定擴散時的採樣次數設定為 1(預設值)。值超過 1 將導致為每個提示建立多個輸出影像,每個影像會稍微節省時間。增加此值不需要 GPU VRAM 成本。
!STRENGTH = 0.75
將起始影像的影響設定為 0.75(預設值)。僅在對輸入影像使用穩定擴散時相關。有效值介於 0-1 之間,1 對應於輸入影像的完全破壞,0 對應於使起始影像完全完好無損。 0.25 到 0.75 之間的值往往會產生有趣的結果。
!SD_LOW_MEMORY = no
使用穩定擴散時,使用 GPU 記憶體要求低得多的分叉儲存庫(是/否)?將其設定為yes將切換為使用記憶體最佳化版本的 SD,這將允許您使用更少的 GPU 記憶體創建更高解析度的映像(512x512 映像應該只需要大約 4GB 的 VRAM)。代價是,與預設的官方儲存庫相比,推理要慢得多。作為比較:在 RTX 3060 上,預設設定下建立 512x512 影像大約需要 12 秒;當!SD_LOW_MEMORY = yes時,相同的圖像需要一分鐘以上的時間。建議關閉此選項,除非您的 GPU VRAM 低於 8GB,或想要在升級之前嘗試建立更大的影像。
!USE_UPSCALE = no
自動升級使用穩定擴散創建的影像(是/否)?使用 ESRGAN/GFPGAN(請參閱下面的其他設定)。
!UPSCALE_AMOUNT = 2
當!USE_UPSCALE = yes時縮放多少。預設為 2.0x;較高的值需要更多的 VRAM 和時間。
!UPSCALE_FACE_ENH = no
升級時是否使用 GFPGAN(相對於預設 ESRGAN)。 GFPGAN 對於臉部可提供最佳結果,但如果用於非臉部主體,則可能會提供稍差的結果。
!UPSCALE_KEEP_ORG = no
升級時保留原始未修改的影像(是/否)?如果設定為 no(預設值),原始影像將被刪除。如果設定為 yes,原始影像將保存在影像輸出資料夾的/original子目錄中。
!REPEAT = no
當提示文件中的所有作業完成後,重新啟動回到文件頂部(是/否)?預設值為“否”,這將在所有作業完成時終止執行。
TODO:完成設定範例並新增使用提示/範例,文件 random_art.py