เปลี่ยนม้าเป็นม้าลายทำได้ง่ายๆเลยเหรอ?? GAN (Generative Adversarial Network)

Adulwit Chinapas
imageanalyst
Published in
2 min readJan 28, 2019

สวัสดีครับทุกวันนี้อะไรๆก็ดูง่ายไปหมด เหมือนดังรูปด้านล่างนี้ครับ

https://github.com/xhujoy/CycleGAN-tensorflow

หลายคนอาจจะคิดว่า photoshop เอาหรือป่าว

คำตอบ คือ ป่าวเลยครับมันมาจาก GAN ล้วนๆ

ขอพูดแบบย่อๆก่อนเลยละกันนะครับว่า GAN คืออะไร

GAN (Generative Adversarial Network) คือ AI ที่เราจะให้มันเรียนรู้จาก Game 2 Player ซึ่งประกอบไปด้วย

  1. คนหลอก (Generator)
  2. คนตรวจ (Discriminator)

สมมุติเรากำลังเล่นเกมปลอมแบงค์กัน มอบหมายหน้าที่ให้

คนหลอก = หาวิธีทำให้แบงค์เหมือนจริงมากที่สุด

คนตรวจ = คัดแยกแบงค์ปลอมกับแบงค์จริงให้ได้

แล้วเกมมันจะจบยังไง แน่นอนครับเราต้องการให้ คนหลอก เก่งจนสามารถปลอมแบงค์ได้เหมือนจริงมากที่สุดและสามารถหลอกคนตรวจได้ หลังจากนั้นก็นำ “คนหลอก” ไปใช้งานในทางอื่นๆแล้วก็รวยกันทั้งประเทศ 55555

คำถามคือ คนหลอก จะเก่งขึ้นได้ยังไง

หลักการไม่ยากเลยครับให้มันสู้กันเดี๋ยวมันก็เก่งเอง 5555 ตามภาพด้านล่าง

https://www.kdnuggets.com/2017/01/generative-adversarial-networks-hot-topic-machine-learning.html

จากภาพ อธิบายประมาณว่า

แบงค์จริง คือ 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

--

--

Adulwit Chinapas
imageanalyst

Adul.dev I’m a Ph.D. student. My major project about Machine Learning (Python), Web (Vue), Android (JAVA), iOS (Objective-C), C#, Firebase, MySQL, PHP, Docker.