奧推網

選單
文化

【簡單易上手】昇思MindSpore邀你定製專屬Diffusion模型

昇思MindSpore首個可訓練diffusion模型DDPM馬上要和大家見面了,操作簡單,可訓練+推理,單卡即可執行,歡迎廣大產學研開發者使用啟智社群免費Ascend NPU算力體驗

最近爆火的AI繪圖,相信大家並不陌生了。

從AI繪圖軟體生成的作品打敗一眾人類藝術家,斬獲數字藝術類冠軍,到如今DALL。E、Imagen、novelai等國內外平臺遍地開花。也許你也曾點開過相關網站,嘗試讓AI描繪你腦海中的風景,又或者上傳了一張自己帥氣/美美的照片,然後對著最後生成的糙漢哭笑不得。那麼,在你感受AI繪圖魅力的同時,有沒有想過(不你肯定想過),它背後的奧妙究竟是什麼?

美國科羅拉多州技術博覽會中獲得數字藝術類冠軍的作品——《太空歌劇院》

一切,都要從一個名為DDPM的模型說起…

話說DDPM

DDPM模型,全稱Denoising Diffusion Probabilistic Model,可以說是現階段diffusion模型的開山鼻祖。不同於前輩GAN、VAE和flow等模型,diffusion模型的整體思路是透過一種偏向於最佳化的方式,

逐步

從一個純噪音的圖片中生成影象。

現在已有生成影象模型的對比

沒有相關機器學習背景的小夥伴可能會問了,什麼是純噪音圖片?

很簡單,老式電視機沒訊號時,伴隨著“刺啦刺啦”噪音出現的雪花圖片,就屬於純噪音圖片。而DDPM在生成階段所做的事情,就是把這些個“雪花”一點點移除,直到清晰的影象露出它的廬山真面目,我們把這個階段稱之為“

去噪

”。

純噪音圖片:老電視的雪破圖

透過描述,大家可以感受到,去噪其實是個相當複雜的過程。沒有一定的去噪規律,可能你忙活了好半天,到最後還是對著奇形怪狀的圖片欲哭無淚。當然,不同型別的圖片也會有不同的去噪規律,至於怎麼讓機器學會這種規律,有人靈機一動,想到了一種絕妙的方法。

“既然去噪規律不好學,那我為什麼不先透過加噪的方式,先把一張圖片變成純噪音影象,再把整個過程反著來一遍呢?”

這便奠定了diffusion模型整個訓練-推理的流程,

先在前向過程(forward process)透過逐步加噪,將圖片轉換為一個近似可用高斯分佈的純噪音影象,緊接著在反向過程(reverse process)中逐步去噪,生成影象,最後以增大原始影象和生成影象的相似度作為目標,最佳化模型,直至達到理想效果

DDPM的訓練-推理流程

到這裡,不知道大家的接受度怎樣?如果感覺沒問題,輕輕鬆鬆的的話。準備好,我要開始上大招(深入理論)啦。

1.1.1前向過程(forward process)

又稱為擴散過程(diffusion process),整體是一個引數化的

馬爾可夫鏈(Markov chain)

。從初始資料分佈 出發,每步在資料分佈中新增高斯噪音,持續T次。其中從第t-1步到第t步的過程可以用高斯分佈表示為:

透過合適的設定,隨著t不斷增大,原始資料會逐漸失去他的特徵。我們可以理解為,在進行了無限次的加噪步驟後,最終的資料會變成沒有任何特徵,完全是隨機噪音的圖片,也就是我們最開始說的“雪破圖”。

在這個過程中,每一步的變化是可以透過設定

超參

來控制,在我們知曉最開始的圖片是什麼的前提下,前向加噪的整個過程可以說是

已知且可控的

,我們完全能知道每一步的生成資料是什麼樣子。

但問題在於,每次的計算都需要從起始點出發,結合每一步的過程,慢慢推導至你想要的某步資料,過於麻煩。好在因為高斯分佈的一些特性,我們可以一步到位,直接從得到。

