StyleGAN2-ADA คืออะไร?

ตัวอย่างรูปภาพที่สร้างจาก Style Transfer Neural Network

StyleGAN2-ADA ย่อมาจาก Style Generative Adversarial Networks 2 with Adaptive Discriminator Augmentation ซึ่งโมเดลนี้ถูกพัฒนาขึ้นมาโดยมีโครงสร้างพื้นฐานมาจาก GAN แต่จะมีจุดเด่นในเรื่องการนำสไตล์ของรูปภาพที่เรียนรู้มาใช้ได้และยังสามารถทำงานได้มีประสิทธิภาพภายใต้ข้อมูลที่มีจำกัดอีกด้วย StyleGAN นั้นนำเสนอครั้งแรกโดยทีมวิจัยของ Nvidia และปัจจุบันมีโมเดลทั้งหมดดังนี้ StyleGAN Version โดยเวอร์ชั่นที่จะเทรนกันนี้เป็นเวอร์ชั่นของเมื่อปี 2020 สามารถอ่านงานวิจัยเรื่องการเทรน GAN ด้วยข้อมูลที่มีจำกัดได้ที่นี่ จากรูปตัวอย่างด้านบนเป็นการนำภาพถ่ายไปวาดใหม่เป็นรูปวาดในสไตล์ของศิลปิน Claude Monet

Requirements ในการเทรน StyleGAN2 บน Windows 10

สำหรับรายละเอียดการใช้งานโมเดลทั้งหมดสามารถดูได้จาก GitHub ของ Nvidia นี้

บนเครื่อง Windows ทั่ว ๆ  ไปที่ใช้กันนั้นหากต้องการจะเทรนโมเดลนี้จะต้องมีการเตรียมการดังนี้

  1. เครื่องจะต้องมี OS เป็น Windows 10
  2. การ์ดจอ Nvidia สเปคสูงหน่อย 1-8 ใบ (ถ้ามีรุ่นดี ๆ สเปคสูง ๆ ก็ยิ่งดีครับ)
  3. Python 3.7
  4. Pytorch 1.7.1
  5. CUDA Toolkit 11.0 ขึ้นไป
  6. pip install click requests tqdm pyspng ninja imageio-ffmpeg==0.4.3
    (ถ้าตอนใช้งานขาดตัวไหนไปก็ pip install เพิ่มได้เลย)
  7. Visual Studio Community Edition (เวอร์ชั่นใหม่ก็ได้)

ขั้นตอนที่แนะนำให้ทำทั้งหมดมีดังนี้

1. สร้างโฟลเดอร์สำหรับเก็บโปรเจค และ git clone โปรเจคมาเก็บไว้

ในไดร์ฟ C ให้สร้างโฟลเดอร์ขึ้นมา 1 อัน จากนั้นเข้าไปในโฟลเดอร์ดังกล่าวและทำการโคลนโปรเจคด้วยคำสั่ง

git clone https://github.com/NVlabs/stylegan2-ada-pytorch

เราจะได้โฟลเดอร์ชื่อ stylegan2-ada-pytorch มาไว้ (พวกโฟลเดอร์อื่นในรูปข้างบนนี้คือชุดข้อมูล และผลลัพธ์ซึ่งแล้วแต่เราว่าจะอยากเก็บไว้ที่ไหน)

2. สร้าง Virtual Environment ด้วย Conda

โดยข้อ 3, 4, 6 แนะนำว่าให้ติดตั้งใน Virtual Environment และสำหรับ Environment ให้ใช้ Anaconda ในการสร้างได้เลย (conda create –name yourenvname python=3.7) และทำการถอนการติดตั้ง Tensorflow ออกไปด้วย (เพราะในที่นี้จะ implement ด้วย pytorch) ใช้ pip uninstall tensorflow ได้เลย

3. Download & Install CUDA Toolkit

ดาวน์โหลดได้จากลิงก์นี้ https://developer.nvidia.com/cuda-downloads

เลือกเป็น Windows และ Version เป็น 10 จากนั้นติดตั้งให้เรียบร้อยโดยทำตามคำแนะนำที่ปรากฎบนหน้าจอ (ในกรณีที่มีปัญหาอาจเป็นเพราะการ์ดจอไม่รองรับ CUDA ยังไงก็ลองเช็คดูที่นี่ก่อนได้ครับ แต่ของผู้เขียนเองก็ใช้แค่ GTX 1660 Ti ก็สามารถติดตั้งและใช้งานได้ครับ) 

4. Download & Install Visual Studio Community Edition

ดาวน์โหลดได้จากลิงก์นี้ https://visualstudio.microsoft.com/downloads/

สิ่งสำคัญคือจะต้องติดตั้ง Desktop development with C++ และ Universal Windows Platform development เพื่อให้ชุดโปรแกรมของ StyleGAN ที่ Nvidia เขียนไว้สามารถทำงานได้ครบถ้วน

นอกจากนี้จะต้องย้าย Path ของโปรแกรม Visual Studio ไปไว้ที่นี่ด้วย “C:\Program Files (x86)\Microsoft Visual Studio\<VERSION>\Community\VC\Auxiliary\Build\vcvars64.bat” (ไว้ที่นี่ เพราะบางเครื่องมันจะไปติดตั้งอยู่บน Program Files ธรรมดาที่ไม่ใช่ x86 ทั้งนี้เราไม่ต้องลบของเก่าออก แต่ Copy ขึ้นมาอีกชุดแล้วย้ายไปไว้ที่ Path ด้านล่างนี้ก็ได้ครับ เพื่อความชัวร์)

การเตรียมชุดข้อมูลรูปภาพ

