Jadual Kandungan
1. Sediakan persekitaran
2. Model rangkaian
3 Kerugian
4. Latihan
Rumah Peranti teknologi AI Rangkaian musuh generatif, AI mengubah gambar menjadi gaya komik

Rangkaian musuh generatif, AI mengubah gambar menjadi gaya komik

Apr 11, 2023 pm 09:58 PM
gambar ai gan

Helo, semua.

Semua orang bermain dengan lukisan AI baru-baru ini saya menemui projek sumber terbuka di GitHub untuk dikongsi dengan anda.

Rangkaian musuh generatif, AI mengubah gambar menjadi gaya komik

Projek yang dikongsikan hari ini dilaksanakan menggunakan GAN​ Generative Adversarial Network Kami telah berkongsi banyak artikel sebelum ini tentang prinsip dan amalan GAN yang ingin tahu lebih lanjut boleh baca ia Artikel sejarah.

Kod sumber dan set data diperolehi pada akhir artikel Di sini kami berkongsi cara melatih dan menjalankan projek.

1. Sediakan persekitaran

Pasang tensorflow-gpu 1.15.0​, gunakan 2080Ti​ sebagai kad grafik GPU dan cuda versi 10.0.

git muat turun projek AnimeGANv2 kod sumber.

Selepas menyediakan persekitaran, anda perlu menyediakan set data dan vgg19.

Rangkaian musuh generatif, AI mengubah gambar menjadi gaya komik

Muat turun fail mampat dataset.zip, yang mengandungi 6k gambar sebenar dan 2k gambar komik untuk latihan GAN.

Rangkaian musuh generatif, AI mengubah gambar menjadi gaya komik

vgg19 digunakan untuk mengira kerugian, yang akan diperkenalkan secara terperinci di bawah.

2. Model rangkaian

Menjana rangkaian lawan memerlukan penentuan dua model, satu adalah penjana dan satu lagi adalah diskriminasi.

Rangkaian penjana ditakrifkan seperti berikut:

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)
Salin selepas log masuk

Modul utama dalam penjana ialah blok baki songsang

Rangkaian musuh generatif, AI mengubah gambar menjadi gaya komik

sisa Struktur (a) dan blok baki terbalik (b)

Struktur rangkaian diskriminator adalah seperti berikut:

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
Salin selepas log masuk

3 Kerugian

Gunakan VGG19 sebelum mengira kerugian​ Rangkaian mengvektorkan imej. Proses ini sedikit seperti operasi Embedding dalam NLP.

Pembenaman​ ialah tentang menukar perkataan kepada vektor, dan VGG19 ialah tentang menukar gambar kepada vektor.

Rangkaian musuh generatif, AI mengubah gambar menjadi gaya komik

Definisi VGG19

Logik untuk mengira kerugian adalah seperti berikut:

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

# 真实Rangkaian musuh generatif, AI mengubah gambar menjadi gaya komik向量化
vgg.build(real)
real_feature_map = vgg.conv4_4_no_activation

# 生成Rangkaian musuh generatif, AI mengubah gambar menjadi gaya komik向量化
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

# 真实Rangkaian musuh generatif, AI mengubah gambar menjadi gaya komik与生成Rangkaian musuh generatif, AI mengubah gambar menjadi gaya komik的损失
c_loss = L1_loss(real_feature_map, fake_feature_map)
# 漫画风格与生成Rangkaian musuh generatif, AI mengubah gambar menjadi gaya komik的损失
s_loss = style_loss(anime_feature_map, fake_feature_map)

return c_loss, s_loss
Salin selepas log masuk

