AI 作画初体验
連續(xù)看了幾期和菜頭的公眾號(hào)上關(guān)于 AI 作畫的文章后,我也產(chǎn)生了一些興趣。作為一名理科生,立馬就行動(dòng)起來(lái),這篇文章就聊一聊我的嘗試過(guò)程。
說(shuō)起 AI 作畫,其實(shí)已經(jīng)出現(xiàn)好幾年了。最早的新聞?dòng)?#xff1a;
2018年,10月25日,一幅由人工智能創(chuàng)作出的肖像畫在紐約佳士得拍賣會(huì)上拍出43.2萬(wàn)美元的高價(jià)(約合人民幣300萬(wàn)元)。
但之前的 AI 作畫,都只存在于谷歌、NVidia這樣的頂級(jí)實(shí)驗(yàn)室中,對(duì)硬件配置有著極高的要求,普通人想要嘗試,并不太容易。
近一段時(shí)間,畫家圈刷屏了一個(gè) AI 工具:Disco Diffusion。這個(gè) AI 工具已經(jīng)進(jìn)化到 V5.2 版本,具有兩個(gè)特點(diǎn):
平民化。普通的用戶級(jí)顯卡就可以運(yùn)行,而且獲得的效果不錯(cuò),速度也能接受(幾分鐘到幾個(gè)小時(shí),取決于顯卡)。
易使用。得益于 TTI(Text to Image Generator)技術(shù)的發(fā)展,人工智能開始“理解”用戶輸入的文本,只需要提供一些關(guān)鍵詞,就能指揮 AI 來(lái)生成畫作。
現(xiàn)在 AI 作畫工具也是百花齊放,遠(yuǎn)不止 Disco Diffusion 這一款,不過(guò)這篇文章僅限于探討 Disco Diffusion。
在線嘗試
Disco Diffusion 是一個(gè)部署在 Colab 的開源項(xiàng)目,所以在線就可以作圖。Disco Diffusion V 5.2 Colab 地址:
https://colab.research.google.com/github/alembics/disco-diffusion/blob/main/Disco_Diffusion.ipynb
Colab 是 Google 家的用來(lái)在線編寫并運(yùn)行 Python 程序的 notebook,如果使用過(guò)用 Jupyter notebook,會(huì)覺(jué)得非常熟悉。
依次運(yùn)行 notebook 中的代碼,就可以出圖。當(dāng)然 Colab 每天給免費(fèi)用戶使用的計(jì)算資源有限制(有資料說(shuō)是 2 個(gè)小時(shí)時(shí)長(zhǎng),顯卡資源隨機(jī)),經(jīng)常碰到的情況就是生成到一半,服務(wù)器就斷開了。下面就是我在線嘗試生成的畫作:
這是一幅未完成的作品。如果你覺(jué)得對(duì)你非常有用,可以購(gòu)買谷歌的云計(jì)算資源,完成一幅完整的作品。
不過(guò)對(duì)一名程序員來(lái)說(shuō),怎么會(huì)這么容易就為云計(jì)算買單呢?
接著嘗試其它的 AI 工具:CogView。這是中國(guó)之光清華大學(xué)的項(xiàng)目,據(jù)團(tuán)隊(duì)發(fā)布的論文里稱“人工評(píng)估的測(cè)試中,CogView被選為最好的概率為37.02%,遠(yuǎn)遠(yuǎn)超過(guò)其他基于GAN的模型。”
來(lái)源:CogView: Mastering Text-to-Image Generation via Transformers (https://arxiv.org/abs/2105.13290)
中國(guó)團(tuán)隊(duì)出品的產(chǎn)品,當(dāng)然提示詞原生支持中文,對(duì)中國(guó)用戶比較友好。試用地址:
https://wudao.aminer.cn/CogView/index.html
使用提示語(yǔ):“一棵湖面上的櫻花樹,花瓣飄在天空中,湖水倒影” 生成的結(jié)果如下:
一次生成 8 張,速度倒是挺快,至于說(shuō)質(zhì)量,要看運(yùn)氣。運(yùn)氣好的話,還是能生成不錯(cuò)的圖像的。
再次嘗試一款國(guó)外出品的在線生成工具:Dalle-Mini。試用地址:
https://huggingface.co/spaces/dalle-mini/dalle-mini
使用 prompt:"A lonely glowing door in a beautiful wilderness, by Asher Brown Durand." 生成的圖像如下:
這個(gè)生成的速度也很快,一次生成 9 張,但效果比起和菜頭本地運(yùn)行生成出來(lái)的圖還是差遠(yuǎn)了。
沒(méi)有辦法了,還是得本地部署,雖然顯卡比較渣(RTX 2080 TI),但我可以用時(shí)間換取質(zhì)量。
本地部署
關(guān)于 Disco Diffusion 的本地部署,網(wǎng)上有許多資料,谷歌也給出了本地部署的官方文檔:
https://research.google.com/colaboratory/local-runtimes.html
但作為一名程序員,我更喜歡批量化的運(yùn)行,喜歡直接通過(guò)腳本搞定一切,所以我選擇了通過(guò) Docker 部署。
我的操作系統(tǒng)環(huán)境是 Ubuntu 20.04 LTS,NVIDIA 的驅(qū)動(dòng)和 CUDA 已經(jīng)安裝,版本如下:
照著網(wǎng)上的資料一步步操作,你總會(huì)遇到這樣或那樣的問(wèn)題,這并不是作者的問(wèn)題,而是這個(gè)世界變化太快。本次部署我也碰到了一些問(wèn)題,所以記錄一下。
上 Disco Diffusion 的 Github 下載代碼,其中包含 Dockerfile:
構(gòu)建 Docker 鏡像。
構(gòu)建 Docker 鏡像需要分兩步,首先是構(gòu)建 Prep 鏡像,然后 main 鏡像,次序不能反,因?yàn)?main 鏡像依賴于 Prep 鏡像。
cd?docker/prep docker?build?-t?disco-diffusion-prep:5.1?. cd?../main docker?build?-t?disco-diffusion:5.1?.在構(gòu)建 Prep 鏡像時(shí)可能會(huì)碰到如下錯(cuò)誤:
Step?5/16?:?RUN?wget?--no-directories?--progress=bar:force:noscroll?-P?/scratch/models?https://v-diffusion.s3.us-west-2.amazonaws.com/512x512_diffusion_uncond_finetune_008100.pt--->?Running?in?e777eaa1659f --2022-05-26?01:36:57--??https://v-diffusion.s3.us-west-2.amazonaws.com/512x512_diffusion_uncond_finetune_008100.pt Resolving?v-diffusion.s3.us-west-2.amazonaws.com?(v-diffusion.s3.us-west-2.amazonaws.com)...?52.92.146.186 Connecting?to?v-diffusion.s3.us-west-2.amazonaws.com?(v-diffusion.s3.us-west-2.amazonaws.com)|52.92.146.186|:443...?connected. HTTP?request?sent,?awaiting?response...?404?Not?Found 2022-05-26?01:36:58?ERROR?404:?Not?Found.原因就在于模型文件在服務(wù)器上已經(jīng)不存在,研究了一下 colab 中的代碼,發(fā)現(xiàn)還有一套 fallback 地址(備用地址),所以將 docker/prep/Dockerfile 中的地址修改為:
https://huggingface.co/lowlevelware/512x512_diffusion_unconditional_ImageNet/resolve/main/512x512_diffusion_uncond_finetune_008100.pt如果其它的模型還存在問(wèn)題,可以依葫蘆畫瓢,修改為備用地址即可。
不過(guò)有一個(gè)模型死活下載不下來(lái):
--2022-05-26?04:47:12--??(try:20)??https://cloudflare-ipfs.com/ipfs/Qmd2mMnDLWePKmgfS8m6ntAg4nhV5VkUyAydYBp8cWWeB7/AdaBins_nyu.pt Connecting?to?cloudflare-ipfs.com?(cloudflare-ipfs.com)|31.13.81.4|:443...?failed:?Connection?timed?out. Connecting?to?cloudflare-ipfs.com?(cloudflare-ipfs.com)|2001::6ca0:a936|:443...?failed:?Cannot?assign?requested?address. Giving?up.沒(méi)有辦法,只能上網(wǎng)找一個(gè),先下載下來(lái),地址:
https://drive.google.com/drive/folders/1nYyaQXOBjNdUJDsmJpcRpu6oE55aQoLA
然后通過(guò) COPY 指令從 host 復(fù)制到 Docker 容器:
COPY?AdaBins_nyu.pt?/scratch/pretrained/啟動(dòng) Docker 容器,運(yùn)行 Disco Diffusion 腳本。
事先準(zhǔn)備好 images_out 和 init_images 兩個(gè)目錄, 前一個(gè)目錄存放生成的圖像,后一個(gè)是初始圖像存放的位置。然后映射到容器,這樣,在 Docker 容器中生成的圖像才好被 host 主機(jī)訪問(wèn)到:
docker?run?--rm?-it?\-v?$(echo?~)/disco-diffusion/images_out:/workspace/code/images_out?\-v?$(echo?~)/disco-diffusion/init_images:/workspace/code/init_images?\--runtime=nvidia?\--name="disco-diffusion"?--ipc=host?\--user?$(id?-u):$(id?-g)?\ disco-diffusion:5.1?python?disco-diffusion/disco.py如果遇到權(quán)限問(wèn)題:
PermissionError:?[Errno?13]?Permission?denied:?'/workspace/code/images_out/TimeToDisco'可以修改一下 host 下文件的 owner 或者 mode:
sudo?chown?alex:alex?~/disco-diffusion/images_out/然后就是漫長(zhǎng)的等待。在沒(méi)有修改任何參數(shù)的情況下,生成了 49 張圖片,大小為 1280x768,大家可以欣賞一下其中的幾張:
值得一提的是,AI 程序?qū)ν粋€(gè)輸入,每次輸出并不相同,這和傳統(tǒng)的計(jì)算機(jī)程序不一樣,所以要獲得好的結(jié)果,需要多多嘗試,挑選出最好的結(jié)果。
和菜頭自從迷上了 AI 作畫后,其公眾號(hào)的題圖都是自己生成,現(xiàn)在網(wǎng)上也有一些大神,通過(guò) AI 畫出了不少令人驚艷的作品。下面這篇文章嘗試了古風(fēng)插畫,我非常喜歡:
AI 能理解和表達(dá)古詩(shī)意境嗎?來(lái)看看西喬用人工智能輔助創(chuàng)作的古風(fēng)插畫(第一輯)
你對(duì) AI 作畫怎么看,先動(dòng)手嘗試一下再來(lái)說(shuō)說(shuō)你的看法吧!
總結(jié)
- 上一篇: 做网站需要多少钱?做网站的费用是多少呢?
- 下一篇: 谷歌邮箱无法与服务器建立连接失败,GMA