การเตรียมข้อมูลรูปภาพนั้นคุณสามารถที่จะไปหารูปภาพจากไหนก็ได้ที่คุณต้องการ โดยมีข้อแม้ว่าอัตราส่วนจะต้องเป็น 1:1 เช่น 128 x 128, 256 x 256, 512 x 512, 1024 x 1024 เป็นต้น ขอแนะนำเป็น 256 ก็พอเพื่อที่จะได้เห็นผลลัพธ์และได้ทดลองทำ (128 ก็อาจจะละเอียดน้อยไป แต่ 512 กับ 1024 จำเป็นต้องมีการ์ดจอที่สเปคสูงมาก ๆ ถึงจะรันได้) โดยข้อมูลรูปจะไปหาเก็บมาเองหรือจะไปหาโหลดใน Kaggle ก็ได้ครับตามสะดวก เมื่อโหลดมาแล้วก็เก็บไว้ในโฟลเดอร์เดียวกันกับที่ใช้เก็บโปรเจคได้เลย

เริ่มต้น Train StyleGAN2 ADA ด้วยภาพของเราเอง

หาก Setup ครบถ้วนถูกต้องทั้งหมดแล้วที่เหลือก็คือการเรียกใช้งานโมเดลและโมดูลต่าง ๆ ดังนี้

  1. Preparing datasets ด้วยคำสั่ง
    python dataset_tool.py –source=C:\sg2ada\photo –dest=C:\sg2ada\kphoto.zip –width=256 –height=256
    โดยตรง –source คือการบอกว่าชุดข้อมูลรูปภาพเราเก็บไว้ในโฟลเดอร์ไหน –dest คือชุดข้อมูลที่จะเตรียมนี้ให้เก็บไว้ที่ไหน และกำหนดขนาดความกว้าง ความสูง
    ในที่นี่จะได้เป็นไฟล์ .zip ของชุดข้อมูลภาพขนาด 256 * 256
  2. Training new networks ด้วยคำสั่ง
    python train.py –outdir=C:\sg2ada\results –data=C:\sg2ada\kphoto.zip –gpus=1 –workers=1 –aug=noaug
    โดย –outdir คือจะเก็บผลลัพธ์การ train ทั้งหมดที่เกิดขึ้นไว้ที่โฟลเดอร์ไหน –data คือไฟล์ .zip ที่เราจะนำมาใช้เทรน –gpus คือ จำนวนการ์ดจอที่เรามี –workers คือ การแบ่งตัวรันงาน ถ้าการ์ดจอสเปคพระเจ้าจะใส่ไป 8 ก็ได้แต่ถ้าสเปคบ้าน ๆ ก็ใส่แค่ 1 พอครับ –aug คือจะให้มันทำการจำลองชุดข้อมูลเพิ่มให้หรือไม่ก็แล้วแต่เราเลย ถ้าไม่ก็ใส่แบบในตัวอย่างได้ครับ
  3. เมื่อรันไปเรื่อย ๆ ตัวโปรแกรมจะคอยบันทึกโมเดลผลการดำเนินงานให้ในโฟลเดอร์พร้อมทั้ง save model เป็น pickle ไฟล์ไว้ให้เราเรียกใช้ในภายหลังได้อีกด้วย จะได้ดังในรูปข้างบน (แต่ของผู้เขียนเองเทรนไปได้แค่ประมาณ 4 ล้านรูปต้องขอปิดคอมก่อนเพราะใช้เวลาพอสมควร ถ้าเทรนจนจบก็จะมีโมเดลบันทึกไว้ให้หลายตัวครับตาม Snapshot)

การสั่งให้โมเดลวาดรูปภาพให้เราสมารถทำได้ดังนี้

  • python generate.py –outdir=C:\sg2ada\imageGened –trunc=1 –seeds=85,265,297,849 –network=C:\sg2ada\results\00005-kphoto-subset100-auto1-batch4-noaug\network-snapshot-000000.pkl
    โดย –outdir คือจะเก็บรูปภาพที่โมเดลวาดให้ไว้ในโฟลเดอร์ไหน –seeds คือค่า Noise ที่โมเดลจะนำมาวาดรูปให้กับเรากำหนดได้หลาย seed (ในที่นี้ใช้ 4 มันก็จะวาดออกมาให้ 4 รูป)
    –network คือการบอกว่าจะใช้โมเดลตัวไหนในการวาดรูป

เท่านี้ก็เป็นการเสร็จสิ้นขั้นตอนทั้งหมด

Conclusion

ขั้นตอนทั้งหมดในการ train StyleGAN2-ADA ด้วย Pytorch บน Windows 10 นั้นเริ่มที่

  • การสร้างโฟลเดอร์เก็บโปรเจคงาน
  • สร้าง Conda Virtual Environment และติดตั้ง Library
  • ติดตั้ง CUDA Toolkit 11.0 ขึ้นไป
  • ติดตั้ง Visual Studio พร้อมกับย้ายไปเก็บไว้ใน Program x86
  • เตรียมข้อมูลรูปภาพ
  • สร้างชุดข้อมูลและเทรนโมเดล
  • เรียกใช้งานโมเดลเพื่อวาดรูปให้

สำหรับโมเดลที่เทรนมาสมบูรณ์ในระดับหนึ่งแล้วก็น่าจะสามารถวาดรูปได้ประมาณนี้ครับ ดูได้ที่นี่

ตัวอย่างของโมเดล GAN ที่เห็น ๆ กันในปัจจุบันเช่นพวก Midjourney, This Person Does Not Exist, This Anime Does Not Exist และอื่น ๆ อีกมากมายในเทคโนโลยีเบื้องหลัง

วิดีโอสอนทำของคุณ Jeff Heaton

ติดตามบทความอื่น ๆ เพิ่มเติมได้ที่ SBC Blog

LINE OA: SUBBRAIN

Facebook: SUBBRAIN

Categories: Data&IT