Di sini vgg19 digunakan untuk mengira yang sebenar imej (parameter sebenar) masing-masing Kehilangan dengan imej yang dijana (parameter palsu), kehilangan imej yang dijana (parameter palsu) dengan gaya komik (parameter 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
Salin selepas log masuk

Akhirnya berikan kedua-dua kerugian ini berat yang berbeza, supaya gambar yang dihasilkan oleh penjana bukan sahaja mengekalkan rupa gambar sebenar, tetapi juga berhijrah ke gaya komik

4. Latihan

Laksanakan arahan berikut dalam direktori projek untuk memulakan latihan

python train.py --dataset Hayao --epoch 101 --init_epoch 10
Salin selepas log masuk

Selepas operasi berjaya, anda boleh melihat data.

Rangkaian musuh generatif, AI mengubah gambar menjadi gaya komik

Dalam masa yang sama juga dapat dilihat kerugian yang semakin berkurangan.

Kod sumber dan set data telah dibungkus Jika anda memerlukannya, tinggalkan mesej di ruangan komen.

Jika anda mendapati artikel ini berguna kepada anda, sila klik dan baca untuk menggalakkan saya, saya akan terus berkongsi projek Python+AI yang sangat baik pada masa hadapan.

Atas ialah kandungan terperinci Rangkaian musuh generatif, AI mengubah gambar menjadi gaya komik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara menambah lajur baru dalam SQL Cara menambah lajur baru dalam SQL Apr 09, 2025 pm 02:09 PM

Tambah lajur baru ke jadual yang sedia ada dalam SQL dengan menggunakan pernyataan Alter Table. Langkah -langkah khusus termasuk: Menentukan nama jadual dan maklumat lajur, menulis pernyataan Alter Jadual, dan melaksanakan pernyataan. Sebagai contoh, tambahkan lajur e -mel ke Jadual Pelanggan (Varchar (50)): Alter Jadual Pelanggan Tambah Varchar E -mel (50);

Apakah sintaks untuk menambah lajur dalam SQL Apakah sintaks untuk menambah lajur dalam SQL Apr 09, 2025 pm 02:51 PM

Sintaks untuk menambah lajur dalam sql adalah alter table table_name tambah column_name data_type [not null] [default default_value]; Di mana table_name adalah nama jadual, column_name adalah nama lajur baru, data_type adalah jenis data, tidak null menentukan sama ada nilai null dibenarkan, dan lalai default_value menentukan nilai lalai.

Jadual Jelas SQL: Petua Pengoptimuman Prestasi Jadual Jelas SQL: Petua Pengoptimuman Prestasi Apr 09, 2025 pm 02:54 PM

Petua untuk Meningkatkan Prestasi Pembersihan Jadual SQL: Gunakan jadual Truncate dan bukannya memadam, membebaskan ruang dan menetapkan semula lajur Identiti. Lumpuhkan kekangan utama asing untuk mengelakkan penghapusan cascading. Gunakan operasi enkapsulasi transaksi untuk memastikan konsistensi data. Batch memadam data besar dan hadkan bilangan baris melalui had. Membina semula indeks selepas membersihkan untuk meningkatkan kecekapan pertanyaan.

Cara menetapkan nilai lalai semasa menambahkan lajur dalam sql Cara menetapkan nilai lalai semasa menambahkan lajur dalam sql Apr 09, 2025 pm 02:45 PM

Tetapkan nilai lalai untuk lajur yang baru ditambahkan, gunakan pernyataan ALTER Jadual: Tentukan Menambah Lajur dan Tetapkan Nilai Lalai: Alter Table Table_Name Tambah Column_Name Data_Type Default Default_Value; Gunakan klausa kekangan untuk menentukan nilai lalai: alter table Table_name Tambah lajur Column_name data_type kekangan default_constraint default_value;

Gunakan penyataan padam untuk membersihkan jadual SQL Gunakan penyataan padam untuk membersihkan jadual SQL Apr 09, 2025 pm 03:00 PM

Ya, pernyataan padam boleh digunakan untuk membersihkan jadual SQL, langkah -langkahnya adalah seperti berikut: Gunakan pernyataan padam: padam dari meja_name; Ganti Table_name dengan nama jadual untuk dibersihkan.

Bagaimana untuk menangani pemecahan memori Redis? Bagaimana untuk menangani pemecahan memori Redis? Apr 10, 2025 pm 02:24 PM

Pemecahan ingatan redis merujuk kepada kewujudan kawasan bebas kecil dalam ingatan yang diperuntukkan yang tidak dapat ditugaskan semula. Strategi mengatasi termasuk: Mulakan semula Redis: Kosongkan memori sepenuhnya, tetapi perkhidmatan mengganggu. Mengoptimumkan struktur data: Gunakan struktur yang lebih sesuai untuk Redis untuk mengurangkan bilangan peruntukan dan siaran memori. Laraskan parameter konfigurasi: Gunakan dasar untuk menghapuskan pasangan nilai kunci yang paling kurang baru-baru ini. Gunakan mekanisme kegigihan: sandarkan data secara teratur dan mulakan semula redis untuk membersihkan serpihan. Pantau penggunaan memori: Cari masalah tepat pada masanya dan ambil langkah.

phpmyadmin mencipta jadual data phpmyadmin mencipta jadual data Apr 10, 2025 pm 11:00 PM

Untuk membuat jadual data menggunakan phpmyadmin, langkah -langkah berikut adalah penting: Sambungkan ke pangkalan data dan klik tab baru. Namakan jadual dan pilih enjin penyimpanan (disyorkan innoDB). Tambah butiran lajur dengan mengklik butang Tambah Lajur, termasuk nama lajur, jenis data, sama ada untuk membenarkan nilai null, dan sifat lain. Pilih satu atau lebih lajur sebagai kunci utama. Klik butang Simpan untuk membuat jadual dan lajur.

Cara Membuat Pangkalan Data Oracle Cara Membuat Pangkalan Data Oracle Cara Membuat Pangkalan Data Oracle Cara Membuat Pangkalan Data Oracle Apr 11, 2025 pm 02:33 PM

Mewujudkan pangkalan data Oracle tidak mudah, anda perlu memahami mekanisme asas. 1. Anda perlu memahami konsep pangkalan data dan Oracle DBMS; 2. Menguasai konsep teras seperti SID, CDB (pangkalan data kontena), PDB (pangkalan data pluggable); 3. Gunakan SQL*Plus untuk membuat CDB, dan kemudian buat PDB, anda perlu menentukan parameter seperti saiz, bilangan fail data, dan laluan; 4. Aplikasi lanjutan perlu menyesuaikan set aksara, memori dan parameter lain, dan melakukan penalaan prestasi; 5. Beri perhatian kepada ruang cakera, keizinan dan parameter, dan terus memantau dan mengoptimumkan prestasi pangkalan data. Hanya dengan menguasai ia dengan mahir memerlukan amalan yang berterusan, anda boleh benar -benar memahami penciptaan dan pengurusan pangkalan data Oracle.

See all articles