書畫家點(diǎn)贊!基于飛槳繪制中國(guó)水墨山水畫

項(xiàng)目簡(jiǎn)介
水墨畫是中國(guó)畫的一個(gè)分支,水墨山水就是純用水墨不設(shè)顏色的山水畫體。其相傳始于唐,成于宋,盛于元,明清兩代有所發(fā)展。作畫講究立意雋永,氣韻生動(dòng),形成了整套以水墨為主體的表現(xiàn)技法。其筆法糸以勾斫、皴擦、點(diǎn)染為主導(dǎo),長(zhǎng)于結(jié)構(gòu)和質(zhì)感的表現(xiàn);其墨法糸于墨的濃淡干濕,潑破積烘為主導(dǎo),“水暈?zāi)隆?、“如兼五彩”的效果,長(zhǎng)于體積和氣韻的珍現(xiàn)。[7]??
AIGC(AI-Generated Content,AI生成內(nèi)容)是一種新型的內(nèi)容創(chuàng)作方式,其利用擴(kuò)散模型、生成對(duì)抗網(wǎng)絡(luò)、大型預(yù)訓(xùn)練模型等人工智能技術(shù),對(duì)已有數(shù)據(jù)進(jìn)行學(xué)習(xí)和模式識(shí)別,以適當(dāng)?shù)姆夯芰ι上嚓P(guān)內(nèi)容。[8]中國(guó)水墨山水畫算的上中國(guó)文化的瑰寶。最近 AIGC技術(shù)這么火,碰巧家中有位長(zhǎng)者亦石[1]畫得一手好山水,那么就來(lái)看看,當(dāng)中國(guó)水墨山水遇上AIGC,模型學(xué)的如何,畫得可有意境 ?本文使用shanshui_style和shanshui_gen_style兩個(gè)模型,利用飛槳的PaddleNLP的PPDiffusers 中的Textual Inversion[3]技術(shù)學(xué)習(xí)畫作的風(fēng)格,預(yù)訓(xùn)練模型為runwayml/stable-diffusion-v1-5。
megemini/shanshui_style該模型可以生成水墨山水畫。
megemini/shanshui_gen_style該模型可以生成水墨山水畫的具像圖片
megemini/shanshui_gen_style 模型的來(lái)歷:
筆者看到官方例子[4]中的StableDiffusionMegaPipeline有個(gè)img2img,出于好奇,就用水墨畫作為輸入,結(jié)果就是類似下圖中 megemini/shanshui_gen_style風(fēng)格的圖片。當(dāng)時(shí),確實(shí)是有點(diǎn)被震驚,感覺很像是水墨畫的一種具像,有種中西藝術(shù)揉合的樣子,然后就用這些由水墨畫生成的圖片,又訓(xùn)練了Textual Inversion的style,最后就有了megemini/shanshui_gen_style。
來(lái)看看這兩個(gè)模型的表現(xiàn)如何:
案例一
Model:?megemini/shanshui_stylePrompt: A fantasy landscape in <shanshui-style>

案例二
Model:?megemini/shanshui_stylePrompt: A fantasy landscape in <shanshui-style>

案例三
Model:?megemini/shanshui_stylePrompt: A fantasy landscape in <shanshui-style>

案例四
Model:?megemini/shanshui_gen_stylePrompt:?A fantasy landscape in <shanshui-gen-style>

案例五
Model:?megemini/shanshui_gen_stylePrompt:?A fantasy landscape in <shanshui-gen-style>

案例六
Model:?megemini/shanshui_gen_stylePrompt:?A fantasy landscape in <shanshui-gen-style>

展示一下當(dāng)時(shí)震撼到我的圖(runwayml/stable-diffusion-v1-5 生成):
原圖

生成(并用于此模型的訓(xùn)練)

Prompt:A fantasy landscape
原圖

生成(并用于此模型的訓(xùn)練)

Prompt:A fantasy landscape
原圖

生成(并用于此模型的訓(xùn)練)

Prompt:A fantasy landscape
原圖

生成(并用于此模型的訓(xùn)練)

Prompt:A fantasy landscape
原圖

生成(并用于此模型的訓(xùn)練)

Prompt:A fantasy landscape,trending on artstation
如上圖所示,第一張生成的圖片上面的文字并非真的是通順的文字,但是,其風(fēng)格學(xué)習(xí)能力已經(jīng)非常驚人。我將這些圖片發(fā)給亦石老師,請(qǐng)其幫忙評(píng)價(jià),他先是發(fā)問(wèn):“這畫是誰(shuí)的作品?”。當(dāng)?shù)弥@些作品是基于飛槳實(shí)現(xiàn)繪制時(shí),他立馬發(fā)來(lái)5個(gè)大拇指表情。接下來(lái),就看看怎么一步步訓(xùn)練這些模型,并生成圖片。項(xiàng)目已經(jīng)發(fā)布在AI Studio上,歡迎一起交流學(xué)習(xí)。
鏈接
https://aistudio.baidu.com/aistudio/projectdetail/6103948
水墨山水畫之shanshui_style模型
模型訓(xùn)練
數(shù)據(jù)
這里我將家人的一些水墨畫放到了項(xiàng)目中的 ./train_shanshui/?目錄下面?(傳播時(shí)要注明作者哦~),您也可以自己添加自己喜歡的畫作。

