?? 作者:韓信子@ShowMeAI
?? 深度學習實戰系列:https://www.showmeai.tech/tutorials/42
?? TensorFlow 實戰系列:https://www.showmeai.tech/tutorials/43
?? 本文地址:https://www.showmeai.tech/article-detail/312
?? 宣告:著作權所有,轉載請聯系平臺與作者并注明出處
?? 收藏ShowMeAI查看更多精彩內容
工具庫 transformers 的開源方 Hugging Face 剛剛發布了一個用于構建 diffuser 模型的全新庫,如果您不知道diffuser模型是什么,你可以查看 ShowMeAI 的另外一篇文章介紹 ?? 你給文字描述, AI 藝術作畫,精美無比!附原始碼,快來試試! ,
隨著 AI 技術的發展,我們現在在互聯網上看到的那些美麗、富有創意、極具藝術美感的繪畫與視頻,很多是來自 AI 之手!典型的AI藝術創作例如 OpenAI 的 DALL-E2、谷歌的 Imagen 和 Midjourney 的產品,所有這些產品服務都使用 diffuser 模型,下圖為一些創作結果,
Hugging Face 發布了一個專注于 diffuser 模型的開源庫,我們可以基于它,僅僅通過幾行代碼就開始生成自己的藝術作畫,不過這個 diffuser 庫是一個基礎實作版本,訓練和學習的資料也沒有上面提到的幾個大廠商業產品多,在本篇文章中,ShowMeAI 就帶大家來探索新庫,并生成一些我們自己的藝識訓作,也對比一下相同文本提示下的大廠商業產品生成的結果,
?? 快速嘗鮮
我們先在命令列通過 pip install diffusers 安裝本次使用到的工具庫,然后匯入我們需要用到的模塊和功能(在這里我們呼叫整個擴散模型流水線 DiffusionPipeline),并且我們匯入一個小型預訓練模型ldm-text2im-large-256:
from diffusers import DiffusionPipeline
model_id = "CompVis/ldm-text2im-large-256"
# 預訓練模型
ldm = DiffusionPipeline.from_pretrained(model_id)
接著我們就可以基于這個預訓練模型作畫啦,我們唯一需要做的事情就是給模型一句文本提示(在 diffuser 模型里叫 prompt 提示),下面我們嘗試生成一幅『松鼠吃香蕉』的畫作,
# 給定文本提示和作畫
prompt = "A painting of a squirrel eating a banana"
images = ldm([prompt], num_inference_steps=50, eta=.3, guidance_scale=6)
images[0]
上面就是模型最終生成的影像,當然受限于我們的計算資源和預訓練模型大小,我們生成的影像不像 DALL-E 2 那樣令人驚艷,但是我們僅僅用 5 行代碼也生成了一副和提示文本匹配的影像,還是很讓人感覺神奇,
下面是『松鼠吃香蕉』的另一幅畫:
images = ldm(
[prompt],
num_inference_steps=100,
eta=.3,
guidance_scale=6
)
images['sample'][0]
?? 文本提示
?? 高解析度
自三大擴散模型(DALL-E 2、Imagen 和 Midjourney)發布以來,大家都開始發揮想象力,嘗試各種各樣的文本提示,讓模型生成藝術圖,例如,許多人發現添加『4K畫質』或『在Unity中渲染』可以增強三巨頭生成的影像的真實感(盡管它們都沒有以 4K 解析度生成),
如果我們對 Hugging Face 的 diffuser 模型進行同樣的嘗試,會發生什么?
prompt = "a photorealistic image of a squirrel eating a banana"
images = ldm(
[prompt],
num_inference_steps=100,
eta=.3,
guidance_scale=6
)
images['sample'][0]
很顯然它還不能生成高清的 4K 圖,但是影像中的一些細節有豐富一些,
?? 場景與邏輯
我們把場景做得復雜一點點,比如給到的文本提示中,有不同的物體和位置關系,我們看看會生成什么樣的結果,提示文字為an italian person eating pizza on top of the colosseum in rome,
prompt = "an italian person eating pizza on top of the colosseum in rome"
images = ldm(
[prompt],
num_inference_steps=100,
eta=.3,
guidance_scale=6
)
images['sample'][0]
看得出來,這個簡單的 diffuser 模型在很努力地復現我們文本中提到的人、斗獸場、披薩,但是對于更細節的位置關系,似乎它還沒有做得非常好,這里的人并沒有坐在羅馬斗獸場頂部,而且斗獸場的拱門顏色和天空顏色也不完全匹配,
?? 更抽象的情況
回到松鼠,嘗試生成更抽象的影像,例如 a giant squirrel destroying a city『一只巨大的松鼠摧毀一座城市』,我們隨機采樣了一些結果如下,好壞參半:
prompt = "a giant squirrel destroying a city"
images = ldm(
[prompt],
num_inference_steps=100,
eta=.3,
guidance_scale=6
)
images['sample'][0]
prompt = "a giant squirrel destroying a city"
images = ldm(
[prompt],
num_inference_steps=50,
eta=.3,
guidance_scale=6
)
images['sample'][0]
prompt = "a giant squirrel destroying a city"
images = ldm(
[prompt],
num_inference_steps=100,
eta=.3,
guidance_scale=2
)
images['sample'][0]
我們似乎觀察到,目前這個小模型似乎很難融合兩個通常相關度沒那么高的概念,即『(巨型)松鼠』和『城市』,我們從一些生成的效果不是特別好的圖片可以觀察出這一點,下面的結果中,要么對城市與天際線做了很好的描述卻忽略了松鼠,要么對松鼠和自然環境做了很好的描述,卻沒有特別強的城市背景:
prompt = "a landscape image showing a giant squirrel destroying a city"
images = ldm(
[prompt],
num_inference_steps=50,
eta=.8,
guidance_scale=2
)
images['sample'][0]
prompt = "a landscape image showing a giant squirrel destroying a city"
images = ldm(
[prompt],
num_inference_steps=50,
eta=.8,
guidance_scale=2
)
images['sample'][0]
多次運行這些提示后,我們發現當前這個小模型下,總是在主體之間切換但很難將兩者融合在一起,
?? DALL-E 2的結果
我們把同樣的內容"a dramatic shot of a giant squirrel destroying a modern city"灌給 DALL-E 2 ,讓它從提示做圖,得到的結果如下:
果然在更龐大的AI模型下,生成的結果更自然,也能把不同的細節關聯起來,
?? 總結
這就是 Hugging Face 新庫的初嘗鮮!盡管目前開源的小模型上,還有一系列的問題,但是這類模型就像一把鑰匙,解鎖一些令人敬畏的人工智能類人的藝術創造水平,
短期看,這個小小的預訓練模型當然無法取代 DALL-E 2、Imagen 或 Midjourney,但隨著開源社區的強大,它會表現越來越好,
參考資料
- ?? 你給文字描述,AI藝術作畫,精美無比!附原始碼,快來試試!:https://www.showmeai.tech/article-detail/313
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/522932.html
標籤:其他
上一篇:SQL注入
下一篇:圖的遍歷
