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