昇思MindSpore 25天學習打卡營|day18

DCGAN生成漫畫頭像

在下面的教程中,我們將通過示例代碼說明DCGAN網絡如何設置網絡、優化器、如何計算損失函數以及如何初始化模型權重。在本教程中,使用的動漫頭像數據集共有70,171張動漫頭像圖片,圖片大小均為96*96。

GAN基礎原理

這部分原理介紹參考GAN圖像生成。

DCGAN原理

DCGAN(深度卷積對抗生成網絡,Deep Convolutional Generative Adversarial Networks)是GAN的直接擴展。不同之處在于,DCGAN會分別在判別器和生成器中使用卷積和轉置卷積層。

它最早由Radford等人在論文Unsupervised Representation Learning With Deep Convolutional Generative Adversarial Networks中進行描述。判別器由分層的卷積層、BatchNorm層和LeakyReLU激活層組成。輸入是3x64x64的圖像,輸出是該圖像為真圖像的概率。生成器則是由轉置卷積層、BatchNorm層和ReLU激活層組成。輸入是標準正態分布中提取出的隱向量𝑧𝑧,輸出是3x64x64的RGB圖像。

本教程將使用動漫頭像數據集來訓練一個生成式對抗網絡,接著使用該網絡生成動漫頭像圖片。

數據準備與處理

首先我們將數據集下載到指定目錄下并解壓

下載后的數據集目錄結構如下:

./faces/faces
├── 0.jpg
├── 1.jpg
├── 2.jpg
├── 3.jpg
├── 4.jpg...
├── 70169.jpg
└── 70170.jpg

數據處理?

首先為執行過程定義一些輸入:

定義create_dataset_imagenet函數對數據進行處理和增強操作。?

通過create_dict_iterator函數將數據轉換成字典迭代器,然后使用matplotlib模塊可視化部分訓練數據。?

構造網絡

當處理完數據后,就可以來進行網絡的搭建了。按照DCGAN論文中的描述,所有模型權重均應從mean為0,sigma為0.02的正態分布中隨機初始化。

生成器

生成器G的功能是將隱向量z映射到數據空間。由于數據是圖像,這一過程也會創建與真實圖像大小相同的 RGB 圖像。在實踐場景中,該功能是通過一系列Conv2dTranspose轉置卷積層來完成的,每個層都與BatchNorm2d層和ReLu激活層配對,輸出數據會經過tanh函數,使其返回[-1,1]的數據范圍內。

DCGAN論文生成圖像如下所示:

我們通過輸入部分中設置的nzngfnc來影響代碼中的生成器結構。nz是隱向量z的長度,ngf與通過生成器傳播的特征圖的大小有關,nc是輸出圖像中的通道數。?

判別器

如前所述,判別器D是一個二分類網絡模型,輸出判定該圖像為真實圖的概率。通過一系列的Conv2dBatchNorm2dLeakyReLU層對其進行處理,最后通過Sigmoid激活函數得到最終概率。

DCGAN論文提到,使用卷積而不是通過池化來進行下采樣是一個好方法,因為它可以讓網絡學習自己的池化特征。

模型訓練

損失函數?

當定義了DG后,接下來將使用MindSpore中定義的二進制交叉熵損失函數BCELoss。

優化器

這里設置了兩個單獨的優化器,一個用于D,另一個用于G。這兩個都是lr = 0.0002beta1 = 0.5的Adam優化器。

訓練模型

