0Pricing
Learn AI with Python · บทเรียน

GAN แบบมีเงื่อนไขและการถ่ายโอนสไตล์

cGAN ที่กำหนดเงื่อนไขด้วยคลาส แนวคิด CycleGAN และการถ่ายโอนสไตล์ด้วยโครงข่ายประสาทโดยใช้ VGG

GAN แบบมีเงื่อนไขและการถ่ายโอนสไตล์ เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

การควบคุมสิ่งที่ GAN สร้าง

GAN ทั่วไปสร้างตัวอย่างแบบสุ่ม ดังนั้นคุณจึงไม่สามารถขอให้สร้างประเภทที่ต้องการได้โดยเฉพาะ บทเรียนนี้ครอบคลุม การสร้างแบบมีเงื่อนไข (cGANs) การแปลงข้อมูลระหว่างขอบเขตแบบไม่มีคู่ข้อมูล (CycleGAN) และ การถ่ายโอนรูปแบบด้วยโครงข่ายประสาทเทียม

GAN แบบมีเงื่อนไข (cGAN)

cGAN เพิ่มเงื่อนไข เช่น ป้ายกำกับประเภท ให้กับทั้งตัวสร้างและตัวจำแนก ตอนนี้คุณสามารถขอให้ "สร้างเลข 7" ได้ด้วยการส่งป้ายกำกับไปพร้อมกับสัญญาณรบกวน

การกำหนดเงื่อนไขให้ตัวสร้าง

ตัวสร้างจะ นำป้ายกำกับมาต่อเข้าด้วยกัน (แบบเข้ารหัสหนึ่งตำแหน่งหรือแบบฝังตัว) กับเวกเตอร์สัญญาณรบกวน ข้อมูลนำเข้าที่รวมกันนี้ช่วยให้ตัวสร้างสร้างตัวอย่างของประเภทที่ต้องการได้

label_emb = embedding(label)        # e.g. dim 10
z = torch.randn(batch, 100)
gen_input = torch.cat([z, label_emb], dim=1)
fake = generator(gen_input)

การกำหนดเงื่อนไขให้ตัวจำแนก

ตัวจำแนกจะได้รับป้ายกำกับด้วย ดังนั้นมันจึงไม่ได้ตัดสินเพียงว่า "นี่เป็นของจริงหรือไม่" แต่ยังตัดสินว่า "นี่เป็นตัวอย่างจริง ของประเภทนี้ หรือไม่" ด้วย วิธีนี้บังคับให้ตัวสร้างเคารพเงื่อนไขที่กำหนด

d_input = torch.cat([image, label_emb], dim=1)
score = discriminator(d_input)

การแปลงภาพแบบไม่มีคู่ข้อมูล

บ่อยครั้งที่เราไม่มีคู่ข้อมูลที่ตรงกัน เช่น ม้าตัวเดียวกันในภาพม้าลาย CycleGAN จะแปลงข้อมูลระหว่างขอบเขตสองแบบโดยใช้ภาพที่ ไม่มีคู่ข้อมูล เรียนรู้การแปลงจากม้าเป็นม้าลายและย้อนกลับได้โดยไม่ต้องมีตัวอย่างที่จัดแนวตรงกัน

ตัวสร้างสองตัว สองขอบเขตข้อมูล

CycleGAN ใช้ตัวสร้างสองตัว ได้แก่ G: A to B และ F: B to A โดยแต่ละตัวมีตัวจำแนกของตนเอง ทั้งสองทำงานร่วมกันเพื่อแปลงข้อมูลไปมาระหว่างขอบเขตข้อมูลทั้งสองทิศทาง

# G: photo -> painting
# F: painting -> photo

ค่าความสูญเสียจากความสอดคล้องแบบวัฏจักร

แนวคิดสำคัญคือ การแปลงจาก A ไป B แล้วกลับมายัง A ควรได้ข้อมูลเดิมคืนมา ค่าความสูญเสียจากความสอดคล้องแบบวัฏจักรจะบังคับให้เป็นไปตาม F(G(a)) == a ซึ่งจำกัดการจับคู่โดยไม่ต้องใช้ข้อมูลที่เป็นคู่กัน

cycle_loss = (
    l1(F(G(a)), a) +
    l1(G(F(b)), b)
)

