一周之內(nèi)體驗了:Diffusion,CLIP崇决,Segment Anything,Insightface底挫,LoRA恒傻,ConnectNet 諸多算法的實際應(yīng)用,全部是本地部署建邓,0花費盈厘。
1 選擇 AI 繪畫工具
目前 Ai 繪畫界有兩大主流工具,Midjourney(簡稱MJ) 和 Stable Diffusion(稱SD)官边。
MJ 于 2022 年 3 月首次面世沸手,已從 V3 模型發(fā)展至 V5 模型,SD 由 Stability AI 公司和非營利研究人員在2022年8月推出的注簿,可在本地免費部署契吉。
MJ 更適合新手入門,10刀/月诡渴,30刀/月捐晶,60刀/月三檔收費;低付費的圖片是共享的玩徊,高付費服務(wù)能一對一出圖租悄;學(xué)習(xí)提示詞門檻低;有一定的審核要求恩袱,敏感詞比較多泣棋;少量設(shè)置后的畫面看起來就很炫,但不太受控畔塔,自娛自樂還行潭辈,難以穩(wěn)定輸出鸯屿。
SD 可以設(shè)置大量參數(shù),下載海量模型把敢,本地部署寄摆,提示詞百無禁忌,針對實際工作中的目標(biāo)修赞,更需要 SD 來定制婶恼。它需要本地硬件支持,以及更高的學(xué)習(xí)成本柏副。
如果只想玩一下勾邦,國內(nèi)也有一些免費平臺,瀏覽器端和手機端微信端都有割择,就是生成效果比較差眷篇。
從兩個產(chǎn)品不同的生態(tài)圈就可以看出,開放的系統(tǒng)明顯呈現(xiàn)出眾人拾柴火焰高的趨勢荔泳,從平臺蕉饼、插件、模型玛歌,到文檔昧港,工具都越做越好。另外沾鳄,LoRA 技術(shù)讓大家都可以自己訓(xùn)練自己的增補小模型慨飘,Civitai圈的交流氛圍,加入的人也越來越多译荞。這就相當(dāng)于MJ一個公司和所有人拼瓤的,又沒有特別過人的核心技術(shù)。
藝術(shù)給人帶來的體驗和工作體驗不太一樣吞歼,大家更向往彼此的認(rèn)同感圈膏,除了經(jīng)濟價值,工作本身就是工作的動力篙骡,這也成為一種巨大助推力稽坤。
2 搭建 SD 環(huán)境
2.1 介紹
Stable Diffusion (簡稱:SD)支持:通過描述生成圖,或者改圖糯俗,做自己的卡通頭像尿褪,生成各種風(fēng)格的畫作,給線稿上色得湘,修復(fù)相片杖玲,換臉,摳圖 …… 點兩下鼠標(biāo)淘正,幾秒就能生成一張作品摆马。在自家機器上搭建一個 SD 環(huán)境臼闻,不用花錢,不用上網(wǎng)也能使用囤采。
不過還是有點門檻述呐,比如:
- 安裝時需要 “科學(xué)”連接下載網(wǎng)站(否則無法隨心選擇海量模型)
- 英文尚可,能看懂界面和簡單說明(用翻譯軟件也不是不行)
- 會一點Python如遇問題自己能解決(也不一定會遇到問題)
- 有帶6G以上顯存的 GPU 的機器(沒有 GPU 會很慢蕉毯,但也能用)
- 至少 20G 的磁盤剩余空間(這個必須有乓搬,建議 50G,最好是SSD恕刘,否則加載模型特別慢)
本教程中我使用了 Ubuntu + Docker 方式安裝缤谎,這是目前我能找到最簡單的方法,幾乎只需要輸入一個命令褐着,即可運行基本功能;當(dāng)然前提是事先安裝了 Ubuntu 系統(tǒng) Docker 環(huán)境以及 GPU 驅(qū)動托呕。
這僅僅是運行環(huán)境含蓉,后面涉及各種模型的組合,調(diào)參项郊,插件馅扣,了解工具周邊生態(tài),與其它工具聯(lián)合使用着降;還有審美差油,光影的感覺,對受眾內(nèi)心的揣摩…… 總之任洞,當(dāng)一個 AI 畫手也不是件容易的事蓄喇。
2.2 基礎(chǔ)環(huán)境
操作系統(tǒng): Ubuntu 22.04
顯卡: NVIDIA GTX 1080 Ti 11GB 顯存
2.3 安裝方法
SD github 項目中推薦直接在系統(tǒng)中安裝環(huán)境。我則更喜歡把 Python交掏、git妆偏、conda 一系列工具都打包在內(nèi)的 docker 安裝方式,這避免了與機器上安裝的其它工具的沖突盅弛。
siutin/stable-diffusion-webui-docker 是目前下載量最大的 Stable Diffusion 鏡像钱骂,幾乎和 Stable Diffusion github 版本同步更新,相比幾個同類鏡像挪鹏,它的大小和易用性也是最好的见秽。
2.3.1 CPU 版本
$ docker run -it --name sdw --network host \
-v $(pwd)/models:/app/stable-diffusion-webui/models \
-v $(pwd)/outputs:/app/stable-diffusion-webui/outputs \
-v $(pwd)/extensions:/app/stable-diffusion-webui/extensions \
--rm siutin/stable-diffusion-webui-docker:latest-cpu \
bash # 安裝
$ ./webui.sh --skip-torch-cuda-test --use-cpu all --share --precision full --no-half --listen # 運行
下載后安裝模型即可使用。
參數(shù):--no-half 由于我這邊一直報錯讨盒,所以設(shè)置了該參數(shù)解取。
參數(shù):--listen 設(shè)置后可使用其 ip 地址訪問服務(wù),否則只允許本機用 127.0.0.1訪問催植,服務(wù)默認(rèn)端口為 7860肮蛹。
參數(shù):--enable-insecure-extension-access 允許使用插件
2.3.2 GPU 版本
$ nvidia-docker run -it --name sdw --gpus all --network host \
-v $(pwd)/models:/app/stable-diffusion-webui/models \
-v $(pwd)/outputs:/app/stable-diffusion-webui/outputs \
-v $(pwd)/extensions:/app/stable-diffusion-webui/extensions \
--rm siutin/stable-diffusion-webui-docker:cuda-v1.5.1-2023-08-02 \
bash
$ ./webui.sh --share --listen --enable-insecure-extension-access
2.3.3 下載模型
我下載的第一個模型是:
https://huggingface.co/runwayml/stable-diffusion-v1-5/resolve/main/v1-5-pruned-emaonly.safetensors
可用于生成真實場景勺择,修圖,換圖等伦忠,大小為4.2G省核,下載后放入 stable-diffusion-webui/models/Stable-diffusion/ 目錄。
2.3.4 使用
如果上述程序不報錯昆码,在瀏覽器打開 127.0.0.1:7860气忠,即可看到 gradio 生成的界面。
2.3.5 注意事項
- 請將模型赋咽、輸出旧噪、擴展名映射到 docker 以外的目錄,以保證正常保存數(shù)據(jù)脓匿。
- 以 bash 方式進入鏡像后淘钟,使用命令運行 webui.sh 工具,這樣可以在重啟時一定程度保留現(xiàn)場陪毡,也較方便調(diào)試米母。
- 安裝時,我的CPU版正常運行了毡琉,GPU版老是報錯铁瞒,于是升級了宿主機的GPU驅(qū)動(從470升到535,nvidia-driver-535, nvidia-utils-535兩個包)桅滋,重啟后一切正常
- CPU版本工具 3分鐘生成一張圖慧耍,GPU版本 7秒生成一張圖,是完全不同的體驗丐谋。
- 插件和模型數(shù)據(jù)未必都下載到 models 目錄下芍碧,所以我后來做了 docker commit,以保存現(xiàn)場笋鄙。
2.4 調(diào)試命令
- 查看 torch 可否支持當(dāng)前 GPU
python -c "import torch; print(torch.cuda.is_available())"
- 查看當(dāng)前 GPU 硬件
lspci |grep VGA
- venv
venv是Python的虛擬環(huán)境工具师枣,以支持多個Python環(huán)境并存。它是Python 3.3版本后標(biāo)準(zhǔn)庫中的一個模塊萧落。stable diffusion 使用了venv 將環(huán)境搭建在 /app/stable-diffusion-webui/venv/下践美,自行調(diào)試需設(shè)置 venv:
python -m venv venv # 設(shè)置環(huán)境
source venv/bin/activate # 激活環(huán)境
3 源碼
源碼并不多,去掉 .git 目錄找岖,只有4M左右陨倡。當(dāng)前版本共 160 個 python 文件,主要包含:內(nèi)置函數(shù)extensions-builtin许布,支持工具scripts兴革,以及主功能模塊modules。整體 python 代碼量在 3W-4W 行左右。界面基于 gradio 框架開發(fā)杂曲。
4 相關(guān)資源
Stable Diffusion 源碼
相關(guān) Docker 鏡像
最詳細(xì)的WEBUI啟動參數(shù)