目錄
1. 準備環境
2. 網路模型
#3. 損失​​
4. 訓練
首頁 科技週邊 人工智慧 生成對抗網絡,AI將圖片轉成漫畫風格

生成對抗網絡,AI將圖片轉成漫畫風格

Apr 11, 2023 pm 09:58 PM
圖片 ai gan

哈嘍,大家好。

最近大家都在玩 AI 繪畫,我在 GitHub 找了一個開源項目,跟大家分享一下。

生成對抗網絡,AI將圖片轉成漫畫風格

今天分享的這個專案是用 GAN 生成對抗網路實現的,關於GAN的原理和實戰我們之前分享過很多文章,想了解的朋友可以去翻歷史文章。

原始碼和資料集文末獲取,以下分享如何訓練、運行專案。

1. 準備環境

安裝 tensorflow-gpu 1.15.0,GPU顯示卡使用2080Ti,cuda版本10.0。

git下載項目AnimeGANv2原始碼。

建置好環境後,還需要準備資料集和vgg19。

生成對抗網絡,AI將圖片轉成漫畫風格

下載dataset.zip壓縮文件,裡麵包含 6k 張真實圖片和2k張漫畫圖片,用於GAN的訓練。

生成對抗網絡,AI將圖片轉成漫畫風格

vgg19是用來計算損失的,下面會有詳細介紹。

2. 網路模型

產生對抗網路需要定義兩個模型,一個是生成器,一個是判別器。

生成器網路定義如下:

with tf.variable_scope('A'):
inputs = Conv2DNormLReLU(inputs, 32, 7)
inputs = Conv2DNormLReLU(inputs, 64, strides=2)
inputs = Conv2DNormLReLU(inputs, 64)

with tf.variable_scope('B'):
inputs = Conv2DNormLReLU(inputs, 128, strides=2)
inputs = Conv2DNormLReLU(inputs, 128)

with tf.variable_scope('C'):
inputs = Conv2DNormLReLU(inputs, 128)
inputs = self.InvertedRes_block(inputs, 2, 256, 1, 'r1')
inputs = self.InvertedRes_block(inputs, 2, 256, 1, 'r2')
inputs = self.InvertedRes_block(inputs, 2, 256, 1, 'r3')
inputs = self.InvertedRes_block(inputs, 2, 256, 1, 'r4')
inputs = Conv2DNormLReLU(inputs, 128)

with tf.variable_scope('D'):
inputs = Unsample(inputs, 128)
inputs = Conv2DNormLReLU(inputs, 128)

with tf.variable_scope('E'):
inputs = Unsample(inputs,64)
inputs = Conv2DNormLReLU(inputs, 64)
inputs = Conv2DNormLReLU(inputs, 32, 7)
with tf.variable_scope('out_layer'):
out = Conv2D(inputs, filters =3, kernel_size=1, strides=1)
self.fake = tf.tanh(out)
登入後複製

生成器中主要的模組是反向殘差區塊

生成對抗網絡,AI將圖片轉成漫畫風格

殘差結構( a)與反向殘差塊(b)

判別器網路結構如下:

def D_net(x_init,ch, n_dis,sn, scope, reuse):
channel = ch // 2
with tf.variable_scope(scope, reuse=reuse):
x = conv(x_init, channel, kernel=3, stride=1, pad=1, use_bias=False, sn=sn, scope='conv_0')
x = lrelu(x, 0.2)

for i in range(1, n_dis):
x = conv(x, channel * 2, kernel=3, stride=2, pad=1, use_bias=False, sn=sn, scope='conv_s2_' + str(i))
x = lrelu(x, 0.2)

x = conv(x, channel * 4, kernel=3, stride=1, pad=1, use_bias=False, sn=sn, scope='conv_s1_' + str(i))
x = layer_norm(x, scope='1_norm_' + str(i))
x = lrelu(x, 0.2)

channel = channel * 2

