StyleGAN2-ADA คืออะไร?
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 ทั่ว ๆ ไปที่ใช้กันนั้นหากต้องการจะเทรนโมเดลนี้จะต้องมีการเตรียมการดังนี้
- เครื่องจะต้องมี OS เป็น Windows 10
- การ์ดจอ Nvidia สเปคสูงหน่อย 1-8 ใบ (ถ้ามีรุ่นดี ๆ สเปคสูง ๆ ก็ยิ่งดีครับ)
- Python 3.7
- Pytorch 1.7.1
- CUDA Toolkit 11.0 ขึ้นไป
- pip install click requests tqdm pyspng ninja imageio-ffmpeg==0.4.3
(ถ้าตอนใช้งานขาดตัวไหนไปก็ pip install เพิ่มได้เลย) - 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 ได้เลย
- conda create –name yourenvname python=3.7
- pip uninstall tensorflow
- pip install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio==0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
การติดตั้ง Torch ดูได้ที่นี่ - pip install click requests tqdm pyspng ninja imageio-ffmpeg==0.4.3
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 ครบถ้วนถูกต้องทั้งหมดแล้วที่เหลือก็คือการเรียกใช้งานโมเดลและโมดูลต่าง ๆ ดังนี้
- Preparing datasets ด้วยคำสั่ง
python dataset_tool.py –source=C:\sg2ada\photo –dest=C:\sg2ada\kphoto.zip –width=256 –height=256
โดยตรง –source คือการบอกว่าชุดข้อมูลรูปภาพเราเก็บไว้ในโฟลเดอร์ไหน –dest คือชุดข้อมูลที่จะเตรียมนี้ให้เก็บไว้ที่ไหน และกำหนดขนาดความกว้าง ความสูง
ในที่นี่จะได้เป็นไฟล์ .zip ของชุดข้อมูลภาพขนาด 256 * 256 - 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 คือจะให้มันทำการจำลองชุดข้อมูลเพิ่มให้หรือไม่ก็แล้วแต่เราเลย ถ้าไม่ก็ใส่แบบในตัวอย่างได้ครับ - เมื่อรันไปเรื่อย ๆ ตัวโปรแกรมจะคอยบันทึกโมเดลผลการดำเนินงานให้ในโฟลเดอร์พร้อมทั้ง 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 และอื่น ๆ อีกมากมายในเทคโนโลยีเบื้องหลัง