โปรเจ็กต์นี้เป็นเครือข่ายปฏิปักษ์เชิงสร้างสรรค์เชิงลึกที่สามารถสร้างภาพคุณภาพสูงจากการสุ่มตัวอย่าง เช่น ภาพบุคคล สัตว์ ภาพวาด และอื่นๆ
โมเดลนี้เป็น Generative Adversarial Network (GAN) ดังที่อธิบายไว้ในรายงาน Generative Adversarial Nets จาก มหาวิทยาลัยมอนทรีออล (2014)
ตัวสร้างและผู้แยกแยะเป็นทั้งโครงข่ายประสาทเทียมแบบลึกเช่นเดียวกับในบทความ Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks จาก Facebook AI Research (2015) แต่มีการปรับปรุงเล็กน้อย:
ฉันได้เพิ่ม เลเยอร์อัตราการเรียนรู้ที่เท่าเทียมกัน จากรายงาน การเติบโตแบบก้าวหน้าของ GAN เพื่อปรับปรุงคุณภาพ ความเสถียร และการเปลี่ยนแปลง โดย Nvidia (2017)
ฉันเพิ่ม Bilinear Upsampling / Downsampling จากบทความ Making Convolutional Networks Shift-Invariant Again โดย Adobe Research (2019)
ฉันใช้ Wavelet Transform จากกระดาษ SWAGAN: A Style-based Wavelet-driven Generative Model โดย Tel-Aviv University (2021)
ฉันใช้ สถาปัตยกรรมตามสไตล์ ที่มี การป้อนข้อมูลคง ที่ สไตล์ที่เรียนรู้ จาก เครือข่ายการทำแผนที่ และ การฉีดเสียงรบกวน จากกระดาษ สถาปัตยกรรมตัวสร้างตามสไตล์สำหรับเครือข่ายฝ่ายตรงข้ามทั่วไป โดย Nvidia (2018)
ฉันเพิ่ม ข้ามการเชื่อมต่อ จากเอกสาร MSG-GAN: Multi-Scale Gradients for Generative Adversarial Networks โดย TomTom และ Adobe (2019)
ฉันเพิ่ม Residual Blocks จากบทความ Deep Residual Learning for Image Recognition โดย Microsoft Research (2015)
ฉันเพิ่ม Minibatch Standard Deviation ที่ส่วนท้ายของตัวแยกแยะจากเอกสาร ปรับปรุงเทคนิคสำหรับการฝึกอบรม GANs โดย OpenAI (2016)
ฉันเก็บ การสูญเสียที่ไม่อิ่มตัว ดั้งเดิมไว้จากกระดาษ Generative Adversarial Nets โดย มหาวิทยาลัยมอนทรีออล (2014)
ฉันเพิ่ม การทำให้ความยาวเส้นทางสม่ำเสมอ บนตัวสร้างจากกระดาษ การวิเคราะห์และปรับปรุงคุณภาพของภาพของ StyleGAN โดย Nvidia (2019)
ฉันได้เพิ่ม การปรับการลงโทษแบบไล่ระดับ บนตัวแบ่งแยกจากเอกสาร ปรับปรุงการฝึกอบรม Wasserstein GANs โดย Google Brain (2017)
ฉันได้เพิ่ม Adaptive Discriminator Augmentation (ADA) จากกระดาษ Training Generative Adversarial Networks ที่มีข้อมูลที่จำกัด โดย Nvidia (2020) แต่ความน่าจะเป็นในการเพิ่มนั้นไม่ได้รับการฝึกฝนและจะต้องตั้งค่าด้วยตนเอง (และการเสริมบางอย่างถูกปิดใช้งานเนื่องจากการใช้งาน PyTorch หายไป)
ฉันเพิ่มการคำนวณของ Fréchet Inception Distance (FID) ในระหว่างการฝึกอบรมจากกระดาษ GANs ที่ได้รับการฝึกฝนโดยกฎการอัปเดตสองมาตราส่วนมาบรรจบกันสู่สมดุลแนชท้องถิ่น โดย University Linz (2017) โดยใช้โมดูล pytorch-fid
ฉันเพิ่ม โปรเจ็กเตอร์ เหมือนในรายงาน การวิเคราะห์และปรับปรุงคุณภาพของภาพของ StyleGAN โดย Nvidia (2019)
ใบหน้ามนุษย์ 256*256 (FID: 5.97)
หน้าสัตว์ 256*256 (FID: 6.56)
อะนิเมะหน้า 256*256 (FID: 3.74)
ภาพวาดใบหน้า 256*256 (FID: 20.32)
ตุ้มน้ำหนักที่ได้รับการฝึกสำหรับชุดข้อมูลหลายชุดมีอยู่ใน Google Drive คุณเพียงแค่ต้องดาวน์โหลดไฟล์ .pt
และวางไว้ในโฟลเดอร์ models
รันคำสั่งต่อไปนี้เพื่อติดตั้งการอ้างอิง:
$ pip install -r requirements.txt
(คุณอาจต้องใช้ คำสั่งเฉพาะ สำหรับ PyTorch หากคุณต้องการใช้ CUDA)
ขั้นแรก คุณต้องค้นหาและดาวน์โหลดชุดข้อมูลของรูปภาพ (น้อยกว่า 5,000 รายการอาจน้อยเกินไป และมากกว่า 150,000 รายการก็ไม่จำเป็น) คุณสามารถค้นหาชุดข้อมูลจำนวนมากบน Kaggle และชุดข้อมูลที่ฉันเคยใช้ใน Google Drive
จากนั้นในไฟล์ training/settings.py
ให้ระบุ เส้นทาง ไปยังชุดข้อมูล
หากคุณไม่มี GPU ขนาด 24GB ที่ราคาสูงเกินไปเหมือนฉัน การตั้งค่าเริ่มต้นอาจไม่เหมาะกับคุณ คุณสามารถลอง:
เรียกใช้ไฟล์ training.ipynb
(คุณสามารถหยุดการฝึกเมื่อใดก็ได้และดำเนินการต่อในภายหลังด้วยจุดตรวจ)
เรียกใช้ไฟล์ testing.ipynb
เพื่อสร้างอิมเมจแบบสุ่ม
เรียกใช้ไฟล์ testing/interpolation.ipynb
เพื่อสร้างภาพวิดีโอการแก้ไขที่ราบรื่น
รันไฟล์ testing/projector.ipynb
เพื่อฉายภาพจริงลงในพื้นที่แฝง
เรียกใช้ไฟล์ testing/style_mixing.ipynb
เพื่อสร้างรูปภาพของวิดีโอการแก้ไขแบบผสมสไตล์
เรียกใช้ไฟล์ testing/timelapse.ipynb
เพื่อสร้างภาพของวิดีโอไทม์แลปส์การฝึก