x = conv(x, channel * 2, kernel=3, stride=1, pad=1, use_bias=False, sn=sn, scope='last_conv')
x = layer_norm(x, scope='2_ins_norm')
x = lrelu(x, 0.2)

x = conv(x, channels=1, kernel=3, stride=1, pad=1, use_bias=False, sn=sn, scope='D_logit')

return x
登入後複製

#3. 損失​​

計算損失之前先用VGG19網路將圖片向量化。這個過程有點像是NLP中的Embedding操作。

Eembedding是講詞轉換成向量,VGG19是講圖片轉換成向量。

生成對抗網絡,AI將圖片轉成漫畫風格

VGG19定義

計算損失部分邏輯如下:

def con_sty_loss(vgg, real, anime, fake):

# 真实生成對抗網絡,AI將圖片轉成漫畫風格向量化
vgg.build(real)
real_feature_map = vgg.conv4_4_no_activation

# 生成生成對抗網絡,AI將圖片轉成漫畫風格向量化
vgg.build(fake)
fake_feature_map = vgg.conv4_4_no_activation

# 漫画风格向量化
vgg.build(anime[:fake_feature_map.shape[0]])
anime_feature_map = vgg.conv4_4_no_activation

# 真实生成對抗網絡,AI將圖片轉成漫畫風格与生成生成對抗網絡,AI將圖片轉成漫畫風格的损失
c_loss = L1_loss(real_feature_map, fake_feature_map)
# 漫画风格与生成生成對抗網絡,AI將圖片轉成漫畫風格的损失
s_loss = style_loss(anime_feature_map, fake_feature_map)

return c_loss, s_loss
登入後複製

這裡使用vgg19分別計算真實圖片(參數real)與生成的圖片(參數fake)的損失,產生的圖片(參數fake)與漫畫風格(參數anime)的損失。

c_loss, s_loss = con_sty_loss(self.vgg, self.real, self.anime_gray, self.generated)
t_loss = self.con_weight * c_loss + self.sty_weight * s_loss + color_loss(self.real,self.generated) * self.color_weight + tv_loss
登入後複製

最終給這兩個損失不同的權重,這樣是的生成器生成的圖片,既保留了真實圖片的樣子,又向漫畫風格進行遷移

4. 訓練

在專案目錄下執行以下命令開始訓練

python train.py --dataset Hayao --epoch 101 --init_epoch 10
登入後複製

運行成功後,可以看到資料。

生成對抗網絡,AI將圖片轉成漫畫風格

同時,也可以看到損失不斷下降。

原始碼和資料集都已經打包好了,需要的朋友留言區留言即可。

如果大家覺得本文對你有用就點個 在看 鼓勵一下吧,後續我會持續分享優秀的 Python AI 專案。

以上是生成對抗網絡,AI將圖片轉成漫畫風格的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

怎麼創建oracle數據庫 oracle怎麼創建數據庫 怎麼創建oracle數據庫 oracle怎麼創建數據庫 Apr 11, 2025 pm 02:33 PM

創建Oracle數據庫並非易事,需理解底層機制。 1. 需了解數據庫和Oracle DBMS的概念;2. 掌握SID、CDB(容器數據庫)、PDB(可插拔數據庫)等核心概念;3. 使用SQL*Plus創建CDB,再創建PDB,需指定大小、數據文件數、路徑等參數;4. 高級應用需調整字符集、內存等參數,並進行性能調優;5. 需注意磁盤空間、權限和參數設置,並持續監控和優化數據庫性能。 熟練掌握需不斷實踐,才能真正理解Oracle數據庫的創建和管理。

oracle數據庫怎麼創建 oracle數據庫怎麼建庫 oracle數據庫怎麼創建 oracle數據庫怎麼建庫 Apr 11, 2025 pm 02:36 PM