การถ่ายโอนรูปแบบด้วยโครงข่ายประสาทเทียม

การถ่ายโอนรูปแบบด้วยโครงข่ายประสาทเทียมผสม เนื้อหา ของภาพหนึ่งเข้ากับ รูปแบบ ของอีกภาพหนึ่ง เช่น ภาพถ่ายที่วาดให้เหมือนผลงานของแวนโก๊ะ วิธีนี้ปรับภาพผลลัพธ์โดยตรงโดยใช้คุณลักษณะจาก CNN ที่ฝึกไว้ล่วงหน้า

ค่าความสูญเสียด้านเนื้อหา

ค่าความสูญเสียด้านเนื้อหาช่วยให้โครงสร้างระดับสูงของผลลัพธ์ใกล้เคียงกับภาพเนื้อหา โดยเปรียบเทียบแผนผังคุณลักษณะเชิงลึกจาก CNN วิธีนี้ช่วยรักษา สิ่งที่ อยู่ในภาพไว้

content_loss = mse(features_out, features_content)

ค่าความสูญเสียด้านรูปแบบและเมทริกซ์แกรม

รูปแบบจะถูกแทนด้วย เมทริกซ์แกรม ซึ่งแสดงความสัมพันธ์ระหว่างช่องคุณลักษณะ การทำให้เมทริกซ์แกรมตรงกันจะถ่ายโอนพื้นผิวและสี ค่าความสูญเสียด้านรูปแบบจะเปรียบเทียบเมทริกซ์แกรมของผลลัพธ์กับภาพรูปแบบ

def gram(f):
    b, c, h, w = f.size()
    f = f.view(c, h * w)
    return f @ f.t()

style_loss = mse(gram(features_out), gram(features_style))

การรวมค่าความสูญเสีย

ค่าความสูญเสียทั้งหมดเป็นผลรวมแบบถ่วงน้ำหนักดังนี้ alpha * content_loss + beta * style_loss การปรับน้ำหนักจะเป็นการแลกเปลี่ยนระหว่างปริมาณเนื้อหาที่ผลลัพธ์รักษาไว้กับระดับที่ผลลัพธ์รับรูปแบบมาใช้

total = alpha * content_loss + beta * style_loss
total.backward()  # gradients update the output IMAGE

ตรวจสอบความเข้าใจ

ทดสอบความรู้เกี่ยวกับการสร้างแบบมีเงื่อนไข

สรุป: GAN แบบมีเงื่อนไขและการถ่ายโอนรูปแบบ

คุณได้เรียนรู้ว่า cGANs นำป้ายกำกับประเภทมาต่อกับข้อมูลนำเข้าของตัวสร้างและตัวจำแนกเพื่อควบคุมการสร้างข้อมูล CycleGAN ใช้ ค่าความสูญเสียจากความสอดคล้องแบบวัฏจักรสำหรับการแปลงข้อมูลที่ไม่มีคู่กัน และ การถ่ายโอนรูปแบบด้วยโครงข่ายประสาทเทียมจะผสมค่าความสูญเสียด้านเนื้อหาเข้ากับค่าความสูญเสียด้านรูปแบบจาก เมทริกซ์แกรม เพื่อวาดภาพใหม่

คำถามที่พบบ่อย

บทเรียน “GAN แบบมีเงื่อนไขและการถ่ายโอนสไตล์” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “GAN แบบมีเงื่อนไขและการถ่ายโอนสไตล์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “GAN แบบมีเงื่อนไขและการถ่ายโอนสไตล์”

cGAN ที่กำหนดเงื่อนไขด้วยคลาส แนวคิด CycleGAN และการถ่ายโอนสไตล์ด้วยโครงข่ายประสาทโดยใช้ VGG คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “GAN แบบมีเงื่อนไขและการถ่ายโอนสไตล์” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม

ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ออโตเอนโคดเดอร์สำหรับการเรียนรู้การแทนค่า
  2. ออโตเอนโคดเดอร์แบบแปรผัน (VAE)
  3. GAN: ตัวสร้างและตัวจำแนก
  4. GAN แบบมีเงื่อนไขและการถ่ายโอนสไตล์
← กลับไปที่ Learn AI with Python