工具
本項(xiàng)目使用的是Textual Inversion,PaddleNLP的PPDiffusers 封裝了train_textual_inversion.py,可以很方便地調(diào)用。
方法
這里學(xué)習(xí)的是風(fēng)格,也就是利用模型學(xué)習(xí)水墨山水畫的風(fēng)格。
預(yù)訓(xùn)練模型
這里用的是 runwayml/stable-diffusion-v1-5。萬(wàn)事具備,只需一行命令就可以訓(xùn)練模型了,訓(xùn)練之前記得要安裝必要的包。
幾個(gè)主要的參數(shù):
模型預(yù)測(cè)
模型預(yù)測(cè)利用 PPDiffusers 的 StableDiffusion Pipeline。這里注意,要在 prompt 中加入訓(xùn)練階段 placeholder_token 參數(shù)設(shè)置的token <shanshui-style>。另外,生成圖片的分辨率越高,貌似生成的圖片質(zhì)量越好。

水墨山水畫具像圖之shanshui_gen_style模型
模型訓(xùn)練
數(shù)據(jù)
這里需要利用 Stable diffusion 的 img2img,將之前用到的水墨畫先生成具像圖,作為此模型的訓(xùn)練數(shù)據(jù)。

工具
同 shanshui_style,這里依然用的是 Textual Inversion,PaddleNLP的PPDiffusers封裝了train_textual_inversion.py。
方法
同 shanshui_style,這里學(xué)習(xí)的是風(fēng)格,也就是利用模型學(xué)習(xí)水墨山水畫具像之后的風(fēng)格。
預(yù)訓(xùn)練模型
同 shanshui_style,這里用的是 runwayml/stable-diffusion-v1-5。這里單獨(dú)介紹一下如何用?img2img 生成圖片:

只需要將 ./train_shanshui/ 目錄下面的圖片通過(guò)上面的 img2img 方法生成具像圖片,然后保存下來(lái)即可。這里已經(jīng)提前生成好了,保存在 ./train_shanshui_gen 目錄下。您可以直接使用,也可以換個(gè) prompt 重新生成一下 ~有了這些圖片,就可以訓(xùn)練 shanshui_gen_style 模型了,方法跟 shanshui_style 一樣。
模型預(yù)測(cè)
同樣,模型預(yù)測(cè)利用 PPDiffusers 的 StableDiffusion Pipeline。這里注意,要在 prompt 中加入上面 placeholder_token 設(shè)置的token?<shanshui-gen-style>。?

HuggingFace 模型與應(yīng)用
AI Studio項(xiàng)目詳細(xì)介紹了如何在 AI Studio 中使用 HuggingFace[5],有需要的同學(xué)可以看看。該項(xiàng)目提供了一個(gè)可以將模型上傳到 HuggingFace 的方法:upload_lora_folder
鏈接
https://aistudio.baidu.com/aistudio/projectdetail/5513258
使用前請(qǐng)確保已經(jīng)登錄了HuggingFace Hub!?
雖然名字是 lora 相關(guān)的,但是沒(méi)關(guān)系,模型上傳之后手動(dòng)修改一下 Model card 即可。這里已經(jīng)將兩個(gè)模型上傳上去了:
模型?megemini/shanshui_style?可以生成水墨山水畫。
模型?megemini/shanshui_gen_style?可以生成水墨山水畫的具像圖片。
另外,我在 AI Studio 上建了相關(guān)的應(yīng)用,即如何使用Gradio[6]自建應(yīng)用[9]:https://aistudio.baidu.com/aistudio/projectdetail/6103948又可以水一期的話題了,并且操作起來(lái)很簡(jiǎn)單??傊?,多看多學(xué)多試。欣賞別人的AIGC成果,遠(yuǎn)沒(méi)有自己摸索來(lái)的有成就感,不多說(shuō)了,快來(lái)試試吧!
參考資料
[1] 亦石https://baike.baidu.com/item/%E4%BA%A6%E7%9F%B3/18606991?fr=aladdin?
[2]【飛槳黑客松】AIGC - DreamBooth LoRA 文生圖模型微調(diào), https://aistudio.baidu.com/aistudio/projectdetail/5513258
[3] Textual Inversion 微調(diào)代碼, https://github.com/PaddlePaddle/PaddleNLP/tree/develop/ppdiffusers/examples/textual_inversion#textual-inversion-%E5%BE%AE%E8%B0%83%E4%BB%A3%E7%A0%81
[4]?Community?Examples,https://github.com/PaddlePaddle/PaddleNLP/tree/develop/ppdiffusers/examples/community#community-examples
[5] HuggingFace, https://huggingface.co/
[6] gradio, https://gradio.app/docs/
[7] 水墨山水畫,https:// https://baike.baidu.com/item/%E6%B0%B4%E5%A2%A8%E5%B1%B1%E6%B0%B4%E7%94%BB/4728942?fr=aladdin
[8] AIGC:從入門到精通, https://zhuanlan.zhihu.com/p/610229253
[9] 【Hackathon 4th AIGC】當(dāng)中國(guó)水墨山水遇上AIGC,https://aistudio.baidu.com/aistudio/projectdetail/6103948