創建Oracle數據庫,常用方法是使用dbca圖形化工具,步驟如下:1. 使用dbca工具,設置dbName指定數據庫名;2. 設置sysPassword和systemPassword為強密碼;3. 設置characterSet和nationalCharacterSet為AL32UTF8;4. 設置memorySize和tablespaceSize根據實際需求調整;5. 指定logFile路徑。 高級方法為使用SQL命令手動創建,但更複雜易錯。 需要注意密碼強度、字符集選擇、表空間大小及內存

oracle數據庫的語句怎麼寫 oracle數據庫的語句怎麼寫 Apr 11, 2025 pm 02:42 PM

Oracle SQL語句的核心是SELECT、INSERT、UPDATE和DELETE,以及各種子句的靈活運用。理解語句背後的執行機制至關重要,如索引優化。高級用法包括子查詢、連接查詢、分析函數和PL/SQL。常見錯誤包括語法錯誤、性能問題和數據一致性問題。性能優化最佳實踐涉及使用適當的索引、避免使用SELECT *、優化WHERE子句和使用綁定變量。掌握Oracle SQL需要實踐,包括代碼編寫、調試、思考和理解底層機制。

MySQL數據表字段操作指南之添加、修改與刪除方法 MySQL數據表字段操作指南之添加、修改與刪除方法 Apr 11, 2025 pm 05:42 PM

MySQL 中字段操作指南:添加、修改和刪除字段。添加字段:ALTER TABLE table_name ADD column_name data_type [NOT NULL] [DEFAULT default_value] [PRIMARY KEY] [AUTO_INCREMENT]修改字段:ALTER TABLE table_name MODIFY column_name data_type [NOT NULL] [DEFAULT default_value] [PRIMARY KEY]

oracle數據庫表的完整性約束有哪些 oracle數據庫表的完整性約束有哪些 Apr 11, 2025 pm 03:42 PM

Oracle 數據庫的完整性約束可確保數據準確性,包括:NOT NULL:禁止空值;UNIQUE:保證唯一性,允許單個 NULL 值;PRIMARY KEY:主鍵約束,加強 UNIQUE,禁止 NULL 值;FOREIGN KEY:維護表間關係,外鍵引用主表主鍵;CHECK:根據條件限制列值。

MySQL數據庫中的嵌套查詢實例詳解 MySQL數據庫中的嵌套查詢實例詳解 Apr 11, 2025 pm 05:48 PM

嵌套查詢是一種在一個查詢中包含另一個查詢的方式,主要用於檢索滿足複雜條件、關聯多張表以及計算匯總值或統計信息的數據。實例示例包括:查找高於平均工資的僱員、查找特定類別的訂單以及計算每種產品的總訂購量。編寫嵌套查詢時,需要遵循:編寫子查詢、將其結果寫入外層查詢(使用別名或 AS 子句引用)、優化查詢性能(使用索引)。

oracle是乾嘛的 oracle是乾嘛的 Apr 11, 2025 pm 06:06 PM

Oracle 是全球最大的數據庫管理系統(DBMS)軟件公司,其主要產品包括以下功能:關係數據庫管理系統(Oracle 數據庫)開發工具(Oracle APEX、Oracle Visual Builder)中間件(Oracle WebLogic Server、Oracle SOA Suite)雲服務(Oracle Cloud Infrastructure)分析和商業智能(Oracle Analytics Cloud、Oracle Essbase)區塊鏈(Oracle Blockchain Pla

如何配置Debian Apache日誌格式 如何配置Debian Apache日誌格式 Apr 12, 2025 pm 11:30 PM

本文介紹如何在Debian系統上自定義Apache的日誌格式。以下步驟將指導您完成配置過程:第一步:訪問Apache配置文件Debian系統的Apache主配置文件通常位於/etc/apache2/apache2.conf或/etc/apache2/httpd.conf。使用以下命令以root權限打開配置文件:sudonano/etc/apache2/apache2.conf或sudonano/etc/apache2/httpd.conf第二步:定義自定義日誌格式找到或

See all articles