เปลี่ยนม้าเป็นม้าลายทำได้ง่ายๆเลยเหรอ?? GAN (Generative Adversarial Network)
สวัสดีครับทุกวันนี้อะไรๆก็ดูง่ายไปหมด เหมือนดังรูปด้านล่างนี้ครับ
หลายคนอาจจะคิดว่า photoshop เอาหรือป่าว
คำตอบ คือ ป่าวเลยครับมันมาจาก GAN ล้วนๆ
ขอพูดแบบย่อๆก่อนเลยละกันนะครับว่า GAN คืออะไร
GAN (Generative Adversarial Network) คือ AI ที่เราจะให้มันเรียนรู้จาก Game 2 Player ซึ่งประกอบไปด้วย
- คนหลอก (Generator)
- คนตรวจ (Discriminator)
สมมุติเรากำลังเล่นเกมปลอมแบงค์กัน มอบหมายหน้าที่ให้
คนหลอก = หาวิธีทำให้แบงค์เหมือนจริงมากที่สุด
คนตรวจ = คัดแยกแบงค์ปลอมกับแบงค์จริงให้ได้
แล้วเกมมันจะจบยังไง แน่นอนครับเราต้องการให้ คนหลอก เก่งจนสามารถปลอมแบงค์ได้เหมือนจริงมากที่สุดและสามารถหลอกคนตรวจได้ หลังจากนั้นก็นำ “คนหลอก” ไปใช้งานในทางอื่นๆแล้วก็รวยกันทั้งประเทศ 55555
คำถามคือ คนหลอก จะเก่งขึ้นได้ยังไง
หลักการไม่ยากเลยครับให้มันสู้กันเดี๋ยวมันก็เก่งเอง 5555 ตามภาพด้านล่าง
จากภาพ อธิบายประมาณว่า
แบงค์จริง คือ Real samples
กระดาษธรรมดา คือ Latent Space
คนหลอก (Generator) เอากระดาษธรรมดามาเติมสีมั่วๆ (ใส่ Noise) กลายเป็นแบงค์ปลอม แล้วส่งให้คนตรวจ โดยมีแบงค์จริงติดไปด้วย
คนตรวจ (Discriminator) คัดแยกแบงค์ปลอมแบงค์จริง แล้วส่งกลับไปบอกคนหลอกว่า “เหอะ แค่นี้ยังไม่พอหลอกไปฝึกมาใหม่ไอ้น้อง”
คนหลอกได้รับข้อความจึงโมโหแล้วก็ใส่สีมั่วๆต่อไป จนคนตรวจเริ่มสับสนว่าอันไหนคือแบงค์จริงแบงค์ปลอมกันแน่ เกมเป็นอันจบ เห็นมั้ยครับ หลักการง่ายนิดเดียว
สามารถเข้าไปศึกษาเพิ่มเติมได้ใน paper หลักนี้นะครับ
ต่อไปเราจะมาลอง code ฉบับ Lazy-Dev กันดูนะครับ
อย่ารอช้าครับโหลด project มาเลย
git clone https://github.com/xhujoy/CycleGAN-tensorflow
cd CycleGAN-tensorflow
ผมใช้ python 3.6 ใครใช้ Window หรือ Mac ก็ลง python ก่อนนะครับ
แล้ว install requirements ตามนี้เลยนะครับ
pip install -r requirements.txt
แต่เนื่องจาก github ตัวนี้ใช้ tensorflow 1.1
เราจึงต้อง install tensorflow 1.1
pip install tensorflow==1.10.0rc1
หลังจากนั้น download dataset สำหรับการ train มาเลยครับ
bash ./download_dataset.sh horse2zebra
จะได้ folder datasets ออกมา A คือ ม้า และ B คือ ม้าลาย นะครับ
เพื่อความรวดเร็วเราจะไม่พา train นะครับ มีคน train มาให้แล้ว โหลดเลย
สร้าง folder ชื่อ checkpoint
mkdir checkpoint
แล้วแตกไฟล์ที่โหลดมาดังรูป
ลองทดสอบรันดูได้เลยครับ
python main.py --dataset_dir=horse2zebra --phase=test --which_direction=AtoB
ก็จะเห็นม้าลายวิ่งกันออกมาเต็มเลยครับผม
สรุป
ตอนนี้หลายๆบริษัทก็ได้นำ GAN ไปใช้ในการ generate รูปต่างๆ ส่วนใหญ่จะเป็นด้านศิลปะ ภาพวาด abstract บางคนเอาไปทำ Logo ก็มี ก็นับว่าเป็นประโยชน์ต่อประเทศชาติอย่างมาก ต้องขอขอบคุณ Ian Goodfellow ที่ช่วยสร้างอัลกอริทึมดีๆให้เราได้ใช้กัน
เรื่องขำๆ เขาว่ากันว่า คนนี้ไปกินเหล้ากับเพื่อนและเสนอแนวคิดนี้ไปให้เพื่อนฟัง ทำให้ทะเลาะกัน จากนั้นกลับมาเขียนโค้ด รันทิ้งไว้ข้ามคืน ตื่นขึ้นมา ปรากฎว่าใช้ได้เฉยเลย 55555