根据中国古诗词作画,AI 可以做到吗?
AI 作畫(huà)工具 DD (Disco Diffusion)面市后,不少大神做出了驚艷的作品。玩家以外國(guó)人居多,網(wǎng)上的資料也是英文資料較多。現(xiàn)在國(guó)內(nèi)也有人嘗試,比如和菜頭在他的「槽邊往事」微信公眾號(hào)就寫(xiě)了好幾篇關(guān)于 AI 作畫(huà)的文章,現(xiàn)在他的公眾號(hào)配圖也使用自己生成的圖。西喬在她的「神秘的程序員們」微信公眾號(hào)也寫(xiě)了好幾篇教程,值得一看。
這段時(shí)間我也嘗試了一些 AI 作畫(huà),但做出的畫(huà)總是不太理想。作為一名程序員,其實(shí)我關(guān)注的并不是做出藝術(shù)性比較強(qiáng)的作品,而是想探索一些可能,也就是探索讓 AI 做出一些比較新奇的東西出來(lái)。在「AI 能理解和表達(dá)古詩(shī)意境嗎?來(lái)看看西喬用人工智能輔助創(chuàng)作的古風(fēng)插畫(huà)(第一輯)」這篇文章中,作者做出了效果非常不錯(cuò)的古風(fēng)插畫(huà),其插畫(huà)也比較貼近詩(shī)詞的意境,但作者并沒(méi)有說(shuō)明其作畫(huà)的參數(shù),使用了怎樣的提示句子(prompts)。看到這些作品后,我就在思考,能否直接根據(jù)古詩(shī)詞來(lái)作畫(huà)呢?
下面就說(shuō)說(shuō)我的嘗試過(guò)程,雖然最后的結(jié)果不太滿(mǎn)意,但過(guò)程還是值得記錄一下。
DD 作為一款外國(guó)人開(kāi)發(fā)的軟件,并不支持中文。text prompts 必須輸入英文,對(duì)于國(guó)內(nèi)用戶(hù)來(lái)說(shuō),可以借助谷歌翻譯(或其它翻譯軟件),先將中文翻譯成英文,然后再送給 DD。所以我首先想到的是如何將翻譯功能加入到 DD 中。
搜索了一下 Python 的機(jī)器翻譯資料,發(fā)現(xiàn)了 translate 這個(gè) Python 包。translate 提供的是一種云翻譯方式,集成了幾家云翻譯的產(chǎn)品,包括微軟、MyMemory、LibreTranslate。但是試用下來(lái),效果并不理想。這三家功能提供者雖然都提供了免費(fèi)的使用接口,但對(duì)于調(diào)用次數(shù)、調(diào)用頻次都有要求。比如我在使用 MyMemory 的云翻譯功能時(shí),就碰到開(kāi)始使用得好好的,突然之間就不能翻譯的情況,然后過(guò)了一段時(shí)間,有可以使用的情況。
于是我就尋找本機(jī)翻譯的軟件,好在隨著人工智能的發(fā)展,機(jī)器翻譯的質(zhì)量也越來(lái)越高。經(jīng)過(guò)一番搜索,找到了 Huggingface Transformers 。這款軟件能夠做的事情非常多,包括文本分類(lèi)、文本生成、自動(dòng)問(wèn)答、文本翻譯、自動(dòng)摘要等等。這里我只用到了其中的文本翻譯功能。
Huggingface Transformers 使用了一種非常開(kāi)放的架構(gòu),讓更多的人參與進(jìn)來(lái),并提供了許多預(yù)訓(xùn)練的模型下載。這樣,對(duì)于普通用戶(hù)而言,并不需要過(guò)多的人工智能知識(shí),也不需要經(jīng)過(guò)復(fù)雜而繁瑣的模型訓(xùn)練,把它當(dāng)做一個(gè)黑盒,集成到軟件中即可。比如,我為 DD 增加的中文翻譯成英文功能,就這么幾行代碼:
from?transformers?import?AutoModelWithLMHead,?AutoTokenizer,?pipelinechinese_prompts?=?"碧綠的蓮葉無(wú)邊無(wú)際,一直延伸到水天相接的遠(yuǎn)方,在陽(yáng)光的照映下,荷花顯得格外艷麗鮮紅。"mode_name?=?'liam168/trans-opus-mt-zh-en' model?=?AutoModelWithLMHead.from_pretrained(mode_name) tokenizer?=?AutoTokenizer.from_pretrained(mode_name) translation?=?pipeline("translation_zh_to_en",?model=model,?tokenizer=tokenizer) translate_result?=?translation(chinese_prompts,?max_length=400) translated_text?=?translate_result[0]['translation_text'] print(translated_text)在這段代碼中,模型選擇了 liam168/trans-opus-mt-zh-en,第一次運(yùn)行的時(shí)候,會(huì)從網(wǎng)上下載,非常方便,當(dāng)然也可以使用事先下載好的預(yù)訓(xùn)練模型。
要使用 Huggingface Transformers,請(qǐng)事先安裝如下 python 包:
pip?install?transformers==4.4.2?datasets==1.6.2?sklearn?scipy?matplotlib?torchtext?seaborn?spacy?sentencepiece下面看看使用古詩(shī)詞創(chuàng)作的畫(huà):
海上生明月,天涯共此時(shí) (The sea is full of the moon, and the world is full of it.)
枯藤老樹(shù)昏鴉,小橋流水人家,古道西風(fēng)瘦馬,中國(guó)水墨畫(huà)風(fēng)格 (The old trees of the dead, the old trees of the dead, the little bridges of the water, the old wind of the past, the lean horses. China's ink-painting style.)
大漠孤煙直,長(zhǎng)河落日?qǐng)A (The desert's straight, the river's setting sun full.)
白日依山盡,黃河入海流 (By day, by day, the yellow river flows into the ocean.)。這里 AI 似乎沒(méi)有理解黃河是中國(guó)的一條河流:(
接天蓮葉無(wú)窮碧,映日荷花別樣紅 (There's a lot of leaves in the sky, a lot of red.)
這里翻譯出了一點(diǎn)問(wèn)題,將英文翻譯修改為:
The green leaves of the lotus, unbridled, extend to the distance between the water and the sky, and, in the light of the sun, the flowers look extraordinary and red.
做出的畫(huà)作如下:
依據(jù)中國(guó)古詩(shī)詞作畫(huà),面臨著兩道難題。首先是翻譯到英文,可能意思相差太遠(yuǎn),比如上面的接天蓮葉無(wú)窮碧,映日荷花別樣紅翻譯到英文,意思完全變了。其次,即使完整翻譯成英文,但古詩(shī)詞的意境如何表現(xiàn)出來(lái),上面的接天蓮葉無(wú)窮碧,映日荷花別樣紅這句詩(shī),即使人工修改為比較貼近字面意思的英文,但做出來(lái)的畫(huà)依然不太滿(mǎn)意,并沒(méi)有做出詩(shī)中描繪的風(fēng)景。
古詩(shī)詞如何翻譯成現(xiàn)代漢語(yǔ)都是一個(gè)難題,更別說(shuō)翻譯成英文,還有很長(zhǎng)的一段路需要走,這也需要更多的中國(guó)工程師參與其中。此外,DD 中使用的訓(xùn)練數(shù)據(jù)可能中國(guó)的畫(huà)作比較少,我嘗試在 prompts 中加入中國(guó)著名畫(huà)家的名字,沒(méi)有什么效果。如果是用的梵高之類(lèi)的外國(guó)畫(huà)家,其生成畫(huà)作的風(fēng)格就很像這些畫(huà)家的作品。
綜合試用下來(lái),根據(jù)古詩(shī)詞作畫(huà)依然困難重重。AI作畫(huà)的關(guān)鍵依然在于 prompts,需要 AI 理解人的作畫(huà)意圖。其實(shí)現(xiàn)實(shí)生活中作畫(huà),也會(huì)存在溝通的問(wèn)題。接下來(lái)我會(huì)嘗試一些 prompts,研究如何讓 AI ?能夠更好的理解我的作畫(huà)想法。
總結(jié)
以上是生活随笔為你收集整理的根据中国古诗词作画,AI 可以做到吗?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: flash as游戏制作 - 射击游戏
- 下一篇: Cnskype for business