(這裡的

和為組合係數

,本質上是超參的表示式)

1.1.2反向過程(reverse process)

和前向過程同理,反向過程也是一個

馬爾可夫鏈(Markov chain),

只不過這裡用到的引數不同,至於具體引數是什麼,這個就是我們需要機器來學習的部分啦。

在瞭解機器如何學習前,我們首先思考,基於某一個原始資料,從第t步,精準反推回第t-1步的過程應該是怎樣的?

答案是,這個仍可以用高斯分佈表示:

注意這裡必須要考慮,意思是反向過程最後生成影象還是要與原始資料有關。輸入貓的圖片,模型生成的影象應該是貓,輸入狗的圖片,生成的影象也應該和狗相關。若是去除掉,則會導致無論輸入哪種型別的圖片訓練,最後diffusion生成的影象都一樣,“貓狗不分”。

經過一系列的推導,我們發現,反向過程中的引數和,竟然還是可以用,,以及引數

, 

表示出來的,是不是很神奇~

當然,機器事先並不知道這個真實的反推過程,它能做到的,只是用一個大概近似的估計分佈去模擬,表示為。

1.1.3最佳化目標

在最開始我們提到,需要透過

增大原始資料和反向過程最終生成資料的相似度

來最佳化模型。在機器學習中,我們計算該相似度參考的是

交叉熵(cross entropy)

關於交叉熵,學術上給出的定義是“用於度量兩個機率分佈間的差異性資訊”。換句話講,交叉熵越小,模型生成的圖片就越和原始圖片接近。但是,在大多數情況下,交叉熵是

很難或者無法透過計算得出

的,所以我們一般會透過最佳化一個更簡單的表示式,達到同樣的效果。

Diffusion模型借鑑了VAE模型的最佳化思路,將

variational lower bound(VLB,又稱ELBO)

替代cross entropy來作為最大最佳化目標。透過無數步的分解,我們最終得到:

看到這麼複雜的公式,好多小夥伴肯定頭都大了。但不慌,

這裡需要關注的,只是中間的

罷了,它表示的是

和之間估計分佈和真實分佈的差距

。差距越小,模型最後生成圖片的效果就越好。

1.1.4上程式碼

在瞭解完DDPM背後的原理,接下來就讓我們看看DDPM模型究竟是如何實現…

才怪啦。相信看到這裡的你,肯定也不想遭受成百上千行程式碼的洗禮。好在MindSpore已經為大家提供了開發完備的DDPM模型,

訓練推理兩手抓,操作簡單,單卡即可執行

,想要體驗效果的小夥伴,可以先pip install denoising-diffusion-mindspore後,參考如下程式碼配置引數:

對重要的引數進行一些解析:

GaussianDiffusion

image_size: 圖片大小

timesteps: 加噪步數

sampling_timesteps: 取樣步數,為提升推理效能,需小於加噪步數

Trainer

folder_or_dataset: 對應圖片中的path, 可以是已下載資料集的路徑(str),也可以是已做好資料處理的VisionBaseDataset, GeneratorDataset 或 MindDataset

train_batch_size:batch大小

train_lr: 學習率

train_num_steps: 訓練步數

話說啟智社群

DDPM模型運算可使用啟智社群的NPU算力。

