Diffusion AI繪圖模型構造與訓練實戰(zhàn)
定 價:79 元
叢書名:跟我一起學人工智能
本書是對DiffusionAI繪圖模型的綜合性講解書籍,書中包括最基礎的組件的用例演示,也包括具體的項目實戰(zhàn),以及Diffusion模型的底層設計思路和實現(xiàn)原理的介紹。通過本書的學習,讀者可以快速掌握Diffusion模型的使用方法,掌握AI繪圖模型的訓練、測試過程,并能研發(fā)屬于自己的AI繪圖模型。本書共19章,分為快速上手篇(第1~2章),概述了Diffusion模型的發(fā)展歷史,介紹了開發(fā)環(huán)境的部署方法,以及Diffusion模型的快速上手演示。以文生圖的Diffusion模型的訓練方法篇(第3~7章),通過5個實戰(zhàn)任務演示使用高層API的方法快速訓練Diffusion模型。圖像生成模型的歷史發(fā)展篇(第8~12章),演示了前Diffusion時代的幾個代表性的圖像生成模型。以圖生圖的Diffusion模型的訓練方法篇(第13~15章),通過3個實戰(zhàn)項目演示了以圖生圖的Diffusion模型的訓練方法。以圖生圖模型的歷史發(fā)展篇(第16~18章),演示了前Diffusion時代的幾個以圖生圖模型。完全手動構造Diffusion模型篇(第19章),演示了從零開始的Diffusion模型的搭建、訓練、測試方法。本書將使用最簡單淺顯的語言,帶領讀者快速地了解Diffusion模型的訓練、測試方法。通過本書中實戰(zhàn)項目的學習,讀者可以掌握一般的AI繪圖模型的研發(fā)流程。通過本書中Diffusion模型底層原理的學習,能夠讓讀者知其然也知其所以然,做到融會貫通。
內(nèi)容全面 本書是一本對Diffusion AI繪圖模型進行綜合性講解的書籍,既有基礎知識,也有實戰(zhàn)示例,還包括底層原理的講解。 語言簡潔 本書盡量以簡潔的語言書寫,每個章節(jié)之間的內(nèi)容盡量獨立,使讀者可以跳躍閱讀而沒有障礙。 代碼清晰 本書的代碼也盡量以簡潔的形式書寫,使讀者閱讀不感吃力。每個代碼塊即是一個測試單元,讀者可以對每個程序的每個代碼塊按從上到下的順序進行測試,從一個個小知識點聚沙成塔,融會貫通。
自從AI繪圖技術面世以來,激發(fā)了很多人進行藝術創(chuàng)作的興趣,創(chuàng)作繪畫曾經(jīng)是一件有很高門檻的活動,然而現(xiàn)在,只要輸入一句描述文本,計算機就能根據(jù)文本的內(nèi)容生成相應的繪畫作品,并且在作畫的細節(jié)上表現(xiàn)得十分優(yōu)秀,甚至能超越很多職業(yè)畫師,讓畫師這一職業(yè)的發(fā)展前景看起來岌岌可危。初見這種技術時,大多數(shù)人會被它的表現(xiàn)所震撼,筆者也不例外,這里的AI繪圖指的是以Diffusion模型為代表的以文生圖模型。事實上圖像生成并不是很新的技術,在Diffusion模型之前就已經(jīng)有自動編碼(Auto Encoder,AE)、生成對抗網(wǎng)絡(Generative Adversarial Network,GAN)等一系列模型,并且也都取得了很好的成績,之所以還是會被震撼到,是因為Diffusion模型把圖像生成這件事情一下子提高到了過去無法企及的高度,尤其是作畫的質(zhì)量,是過去的模型無法相比的,Diffusion模型生成的圖像很清晰,還能使用文本控制圖像的內(nèi)容,過去的模型想生成一張清晰的圖片,難度就已經(jīng)不小了,更不用說再去控制圖像的內(nèi)容了。Diffusion模型優(yōu)秀的地方還在于生成內(nèi)容的豐富性上,無論描述文本的內(nèi)容是自然風景、古典建筑、人物肖像、動漫卡通,還是可愛的小動物,都可以很自然地生成,這體現(xiàn)了Diffusion模型巨大的知識量,說明它見過的圖像和文本是海量的,這和過去的傳統(tǒng)模型拉開了差距。自從BERT到ChatGPT以來,大模型的思想被不斷強化,Diffusion模型也符合大模型思想。作為技術人員,可能會對Diffusion模型的底層原理非常感興趣,本書將從Diffusion模型的高層API開始,逐漸深入地講解Diffusion模型的底層原理。Diffusion模型中借鑒了一些歷史模型的經(jīng)驗,在接觸到這些知識時本書會作為單獨章節(jié)進行講解,以幫助讀者構建完整的知識體系。本書中所有的實戰(zhàn)任務都配有完整的可執(zhí)行代碼,本書和書中代碼筆者都盡量以簡單、淺顯的語言書寫,盡量避免無意義的內(nèi)容,以幫助讀者快速、準確地理解本書中的知識。通過本書的學習,讀者能夠快速地掌握Diffusion模型的構建、訓練、測試方法,并且能夠獨立研發(fā)屬于自己的Diffusion繪圖模型。
李福林,一個在IT領域摸爬滾打十多年的老程序員、培訓師,精通多種IT技術,具有軟件設計師職稱。分享了多部AI技術教程,受到了讀者的廣泛贊譽,F(xiàn)任職于陽獅集團,擔任算法工程師職位。教學風格追求化繁為簡,務實而不空談,課程設計思路清晰,課程演繹說理透徹,對AI領域技術有自己獨到的見解。
第1章介紹Diffusion模型的發(fā)展歷程,以及本書中相關任務的訓練方法。第2章介紹開發(fā)環(huán)境的配置,并且快速上手Diffusion模型的使用。第3章介紹不定圖像的生成任務。第4章介紹文本訓練方法。第5章介紹Dream Booth訓練方法。第6章介紹圖文結合的訓練方法。第7章介紹使用LoRA技巧加速訓練。第8章介紹AE模型。第9章介紹VAE模型。第10章介紹DCGAN模型。第11章介紹WGANGP模型。第12章手動構造一個沒有文本輸入的Diffusion模型。第13章介紹ControlNet組件。第14章介紹Instruct Pix2Pix訓練方法。第15章介紹正負樣本混合訓練方法。第16章介紹Pix2Pix模型。第17章介紹CycleGAN模型。第18章介紹風格遷移任務。第19章手動構建一個完整的Diffusion模型。閱讀建議本書是一本對Diffusion模型進行綜合性講解的書籍,既有基礎知識,也有實戰(zhàn)示例,也包括底層原理的講解。本書盡量以簡潔的語言書寫,每個章節(jié)之間的內(nèi)容盡量獨立,使讀者可以跳躍閱讀而沒有障礙。作為一本實戰(zhàn)型書籍,讀者要掌握本書的知識,務必要結合代碼調(diào)試,本書的代碼也盡量以簡潔的形式書寫,使讀者閱讀時不感吃力。每個代碼塊即是一個測試單元,讀者可以對每個程序的每個代碼塊按從上到下的順序進行測試,從一個個小知識點聚沙成塔,融會貫通。資源下載提示素材(源碼)等資源: 掃描封底的文泉云盤防盜碼,再掃描目錄上方的二維碼下載。致謝感謝HuggingFace社區(qū)無私的奉獻,因為有了你們的工作成果,本書才得以以簡潔、標準化的API面世。在書寫本書的過程中,我竭盡所能為讀者呈現(xiàn)最好的內(nèi)容,錯漏難免會存在,敬請讀者批評指正。
李福林2023年11月
本書源碼
快速上手篇第1章Diffusion模型31.1Diffusion模型介紹31.1.1Diffusion模型的演化之路41.1.2圖像以外的應用61.1.3其他的繪圖模型61.2微調(diào)預訓練模型61.2.1預訓練模型61.2.2微調(diào)模型以適應新數(shù)據(jù)71.2.3微調(diào)相比重新訓練的優(yōu)勢71.3小結8第2章快速上手92.1部署開發(fā)環(huán)境92.2HuggingFace簡介和快速上手112.2.1快速上手112.2.2加速技巧122.3Diffusion模型相關組件介紹132.3.1tokenizer132.3.2scheduler152.3.3Encoder162.3.4VAE172.3.5UNet182.4小結20訓練方法篇第3章不定圖像的生成233.1任務簡介233.2數(shù)據(jù)集介紹233.3測試部分243.3.1測試函數(shù)243.3.2未訓練模型的測試結果253.3.3訓練后模型的測試結果273.4訓練部分283.4.1全局常量283.4.2定義數(shù)據(jù)集283.4.3定義模型303.4.4初始化工具類313.4.5計算loss323.4.6訓練343.5小結35第4章文本訓練364.1任務簡介364.2數(shù)據(jù)集介紹364.3測試部分374.3.1測試函數(shù)374.3.2未訓練模型的測試結果384.3.3訓練后模型的測試結果394.4訓練部分394.4.1全局常量394.4.2定義數(shù)據(jù)集394.4.3定義模型444.4.4初始化工具類474.4.5計算loss474.4.6訓練504.5小結51第5章Dream Booth535.1任務簡介535.2數(shù)據(jù)集介紹535.3測試部分545.3.1測試函數(shù)545.3.2未訓練模型的測試結果555.3.3訓練后模型的測試結果555.4訓練部分565.4.1全局常量565.4.2定義數(shù)據(jù)集565.4.3定義模型605.4.4初始化工具類615.4.5計算loss615.4.6訓練625.5小結64第6章圖文結合的訓練656.1任務簡介656.2數(shù)據(jù)集介紹656.3測試部分666.3.1測試函數(shù)676.3.2未訓練模型的測試結果686.3.3訓練后模型的測試結果686.4訓練部分696.4.1全局常量696.4.2定義數(shù)據(jù)集696.4.3定義模型736.4.4初始化工具類736.4.5計算loss746.4.6訓練756.5小結77第7章LoRA Dream Booth787.1任務簡介787.2數(shù)據(jù)集介紹797.3測試部分797.3.1測試函數(shù)797.3.2未訓練模型的測試結果807.3.3訓練后模型的測試結果807.4訓練部分817.4.1全局常量817.4.2定義數(shù)據(jù)集817.4.3定義模型847.4.4初始化工具類877.4.5計算loss877.4.6訓練887.5小結89圖像生成模型的歷史發(fā)展篇第8章AE模型938.1模型原理介紹938.2鮮花數(shù)據(jù)集介紹948.3定義數(shù)據(jù)集958.4定義神經(jīng)網(wǎng)絡模型988.4.1定義Block工具層988.4.2定義Encoder和Decoder1008.5訓練1018.5.1訓練前的準備工作1018.5.2執(zhí)行訓練1028.6測試1048.6.1測試本地訓練的模型1048.6.2使用訓練好的模型測試1058.7小結105第9章VAE模型1069.1AE模型的缺陷1069.2定義神經(jīng)網(wǎng)絡模型1079.3訓練1089.3.1訓練前的準備工作1089.3.2執(zhí)行訓練1099.4測試1119.4.1測試本地訓練的模型1119.4.2使用訓練好的模型測試1119.5小結113第10章DCGAN模型11410.1模型原理介紹11410.2定義神經(jīng)網(wǎng)絡模型11510.2.1定義CLS模型11510.2.2定義GEN模型11610.3訓練11710.3.1訓練前的準備工作11710.3.2訓練CLS模型的函數(shù)11810.3.3訓練GEN模型的函數(shù)11910.3.4執(zhí)行訓練12010.4測試12210.4.1測試本地訓練的模型12210.4.2使用訓練好的模型測試12210.5小結123第11章WGANGP模型12411.1模型原理介紹12411.2定義神經(jīng)網(wǎng)絡模型12511.3訓練12611.3.1訓練前的準備工作12611.3.2訓練CLS模型的函數(shù)12711.3.3執(zhí)行訓練12811.4測試13011.4.1測試本地訓練的模型13011.4.2使用訓練好的模型測試13011.5小結131第12章Diffusion模型13212.1模型原理介紹13212.2定義神經(jīng)網(wǎng)絡模型13412.3定義圖像生成函數(shù)14212.4訓練14412.5測試14612.6小結147訓練方法篇第13章ControlNet以圖生圖15113.1任務簡介15113.2數(shù)據(jù)集介紹15313.3測試部分15413.3.1測試函數(shù)15513.3.2未訓練模型的測試結果15613.3.3訓練后模型的測試結果15813.4訓練部分15913.4.1全局常量15913.4.2定義數(shù)據(jù)集15913.4.3定義ControlNet模型16213.4.4定義模型16813.4.5初始化工具類16913.4.6計算loss16913.4.7訓練17113.5小結172第14章Instruct Pix2Pix圖像調(diào)整17314.1任務簡介17314.2數(shù)據(jù)集介紹17414.3測試部分17514.3.1加載數(shù)據(jù)集17514.3.2測試函數(shù)17614.4訓練部分17914.4.1全局常量17914.4.2定義數(shù)據(jù)集18014.4.3定義模型18114.4.4初始化工具類18214.4.5計算loss18314.4.6訓練18614.5小結187第15章正、負樣本混合訓練18815.1任務簡介18815.2數(shù)據(jù)集介紹18815.3測試部分19015.3.1配置環(huán)境19015.3.2測試函數(shù)19115.3.3未訓練模型的測試結果19115.3.4訓練后模型的測試結果19215.4訓練部分19315.4.1全局常量19315.4.2定義數(shù)據(jù)集19315.4.3定義模型20015.4.4初始化工具類20315.4.5計算loss20315.4.6訓練20615.5小結207以圖生圖模型的歷史發(fā)展篇第16章Pix2Pix模型21116.1任務介紹21116.2數(shù)據(jù)集介紹21216.3定義數(shù)據(jù)集21316.4定義神經(jīng)網(wǎng)絡模型21616.4.1定義CLS模型21716.4.2定義殘差連接層21716.4.3定義GEN模型21816.5訓練22016.5.1訓練前的準備工作22016.5.2訓練CLS的函數(shù)22116.5.3訓練GEN的函數(shù)22216.5.4執(zhí)行訓練22316.6測試22616.6.1測試本地訓練的模型22616.6.2使用訓練好的模型測試22816.7小結228第17章CycleGAN模型23017.1模型原理介紹23017.2數(shù)據(jù)集介紹23117.3定義數(shù)據(jù)集23217.4定義神經(jīng)網(wǎng)絡模型23417.4.1定義CLS模型23417.4.2定義GEN模型23517.5訓練23717.5.1訓練前的準備工作23717.5.2訓練CLS的函數(shù)23817.5.3訓練GEN的函數(shù)23917.5.4執(zhí)行訓練24217.6測試24317.6.1測試本地訓練的模型24317.6.2使用訓練好的模型測試24417.7小結245Diffusion模型篇第18章風格遷移24918.1模型原理介紹24918.1.1針對單張圖片的風格遷移24918.1.2基于神經(jīng)網(wǎng)絡模型的風格遷移25018.1.3風格遷移模型的訓練方法25018.1.4數(shù)據(jù)部分25118.2定義神經(jīng)網(wǎng)絡模型25218.2.1定義CLS模型25418.2.2定義抽取內(nèi)容特征的函數(shù)25418.2.3定義抽取風格特征的函數(shù)25518.2.4加載風格圖片特征25618.3訓練25718.3.1訓練前的準備工作25718.3.2執(zhí)行訓練25718.4測試25918.4.1測試本地訓練的模型25918.4.2使用訓練好的模型測試26018.5小結260第19章手動構建Diffusion模型26119.1模型原理介紹26119.2Encoder模型26319.2.1編碼層26319.2.2注意力層26419.2.3編碼器層26619.2.4Encoder模型26819.2.5載入?yún)?shù)26819.2.6試算27019.3VAE模型27019.3.1殘差連接層27019.3.2注意力層27219.3.3Pad工具層27419.3.4VAE模型27519.3.5載入?yún)?shù)27819.3.6試算28019.4UNet模型28119.4.1模型結構28119.4.2殘差連接層28219.4.3注意力層28419.4.4Transformers層28619.4.5down層28919.4.6up層29019.4.7UNet模型29119.4.8載入?yún)?shù)29619.4.9試算29819.5訓練29919.5.1加載工具類29919.5.2定義數(shù)據(jù)集30019.5.3定義模型30319.5.4計算loss30419.5.5執(zhí)行訓練30519.6測試30619.6.1定義生成函數(shù)30619.6.2定義測試函數(shù)30819.6.3測試未訓練的模型30919.6.4測試訓練好的模型31019.7小結311