AI专业教您保姆级在暗影精灵8Windows11上本地部署实现AI绘画:Stable Diffusion(万字教程,多图预警)
目錄
一、Stable Diffusion介紹???
二、Stable Diffusion環境搭建
1.Anaconda下載與安裝
2.Pycharm(IDE)下載與安裝
3.CUDA、CuDNN下載與安裝
三、Stable Diffusion的本地部署
1.克隆項目到本地
2.初始化打開項目
3.安裝環境所需庫
4.運行代碼以及效果展示
????????至此,AI繪畫 Stable Diffusion本地部署以及初步功能實現完成!制作不易,望喜歡!
一、Stable Diffusion介紹???
????????最近火熱的AI繪畫技術吸引了很多人的目光,AI繪畫今年取得如此廣泛關注的原因,有很大的功勞得益于Stable Diffusion的開源。它是由德國慕尼黑大學機器視覺與學習研究小組和Runway的研究人員基于CVPR2022的一篇論文:《High-Resolution Image Synthesis with Latent Diffusion Models》,并與其他社區團隊合作開發的一款開源模型。
?
?
? ? ? ? 以上是Stable Diffusion的效果圖。有經驗、有條件的小伙伴可以去翻閱大佬們的Paper,剛接觸AI繪畫的零基礎小白也可以隨我去一步步部署、搭建、復現這篇論文的功能哦!此項目有顯卡門檻,建議顯存越大越好。
????????Stable Diffusion是一個基于Latent Diffusion Models(潛在擴散模型,LDMs)的文圖生成(text-to-image)模型。具體來說,得益于Stability AI的計算資源支持和LAION的數據資源支持,Stable Diffusion在LAION-5B的數據庫子集上訓練了一個Latent Diffusion Models,該模型專門用于文圖生成。Latent Diffusion Models通過在一個潛在表示空間中迭代“去噪”數據來生成圖像,然后將表示結果解碼為完整的圖像,讓文本轉圖片生成能夠在10G顯存的GPU下運行,并在幾秒鐘內生成圖像,無需預處理和后處理,這確實是速度和質量上的突破。
二、Stable Diffusion環境搭建
1.Anaconda下載與安裝
? ? ? ? 1.Anaconda介紹:Anaconda是開源的Python發行版本,其包含了conda、Python等180多個科學包及其依賴項。conda是一個開源的包、環境管理器,可以用于在同一個機器上安裝不同版本的軟件包及其依賴,并能夠在不同的環境之間切換。總之,它是放實現代碼條件的容器!
? ? ? ? 2.Anaconda下載:Anaconda | The World's Most Popular Data Science Platform
進入官網后如下圖所示,點擊Download即可開始下載:
?
下載完成后在文件夾中有一個exe程序文件,雙擊打開:
?
? ? ? ? 3.Anaconda安裝:依次點擊Next-I agree-All Usrs-Next,然后到如下圖片所示:
?
把兩個選項都勾選上,這樣省去自己去添加環境變量,之后點擊Install-Next-Next-Finish就完成安裝了。
? ? ? ? 4.測試Anaconda:按下win+R,輸入cmd,打開終端,輸入conda有輸出即可,輸入conda -V可查看Anaconda版本。
????????至此Anaconda安裝完成!底下是一些配置。
? ? ? ? 5.添加Anaconda鏡像:添加鏡像源之后底下的安裝各種庫速度會快很多
打開Anaconda PowerShell Prompt(建議添加桌面快捷方式以后要經常打開):
?
輸入如下代碼即可:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --set show_channel_urls yes? ? ? ? 6.繼續輸入以下代碼創建本項目AI繪畫的基礎環境(其中包含了python,名字可自定):
conda create -n ai-painting python=3.102.Pycharm(IDE)下載與安裝
????????1.Pycharm介紹:PyCharm是一種Python?IDE(Integrated?Development?Environment,集成開發環境),帶有一整套可以幫助用戶在使用Python語言開發時提高其效率的工具,比如調試、語法高亮、項目管理、代碼跳轉、智能提示、自動完成、單元測試、版本控制。總之它是運行代碼的地方啦!
? ? ? ? 2.Pycharm下載:PyCharm: the Python IDE for Professional Developers by JetBrains
?進入官網后如下圖所示,點擊Download即可開始下載:?
?選擇Community日常學習就已足夠:
?
下載完成后在文件夾中有一個exe程序文件,雙擊打開:?
點擊Next-選擇路徑再點Next-勾選所有選項再點Next-Install-Finish,至此Pycharm安裝完成。
3.CUDA、CuDNN下載與安裝
? ? ? ??1.CUDA、CuDNN介紹:
????????CUDA 是 NVIDIA 發明的一種并行計算平臺和編程模型。它通過利用GPU的處理能力,可大幅提升計算性能;
????????CuDNN?(NVIDIA?CUDA?深度神經網絡庫)?是一個?GPU?加速的深度神經網絡基元庫,能夠以高度優化的方式實現標準例程(如前向和反向卷積、池化層、歸一化和激活層)。
????????全球的深度學習研究人員和框架開發者都依賴CuDNN?來實現高性能?GPU?加速。借助?CuDNN,研究人員和開發者可以專注于訓練神經網絡及開發軟件應用,而不必花時間進行低層級的?GPU?性能調整。
????????CuDNN?可加速廣泛應用的深度學習框架,包括?Caffe2、Chainer、Keras、MATLAB、MxNet、PaddlePaddle、PyTorch?和?TensorFlow。我們接下來就需要用到Pytorch深度學習框架。
? ? ? ? 2.CUDA下載與安裝:
首先需要查看自己的筆記本最高支持CUDA多少,方法是:win+R,輸入cmd,在命令行輸入
nvidia-smi?
可以看到中間的Driver Version驅動版本以及右上角的CUDA VersionCUDA版本,我最高支持到12.0,而底下的Pytorch官網推薦只支持最新的11.6和11.7,所以我們只需下載其中之一就可,此處我下載的是11.7(前提是你的算力得達到11.7,所以電腦配置不高的小伙伴就不好做了哦),下面可查看驅動版本和CUDA版本匹配情況,各位根據實際情況來。如果達不到最新的CUDA版本,可以去官網搜索下載低等級的,但是能做這個項目的顯卡門檻都得3060以上,一般都往最新的去下載就行。
?
?下面我們打開如下網址來下載CUDA11.7:CUDA Toolkit Archive | NVIDIA Developer
?
此處我選擇了第二個CUDA11.7.1版本,點擊Windows=>x86-64=>11=>exe(local)(本地離線下載),最后點擊Download,這里大家根據自己電腦實際情況來操作,此處我只在win11上完成。
?
?
下載完安裝CUDA時,首先設置臨時解壓目錄,默認就好,繼續往下。
?
選擇自定義安裝,自己設置安裝目錄,可放C盤可放D盤,放D盤的話可以新建一個跟預設一樣的路徑,看著舒服。
?
?自定義安裝選項如下:如需要CUDA的部分就行,然后把VS取消。?
?自定義安裝位置,我在D盤相同位置新建了個文件夾存放。?
?繼續往下,到最后CUDA安裝完成!
至于環境變量問題,一般是都設置好了,但如果你有之前版本的CUDA環境變量最好刪掉,把新安裝的優先級往前放。
如何打開并查看系統環境變量:此電腦右擊,選擇屬性,點擊中間的高級系統設置,
?
點擊環境變量,
?
?點擊系統環境變量,可查看到CUDA_PATH是否為自己新安裝的版本。?
?下面驗證是否安裝成功:win+R,輸入cmd,打開終端,輸入:
nvcc -V??
?至此,CUDA安裝完畢,下面介紹CuDNN的下載與安裝。
? ? ? ? ?3.CuDNN下載與配置
下載CuDNN的網址如下:cuDNN Archive | NVIDIA Developer
要想下載CuDNN,首先得注冊一下NVIDIA的賬號,建議用網易163或者有條件的Gmail郵箱都可,QQ郵箱勸退,可能收不到驗證郵件。
?
?驗證完郵件會填寫相關信息,其中NVIDIA的Organization URL,隨便找個URL就可。
注冊完畢,出現CuDNN下載界面,根據提示,選擇for CUDA 11.x的版本就可,點擊選擇Windows版本即可下載,這是一個zip文件。
?
下載解壓到D盤,打開可以發現CuDNN并不是一個exe,而是三個配置文件夾,是給CUDA錦上添花的,能更強悍地通過GPU進行高性能加速。
?
?于是,把這三個文件夾復制到CUDA的安裝路徑的文件夾下:D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7,即可完成CUDA與CuDNN的合體。
?
?檢查是否合體成功,需要驗證功能,打開如下文件夾:D:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.7\extras\demo_suite,在文件夾空白處右擊,選擇在終端打開,輸入ba然后迅速TAB(鍵盤左邊),意思就是打開bandwidthTest.exe文件,開始驗證。
?
驗證如下,如看見Result = PASS,即成功安裝。
?
還需驗證下deviceQuery.exe文件,運行下PASS即可。
?
至此,CUDA與CuDNN的安裝配置全部完成!
三、Stable Diffusion的本地部署
1.克隆項目到本地
Stable Diffusion項目地址:GitHub - CompVis/stable-diffusion: A latent text-to-image diffusion model
?
可以選擇直接在終端git,但需要下載git相關工具,我選擇直接點擊如上圖的綠色圖標,選擇Download ZIP即可下載項目壓縮包,下載完解壓到你的D盤,D盤是我的學術盤,我所有的代碼以及配置都存放在D盤里。
?
2.初始化打開項目
解壓后的文件夾可以直接拖到Pycharm圖標上打開:
?
?
打開之后的第一件事就是配置解釋器,因為我們之前已經創建過Anaconda的環境,直接選擇先前配置的解釋器,選中自己創建的環境即可。
?
3.安裝環境所需庫
此時我們新創建的解釋器里只有于Python相關的最基礎的幾個庫,如下圖所示:
?
我們還要根據項目所需,安裝相應的庫。可以發現,項目里有一個environment.yaml文件,里面保存著項目作者實現項目所需要的庫以及版本,我們可以根據它的版本來一鍵安裝。但是,一鍵安裝有時候會因為網速等問題出現一系列報錯失敗,所以因為庫的數量不多,本人選擇單獨一個個安裝庫,并記錄版本。
?
?1.numpy庫安裝:
打開如下Anaconda終端,激活創建的環境:
conda activate ai-painting?
?底下要安裝的庫都會安裝在這個環境(容器)里,這樣一個項目一個環境,很舒服。
執行如下代碼安裝numpy庫:
pip install numpy?
?再次介紹一下pip工具,是下載python庫的工具,但是有的時候會遇到網速問題,可以參考我以前的博客pip配置鏡像源。國內常用pip鏡像源地址及使用+永久修改_YIBO0408的博客-CSDN博客_pip 資源
2.Pytorch下載與安裝:
????????Pytorch下載踩坑特別多,比如根據官網指令下載沒有反應、網速慢等問題,在此本人選擇如下方法可避坑。
? ? ? ? 首先去官方版本匹配網址查看版本https://github.com/pytorch/vision/blob/main/README.rst
下圖是torch與torchvision以及python版本的對應關系:
?
https://github.com/pytorch/audio
下圖是torch與torchaudio的對應關系:
?
????????從上圖可總結出我們要下載的torch、torchvision、torchaudio版本分別為:torch 1.13.0, torchaudio 0.13.0, torchvison 0.14.0。torchvision是pytorch的一個圖形庫,它服務于PyTorch深度學習框架的,主要用來構建計算機視覺模型;torchaudio 支持以 wav 和 mp3 格式加載聲音文件,有加載聲音、數據增強、特征提取等功能。此項目對于torchaudio可下載可不下載,但總體完整的pytorch是需要的。
? ? ? ? 由于在線下載的不確定性,我們選擇離線下載,速度快而且下載安裝簡單。以下是torch離線安裝包下載地址:
https://download.pytorch.org/whl/torch_stable.html??????
我們找到以下三個whl文件,文件名cu117代表CUDA11.7版本,cp310代表python3.10版本,win_amd86_64代表Windows版本。
?
????????下載完需要安裝,同樣需要在環境ai-painting里的終端指令行輸入指令,打開Anaconda Powershell Prompt,激活ai-painting環境,此時需要cd(切換)到下載的目錄下,我是默認下載到Downloads里的,于是直接cd Downloads即可。
?
?此處教一下怎么切盤,切到D盤:
?
?返回上一級:(中間有空格)
?
?于是,安裝三個torch的whl文件指令為:
pip install .\torch-1.13.0+cu117-cp310-cp310-win_amd64.whl?
pip install .\torchvision-0.14.0+cu117-cp310-cp310-win_amd64.whl??
pip install .\torchaudio-0.13.0+cu117-cp310-cp310-win_amd64.whl?
? ? ? ? ?至此Pytorch框架全部安裝完畢!
最后來驗證一下Pytorch是否成功安裝:
pythonimport torchtorch.cuda.is_available()?
????????如果結果是True,代表安裝完畢啦!?
3.其他庫的安裝:
????????大部分庫只需要如下一鍵pip?install就好了,前提是配置好pip源,這樣底下下載就不會卡住了,方法是提前在指令行輸入如下:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple????????之后可以輸入以下指令一鍵安裝。?
pip install albumentations diffusers opencv-python pudb invisible-watermark imageio imageio-ffmpeg pytorch-lightning omegaconf test-tube streamlit einops torch-fidelity transformers torchmetrics kornia????????我自己一個個試完發現無阻礙無錯誤,所以大家也可以直接根據environment.yaml文件來一鍵配置環境。要cd到項目目錄下(因為下面還要把另外兩個項目克隆配置到本項目目錄下):
????????一鍵配置指令如下:
conda env create -f environment.yaml????????最后還需把另外兩個項目克隆到本地項目新建的src工作目錄中,運行指令如下:
pip install -e git+https://github.com/CompVis/taming-transformers.git@master#egg=taming-transformers pip install -e git+https://github.com/openai/CLIP.git@main#egg=clip????????此處兩個指令需要kexue上網才能成功,想了解可私信我。全部配置完項目目錄如下:
? ? ? ? 可以發現新建了src目錄,目錄下有clip和taming-transformers兩個文件夾。
4.模型的下載:
? ? ? ? 模型下載地址:CompVis (CompVis)
這里我們下載的版本是stable-diffusion-v-1-4-original(也可下載其他版本),點擊下載權重:sd-v1-4.ckpt,此處同樣需要kexue上網才可下載,如需要模型下載ckpt文件,本人已存百度網盤,可私信自取。
????????接下來,在項目目錄models/ldm下手動創建stable-diffusion-v1文件夾,用來存放下載好的權重文件,即需要把下載文件夾里的sd-v1-4.ckpt文件改名為model.ckpt,然后粘貼到手動創建的stable-diffusion-v1文件夾下即可。(注意文件名遵照原作者的名稱來,否則下面運行代碼會找不到文件)操作完項目目錄如下圖所示。
? ? ? ? 權重文件介紹:Stable-Diffusion-v-1-4 checkpoint使用 Stable-Diffusion-v-1-2 checkpoint的權重進行初始化,隨后在“laion-aesthetics v25+”分辨率為 512x512 的 225k steps上進行微調,下降 10% 改進無分類器指導抽樣的文本調節。
????????至此,調試代碼前的所有準備工作完成!
4.運行代碼以及效果展示
?1.文本轉圖片(Txt To Image(Txt2Img)):
????????打開終端,激活環境,cd到項目目錄,運行如下官方基礎代碼:
python scripts/txt2img.py --prompt "a photograph of an astronaut riding a horse" --plms?
BUG解決:
(1)ModuleNotFoundError: No module named 'ldm'
解決方式:在txt2img.py第二行添加如下代碼,旨在獲取當前工作目錄加入路徑。
sys.path.append(os.getcwd())(2)在huggingface_hub下載文件時出現使用警告如下:
UserWarning: `huggingface_hub` cache-system uses symlinks by default to efficiently store duplicated files but your machine does not support them in C:\Users\XX\.cache\huggingface\hub. Caching files will still work but in a degraded version that might require more space on your disk. This warning can be disabled by setting the `HF_HUB_DISABLE_SYMLINKS_WARNING` environment variable. For more details, see https://huggingface.co/docs/huggingface_hub/how-to-cache#limitations.
解決方式:如果想從Windows11的基于符號鏈接的緩存系統中受益,需要激活開發者模式或以管理員身份運行Python。
激活開發者模式:打開設置-->點擊隱私與安全性-->點擊開發者選項-->開發人員模式-開
以管理員身份運行Python:右擊Anaconda Powershell Prompt (Anaconda3)終端-->點擊以管理員身份運行
(3)torch.cuda.OutOfMemoryError: CUDA out of memory.
解決方式:換大顯存的顯卡,我的是6G顯存的3060筆記本GPU,按照官方基礎代碼運行會出現如上情況,我們需要調整batch size,也就是后綴說明里的--n_samples,設置其值為1;還需要把生成圖片的尺寸大小(默認512*512)改為256*256。以上是我在github問題里搜集到的,親測無效。
python scripts/txt2img.py --prompt "a photograph of an astronaut riding a horse" --plms --n_samples 1 --H 256 --W 256
?????????以上對于我的顯存依舊不夠,大家有比我更好的條件的可以試試以上代碼。適當地增加batch size(1,2,4,8,16,32...)以及圖片尺寸大小(512*512...)
????????經過各種資料調研,只為降低顯存占用,
????????一種有效的解決方式(對于我的6G筆記本GPU顯存):打開pycharm,打開txt2img.py文件,找到如下代碼,添加一行:
model.half()????????它的原理是:保存模型時,調用model.half(),將算子存儲為fp16(半精度)格式,低精度帶來了性能和功耗的優勢,但需要解決量化誤差問題。這是Pytorch框架提供的一個方便好用的trick:開啟半精度。直接可以加快運行速度、減少GPU占用,并且只有不明顯的accuracy損失。對于本項目誤差圖片差別屬實不大,本人認為可忽略。
????????添加完一行代碼,后輸入如下指令可實現跑圖:
python scripts/txt2img.py --prompt "a photograph of an astronaut riding a horse" --plms --n_samples 1 --H 512 --W 512 --n_iter 50
以上是顯存使用情況,可以看出剛好快占滿顯存。?
????????prompt可以自定義一段英文或者關鍵單詞以英文逗號分開,尺寸可根據顯卡自行設置512*512,生成圖片50張。下圖可以看出效果還是很不錯的。
????????以下是txt2img.py的使用后綴說明:
usage: txt2img.pyoptional arguments:-h, --help show this help message and exit 顯示此幫助信息并退出--prompt [PROMPT] the prompt to render 要渲染的提示信息--outdir [OUTDIR] dir to write results to 渲染結果路徑--skip_grid do not save a grid, only individual samples. Helpful when evaluating lots of samples 不保存網格,僅保存單個樣本,在評估大量樣品時很有用--skip_save do not save individual samples. For speed measurements. 不保存單個樣本,用于速度測量。--ddim_steps DDIM_STEPSnumber of ddim sampling steps ddim采樣的steps數量--plms use plms sampling 使用plms采樣 --laion400m uses the LAION400M model 使用LAION400M模型--fixed_code if enabled, uses the same starting code across samples 如果支持,跨樣本使用相同的起始代碼--ddim_eta DDIM_ETA ddim eta (eta=0.0 corresponds to deterministic sampling--n_iter N_ITER sample this often--H H image height, in pixel space 圖片高度--W W image width, in pixel space 圖片寬度--C C latent channels 潛在通道--f F downsampling factor 下采樣因子--n_samples N_SAMPLEShow many samples to produce for each given prompt. A.k.a. batch size 每個給定prompt要生成多少樣本。又名batch size(批大小)--n_rows N_ROWS rows in the grid (default: n_samples) 網格中的行(默認值:n_samples)--scale SCALE unconditional guidance scale: eps = eps(x, empty) + scale * (eps(x, cond) - eps(x, empty))--from-file FROM_FILEif specified, load prompts from this file 如果指定,從該文件加載提示--config CONFIG path to config which constructs model 構造模型的配置路徑--ckpt CKPT path to checkpoint of model 模型checkpoint的路徑--seed SEED the seed (for reproducible sampling) 種子(用于可重復采樣)--precision {full,autocast}evaluate at this precision 以此精度進行評估2.圖片轉圖片(Image To Image(Img2Img)):
????????以下是官方基礎代碼,同樣我的顯卡跑不動:
python scripts/img2img.py --prompt "A fantasy landscape, trending on artstation" --init-img <path-to-img.jpg> --strength 0.8
????????strength是一個介于 0.0 和 1.0 之間的值,它控制添加到輸入圖像的噪聲量。 接近 1.0 的值允許很多變化,但也會產生與輸入在語義上不一致的圖像。
????????以下是img2img.py的使用后綴說明:
usage:img2img.pyoptions:-h, --help show this help message and exit--prompt [PROMPT] the prompt to render--init-img [INIT_IMG]path to the input image--outdir [OUTDIR] dir to write results to--skip_grid do not save a grid, only individual samples. Helpful when evaluating lots of samples--skip_save do not save indiviual samples. For speed measurements.--ddim_steps DDIM_STEPSnumber of ddim sampling steps--plms use plms sampling--fixed_code if enabled, uses the same starting code across all samples--ddim_eta DDIM_ETA ddim eta (eta=0.0 corresponds to deterministic sampling--n_iter N_ITER sample this often--C C latent channels--f F downsampling factor, most often 8 or 16--n_samples N_SAMPLEShow many samples to produce for each given prompt. A.k.a batch size--n_rows N_ROWS rows in the grid (default: n_samples)--scale SCALE unconditional guidance scale: eps = eps(x, empty) + scale * (eps(x, cond) - eps(x, empty))--strength STRENGTH strength for noising/unnoising. 1.0 corresponds to full destruction of information in init image--from-file FROM_FILEif specified, load prompts from this file--config CONFIG path to config which constructs model--ckpt CKPT path to checkpoint of model--seed SEED the seed (for reproducible sampling)--precision {full,autocast}evaluate at this precision????????目前原作者的開源代碼并沒有對GPU顯存消耗量大的問題進行優化,經搜索有另外的分支,另一個作者對項目進行了優化,具體地址如下:https://github.com/basujindal/stable-diffusion
????????大家可去自行下載,復制粘貼相關模型去model文件夾就行,出現bug,上述已經提及并解決,其他都一樣。他把顯存消耗降到了一半,經檢測我的降到3GB,而效果可以說是同樣的好。這個項目你可以用docker也提供了GUI圖形界面,如果你不想在交互式終端執行,可以用GUI方便操作。
? ? ? ? 要想使用GUI,需要下載一個庫:
pip install gradio? ? ? ? 要想運行Txt2Img:
python optimizedSD/txt2img_gradio.py????????要想運行Img2Img:
python optimizedSD/img2img_gradio.py????????出現一個地址,點擊地址即可進入GUI:
????????以下是GUI界面,各種參數可以方便在上面調節:
????????以下是我根據我的證件照跑出來的圖,可以看到效果不錯,與現在市場上的AI繪畫程序效果相當。
????????至此,AI繪畫 Stable Diffusion本地部署以及初步功能實現完成!制作不易,望喜歡!
????????最后放一張俺女朋友的初中證件照,咱就是說妥妥的二次元美少女哇!!!
總結
以上是生活随笔為你收集整理的AI专业教您保姆级在暗影精灵8Windows11上本地部署实现AI绘画:Stable Diffusion(万字教程,多图预警)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: createjs初学-关于Ticker
- 下一篇: 一学就会 | 3步搞定弥散海报