訓練分為兩個主要部分:訓練判別器和訓練生成器。

  • 訓練判別器

    訓練判別器的目的是最大程度地提高判別圖像真偽的概率。按照Goodfellow的方法,是希望通過提高其隨機梯度來更新判別器,所以我們要最大化𝑙𝑜𝑔𝐷(𝑥)+𝑙𝑜𝑔(1?𝐷(𝐺(𝑧))𝑙𝑜𝑔𝐷(𝑥)+𝑙𝑜𝑔(1?𝐷(𝐺(𝑧))的值。

  • 訓練生成器

    如DCGAN論文所述,我們希望通過最小化𝑙𝑜𝑔(1?𝐷(𝐺(𝑧)))𝑙𝑜𝑔(1?𝐷(𝐺(𝑧)))來訓練生成器,以產生更好的虛假圖像。

在這兩個部分中,分別獲取訓練過程中的損失,并在每個周期結束時進行統計,將fixed_noise批量推送到生成器中,以直觀地跟蹤G的訓練進度。

循環訓練網絡,每經過50次迭代,就收集生成器和判別器的損失,以便于后面繪制訓練過程中損失函數的圖像。?

結果展示

描繪DG損失與訓練迭代的關系圖:

可視化訓練過程中通過隱向量fixed_noise生成的圖像。?

上面的圖像可以看出,隨著訓練次數的增多,圖像質量也越來越好。如果增大訓練周期數,當num_epochs達到50以上時,生成的動漫頭像圖片與數據集中的較為相似。?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/41601.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41601.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41601.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

想知道你的電腦能不能和如何升級RAM嗎?這里有你想要的一些提示

考慮給你的電腦增加更多的RAM,但不確定從哪里開始?本指南涵蓋了有關升級Windows PC或筆記本電腦中RAM的所有信息。 你需要升級RAM嗎 在深入研究升級RAM的過程之前,評估是否需要升級是至關重要的。你是否經歷過系統滯后、頻繁的BSOD錯誤或應用程序和程序突然崩潰?這些癥狀…

從零開始的python學習生活

pycharm部分好用快捷鍵 變量名的定義 與之前學習過的語言有所不同的是,python中變量名的定義更加的簡潔 such as 整形。浮點型和字符串的定義 money50 haha13.14 gaga"hello"字符串的定義依然是需要加上引號,也不需要寫;了 字符…

Django 常見的操作符

在filter() 方法,exclude() 方法中使用大于,小于,模糊匹配等操作符。 常見的操作符如下: 操作符含義示例等于Book.objects.filter(price10)! 或 __ne不等于用于查找字段不等于特定值的記錄。但更常用exclude()方法。__gt大于用于…

React Redux使用@reduxjs/toolkit的hooks

關于redux的學習過程需要幾個官網,有redux官網,React Redux官網和Redux Toolkit的官網。 其中后者的中文沒有找到,不過其中的使用在React Redux官網的快速入門中有介紹。 現在一般不使用connect借接口了。 對于借助Redux Toolkit的React Redu…

Linux GUN(gcc/g++) 版本升級教程

Linux gcc/g 升級命令: // 查看當前安裝的版本 ll /usr/bin/gcc* ll /usr/bin/g*// 更新源 sudo apt update // 安裝新版本 sudo apt install g-10 gcc-10 // 應用新的版本 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 10 sudo update-altern…

【網站推薦】Developer Roadmaps 開發者學習路線

你是否想學習某門技術而苦苦找不到學習路線。本文推薦一個網站,解決學習路徑問題。 roadmap.sh 旨在創建路線圖、指南和其他教育內容,以幫助指導開發人員選擇路徑并指導他們的學習。 技術路線包括了前端后端安卓iosUI設計等內容,一些技術比如…

信息安全三要素

文章目錄 安全三要素 CIA機密性完整性可用性參考資料 安全三要素 CIA 安全三要素,也被稱為信息安全的CIA三要素,是確保信息和系統安全的核心原則。它們分別是: 機密性(Confidentiality):保護數據不能泄露…

antdesignvue對話框用戶可移動并縮放

原貼 輕松搞定Ant Design Modal對話框拖拽縮放 - ByteZoneX社區https://www.bytezonex.com/archives/IFRuoJhd.html Ant Design 模態對話框:實現拖拽縮放功能 **子 Ant Design 是一個流行的前端 UI 框架,提供了一系列實用的組件,包括模態對…

ESP32CAM物聯網教學02

ESP32CAM物聯網教學02 物聯網門鎖 小智來到姑姑家門口,按了門鈴;還在公司上班的姑姑用電腦給小智開了門,讓他先進屋休息。小智對物聯網門鎖產生了興趣:什么是物聯網?為什么這么厲害? 初識物聯網 我們在百…

andboxie-Plus - 知名沙盒軟件、支持游戲多開測試軟件

我們經常會需要用到一些毒瘤軟件——它們可能不是真正的惡意軟件,但總愛偷摸干一些流氓行為。 工作中,有時還不得不安裝使用一些來路不明、不能完全信任的可疑軟件。 裝上吧,心里膈應、難受;不裝吧,有些工作又進行不…

代碼隨想錄算法訓練營第五十八天|KMC101 孤島的總面積、KMC102 沉沒孤島、KMC103 水流問題

題1: 指路:101. 孤島的總面積 (kamacoder.com) 思路與代碼: 本題要求找到不靠邊的陸地面積,那么我們從地圖的最外層開始遍歷,找到靠近四個邊的陸地,通過搜索將周邊靠陸地且相鄰的陸地1變成海洋0&#xf…

【驅動篇】龍芯LS2K0300之PWM設備驅動

實驗目的 利用脈沖調制效應(PWM)等效改變輸出功率大小控制LED,從而實現呼吸燈效果,需要用到RGB LED模塊 模塊連接 IO 插針接口上一共集成了兩路PWM,分別是PWM2和PWM3,對應GPIO88、GPIO89 PWM2和PWM3對…

期末考試結束,老師該如何私發成績?

隨著期末考試的落幕,校園里又恢復了往日的寧靜。然而,對于老師們來說,這并不意味著工作的結束,相反,一系列繁瑣的任務才剛剛開始。 成績單的發放,就是其中一項讓人頭疼的工作。家長們焦急地等待著孩子的考試…

Python程序打包成EXE文件指南

本套課在線學習視頻(網盤地址,保存到網盤即可免費觀看): ??https://pan.quark.cn/s/57ba5f313c5b?? 將Python程序打包成可執行文件(EXE)可以方便用戶在沒有Python環境的計算機上運行程序。本文將詳細…

【Linux】在線求助命令--help,man page , info page

我們知道Linux有很多的命令,那LInux要不要背命令? 答案是背最常用的那些就行了 那有的時候我們想查詢一些命令的詳細用法該怎么辦呢? 這里我給出3種方法 1.--help --help的使用方法很簡單啊 要查詢的命令 --help 我們看個例子 這里我只…

C語言4 運算符

目錄 1. 算術運算符 2. 關系運算符 3. 邏輯運算符 4. 位運算符 5. 賦值運算符 6. 自增和自減運算符 7. 條件運算符(三元運算符) 8. 逗號運算符 9. sizeof 運算符 10. 取地址和解引用運算符 11.運算符的優先級 1. 算術運算符 (加法)&#xff1…

CRT工具

CRT工具 傳輸位置設置 打開SFTP alt p 命令 ls:遠程機器當前目錄內容 lls:傳輸位置文件的目錄內容 pwd:遠程機器的當前位置 lpwd:傳輸位置的位置 get 文件:ftp傳輸文件 get -r 文件夾:ftp傳輸文件…

如何獲取歌曲id---cloudmusic

X-Requested-With:“XMLHttpRequest”: https://blog.csdn.net/muzico425/article/details/102735413 https://www.runoob.com/xml/xml-http.html https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest 通過該案例主要還是學習一下X-Requested-With:"XMLHtt…

大華DSS user_toLoginPage.action命令執行漏洞

免責聲明 本文章僅做網絡安全技術研究使用!嚴禁用于非法犯罪行為,請嚴格遵守國家法律法規;請勿利用文章內的相關技術從事非法測試,如因此產生的一切不良后果與文章作者無關。使用本文所提供的信息或工具即視為同意本免責聲明&…

go語言day11 錯誤 defer(),panic(),recover()

錯誤: 創建錯誤 1)fmt包下提供的方法 fmt.Errorf(" 格式化字符串信息 " , 空接口類型對象 ) 2)errors包下提供的方法 errors.New(" 字符串信息 ") 創建自定義錯誤 需要實現error接口,而error接口…