10行代碼搭建屬于你自己的中文AI作畫(huà)師——Gradio + 太乙中文Diffusion模型實(shí)戰(zhàn)

最佳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ò)程,生成你想要的圖片。

stable diffusion

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)部分

    1. 首先通過(guò)你需要安裝兩個(gè)python 包:diffusers ,gradio。我們需要difusers去加載太乙中文stable-diffusion 圖片生成模型,然后進(jìn)行圖片生成。
    1. 去huggface網(wǎng)站中下載太乙中文stable-diffusion 圖片生成模型,鏈接如下, https://huggingface.co/IDEA-CCNL/Taiyi-Stable-Diffusion-1B-Chinese-v0.1。
      或者直接運(yùn)行下方命令進(jìn)行模型下載。

git lfs install
git clone https://huggingface.co/IDEA-CCNL/Taiyi-Stable-Diffusion-1B-Chinese-v0.1

    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ù)


后臺(tái)日志
  • 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ò)。
AI作畫(huà)師web服務(wù)

結(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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容