悄悄打一個廣告,啟智社群聯合MindSpore為大家發福利啦,一年份100萬卡時的免費算力,快去啟智社群(https://openi。pcl。ac。cn/)來體驗吧~

話說MindDiffusion

DDPM只是Diffusion這個故事的開篇。目前,已有無數的研究人員被其背後瑰麗的世界所吸引,紛紛投身其中。在不斷最佳化模型的同時,也逐漸開發了Diffusion在各個領域的應用。

其中,包括了計算機視覺領域的影象最佳化、inpainting、3D視覺,自然語言處理中的text-to-speech,AI for Science領域的分子構象生成、材料設計等,更有來自斯坦福大學計算機科學系的博士生Eric Zelikman大開腦洞,嘗試將DALLE-2與最近另一個大火的對話模型ChatGPT相結合,製作出了溫馨的繪本故事。

DALLE-2 + ChatGPT合力完成的,關於一個名叫“羅比”的小機器人的故事

不過最廣為大眾所知的,應該還是它在文生圖(text-to-image)方面的應用。輸入幾個關鍵詞或者一段簡短的描述,模型便可以為你生成相對應的圖畫。

比如,輸入“城市夜景 賽博朋克 格雷格。路特科夫斯基”,最後生成的便是一張色彩鮮明,頗具未來科幻風格的作品。

再比如,輸入“莫奈 撐陽傘的女人 月亮 夢幻”,生成的便是一張極具有朦朧感的女人畫像,色彩搭配的風格有木有讓你想起莫奈的《睡蓮》?

想要寫實風格的風景照作為屏保?沒問題!

鄉村 田野 屏保

想要二次元濃度多一點的?也可以!

來自深淵 風景 繪畫 寫實風格

以上這些圖片,均是由

MindDiffusion平臺的下的悟空畫畫

製作而成的哦,悟空畫畫是基於擴散模型的中文文生圖大模型,由

華為諾亞團隊

攜手

中軟分散式並行實驗室

昇騰計算產品部

聯合開發。模型基於Wukong dataset訓練,並使用昇思框架(MindSpore)+昇騰(Ascend)軟硬體解決方案實現。

躍躍欲試的小夥伴先彆著急,為了讓大家擁有更好的體驗,更多自行開發的空間,我們打算讓MindDiffusion中的模型同樣也具備可訓練、可推理的特性,預計在明年就要和大家見面啦,敬請期待,歡迎大家頭腦風暴,生成各種別具風格的作品哦~

(據去內部打探情報的同事說,有人已經開始嘗試“張飛繡花”、“劉華強砍瓜”、“古希臘神大戰哥斯拉”了。ummmm,怎麼辦,突然就很期待成品了呢(ಡωಡ))

一個突然正經的結語

最後的最後,在Diffusion爆火的如今,有人也曾發出過疑問,它為什麼可以做到如此的大紅大紫,甚至風頭開始超過GAN網路?Diffusion的優勢突出,劣勢也很明顯;它的諸多領域仍是空白,它的前方還是一片未知。為什麼卻有那麼多的人在孜孜不倦地對它進行研究呢?

興許,馬毅教授的一番話,可以給我們提供一種解答。

“但diffusion process的有效性以及很快取代GAN也充分說明了一個簡單道理:

幾行簡單正確的數學推導,可以比近十年的大規模除錯超參除錯網路結構有效得多。

或許,這就是Diffusion模型的魅力吧。

Reference

https://medium。com/mlearning-ai/ai-art-wins-fine-arts-competition-and-sparks-controversy-882f9b4df98c

Jonathan Ho, Ajay Jain, and Pieter Abbeel。 Denoising Diffusion Probabilistic Models。 arXiv:2006。11239, 2020。

Ling Yang, Zhilong Zhang, Shenda Hong, Runsheng Xu, Yue Zhao, Yingxia Shao, Wentao Zhang, Ming-Hsuan Yang, and Bin Cui。 Diffusion models: A comprehensive survey of methods and applications。 arXiv preprint arXiv:2209。00796, 2022。

https://lilianweng。github。io/posts/2021-07-11-diffusion-models

https://github。com/lvyufeng/denoising-diffusion-mindspore

https://zhuanlan。zhihu。com/p/525106459

https://zhuanlan。zhihu。com/p/500532271

https://www。zhihu。com/question/536012286

https://mp。weixin。qq。com/s/XTNk1saGcgPO-PxzkrBnIg

https://m。weibo。cn/3235040884/4804448864177745