最佳AI作畫(huà)師火遍全球,其效果和想象力直逼人類(lèi)藝術(shù)家,但是基本上都是英文的AI作畫(huà)師居多。今天筆者介紹一下如何通過(guò)十行代碼搭建屬于你自己的中文AI作畫(huà)師。在此之前,筆者容啰嗦一下,簡(jiǎn)單介紹一下AI作畫(huà)師的原理。
深度生成模型
目前主流的深度生成式模型目前有三種:
-
1.變分自編碼VAE : 采用的是先編碼,引入高斯噪音,再進(jìn)行解碼,并希望解碼器的輸出和目標(biāo)樣本的分布越相近越好。
VAE -
2.對(duì)抗生成模型GAN : 采用的是先編碼,再進(jìn)行解碼,并引入一個(gè)判別器去判斷解碼生成器生成的樣本是否符合目標(biāo)分布。
GAN -
擴(kuò)散模型Diffusion:通過(guò)擴(kuò)散步驟,將目標(biāo)分布的樣本擴(kuò)散到一個(gè)高斯分布,然后采用逆擴(kuò)散將一個(gè)高斯隨機(jī)噪聲還原到目標(biāo)分布。
Diffusion
而其中Diffusion模型是再數(shù)學(xué)上有著比較深的學(xué)問(wèn),筆者還不甚了解。這里就不過(guò)多介紹,這里說(shuō)明一點(diǎn),目前上述三類(lèi)型生成模型當(dāng)中,Diffusion模型的生成效果最好,也是目前市面上很多效果很驚人的的AI作畫(huà)師的底層算法。
stable diffusion
stable diffusion 是一種 conditional Diffusion模型,從下方模型架構(gòu)圖可以簡(jiǎn)單的看到,其主要是在逆擴(kuò)散 生成圖片的過(guò)程中 加入 文本 特征,引導(dǎo)逆擴(kuò)散的生成的過(guò)程,生成你想要的圖片。

Gradio
Gradio 號(hào)稱(chēng)3行代碼就可以搭建一個(gè)AI模型的demo,這是的AI算法工程師可以極其方便的通過(guò)web網(wǎng)頁(yè)分享自己的模,供別人使用。這是其官網(wǎng)地址https://gradio.app/。筆者使用了一下,確實(shí)只需要很少的代碼就能搭建了一個(gè)AI模型的demo,省去了大量的后端以及前端代碼編寫(xiě)。
太乙中文stable-diffusion 圖片生成模型
太乙中文 stable-diffusion 圖片生成模型是IDEA-CCNL組織開(kāi)源的一個(gè)太乙多模態(tài)模型簇中的一個(gè),主要是將stable-diffusion模型中文化,讓大家可以用中文進(jìn)行AI作畫(huà)。太乙其實(shí)還有中文CLIP模型 ,筆者也曾寫(xiě)過(guò)太乙CLIP實(shí)戰(zhàn)教程。 IDEA-CCNL組織開(kāi)源了很多封神宇宙得預(yù)訓(xùn)練模型,非常的強(qiáng)大,造福了大批我們這種GPU-poor 玩家。其中太乙中文stable-diffusion效果如下,看起來(lái)畫(huà)的還是很逼真。

AI作畫(huà)師demo實(shí)戰(zhàn)部分
- 首先通過(guò)你需要安裝兩個(gè)python 包:diffusers ,gradio。我們需要difusers去加載太乙中文stable-diffusion 圖片生成模型,然后進(jìn)行圖片生成。
- 去huggface網(wǎng)站中下載太乙中文stable-diffusion 圖片生成模型,鏈接如下, https://huggingface.co/IDEA-CCNL/Taiyi-Stable-Diffusion-1B-Chinese-v0.1。
或者直接運(yùn)行下方命令進(jìn)行模型下載。
- 去huggface網(wǎng)站中下載太乙中文stable-diffusion 圖片生成模型,鏈接如下, https://huggingface.co/IDEA-CCNL/Taiyi-Stable-Diffusion-1B-Chinese-v0.1。
git lfs install
git clone https://huggingface.co/IDEA-CCNL/Taiyi-Stable-Diffusion-1B-Chinese-v0.1
-
將模型放到項(xiàng)目目錄下,然后編寫(xiě)Artists.py代碼
項(xiàng)目目錄
-
Artists.py代碼的內(nèi)容如下:其實(shí)就是采用gradio 的Intereface 將 加載了太乙中文stable-diffusion 圖片生成模型 的 DiffusionPipeline 直接服務(wù)化。
from diffusers import DiffusionPipeline
import gradio as gr
pipeline = DiffusionPipeline.from_pretrained("./Taiyi-Stable-Diffusion-1B-Chinese-v0.1")
def generate(text, steps):
image = pipeline(text,
num_inference_steps=steps,
guidance_scale=7.5).images[0]
return image
if __name__ == '__main__':
demo = gr.Interface(title="太乙中文 stable diffusion 模型",
css="",
fn=generate,
inputs=[gr.Textbox(lines=3, placeholder="輸入你想生成的圖片描述", label="prompt"), gr.Slider(0, 100)],
outputs=[gr.outputs.Image(label="圖片")])
demo.launch()
運(yùn)行代碼會(huì)在本地 http://127.0.0.1:7860/ 上起一個(gè)web服務(wù)

- 4.服務(wù)的UI如下圖所示:一個(gè)文本輸入框;一個(gè)step的輸入Slider,step設(shè)置的越大耗時(shí)越長(zhǎng),圖片效果越好。一個(gè)圖片輸出框。輸入你想生成的圖片描述, 這里筆者輸入?yún)?shù)的是:
prompt :一行白鷺上青天; step:20 。
意思是: 隨機(jī)采樣后采用diffusion 模型逆擴(kuò)散20步生成 符合 一行白鷺上青天語(yǔ)義的圖片。
CPU機(jī)器上擴(kuò)散20個(gè)step,大約耗時(shí)5分鐘生成結(jié)果圖,當(dāng)然如果采用GPU速度會(huì)更快。最終結(jié)果圖片如下:三只白鷺站在河畔的樹(shù)下,雖然不是100%符合輸入描述,但是圖片的意境和質(zhì)量確實(shí)不錯(cuò)。

結(jié)語(yǔ)
最終我們通過(guò)差不多10行代碼(如果不換行的化,哈哈哈),就搭建了一個(gè)中文AI作畫(huà)師的demo,不需要GPU也可作畫(huà),非常的方便。目前diffusion 生成的圖片效果越來(lái)越好,而且,學(xué)術(shù)界在正在不斷研究diffusion 的變種去生成圖片,視頻,文章,甚至分子結(jié)構(gòu),蛋白質(zhì)等。感覺(jué)深度生成模型繼GAN之后又迎來(lái)了一次大的突破,而且diffusion在數(shù)學(xué)上有著比較完備的原理,這也最有數(shù)學(xué)性的一個(gè)深度模型。不得感嘆一句:數(shù)學(xué)才是硬道理。
引用
https://huggingface.co/IDEA-CCNL/Taiyi-Stable-Diffusion-1B-Chinese-v0.1
https://mp.weixin.qq.com/s/f9Q7hee9cWIwtKwC5V9Y8w
https://gradio.app/
https://arxiv.org/abs/2112.10752



