Giới thiệu series GAN (Generative Adversarial Networks)
Ý tưởng và mục đích
Sau sự thành công của series Deep Learning cơ bản cũng như sách Deep Learning cơ bản, mình tiếp tục muốn giới thiệu tới bạn đọc series về GAN, một nhánh nhỏ trong Deep Learning nhưng đang rất phát triển. Nó như một hướng đi tiếp theo cho những ai đã theo hết series Deep Learning cơ bản.
Mô hình GAN được giới thiệu bởi Ian J. Goodfellow vào năm 2014 và đã đạt được rất nhiều thành công lớn trong Deep Learning nói riêng và AI nói chung. Yann LeCun, VP and Chief AI Scientist, Facebook, từng mô tả về GAN: “The most interesting idea in the last 10 years in Machine Learning”. Để mọi người thấy được các ứng dụng của GAN, phần dưới mình sẽ trình bày một vài ứng dụng điển hình của GAN.
Mình không thích phong cách mì ăn liền nên ở mỗi bài mình sẽ bám theo paper giải thích đủ toán cho mọi người một cách đơn giản và dễ hiểu nhất có thể. Bên cạnh đó sau mỗi bài mình sẽ hướng dẫn đọc code, là luôn có ứng dụng thực tế đi kèm. Series Deep Learning cơ bản giống như cung cấp nền tảng về Deep Learning cho mọi người, còn series này muốn giúp mọi người làm quen với việc đọc paper, đọc code trên github và chạy với custom dataset.
Qua đó hy vọng mọi người dễ tiếp cận hơn với việc nghiên cứu trong môi trường học thuật cũng như đi làm ở công ty về lĩnh vực Machine Learning hay Deep Learning.
Nội dung của loạt bài viết
- Bài 1: Giới thiệu về GAN
- Bài 2: Deep Convolutional Generative Adversarial Network (DCGAN)
- Bài 3: Conditional GAN (cGAN)
- Bài 4: Least Squares Generative Adversarial Networks (LSGAN)
- Bài 5: GAN evaluation
- Bài 6: Image to image translation
- Bài 7: Pix2pix
- Bài 8: CycleGAN
- Bài 9: StarGAN
*Nội dung của series có thể bị thay đổi trong quá trình viết.
Yêu cầu
Vì đây series tiếp theo của loạt bài về Deep Learning cơ bản nên mọi người cần có kiến thức cơ bản về Deep Learning, hoặc đã theo hết các bài 1, 2, 3, 5, 6, 7, 10 từ series Deep Learning cơ bản (tất nhiên đã học hết cả series thì càng tốt).
Ứng dụng của GAN
Generate Photographs of Human Faces
Ví dụ về ảnh mặt người do GAN sinh ra từ 2014 đến 2017. Mọi người có thể thấy chất lượng ảnh sinh ra tốt lên đáng kể theo thời gian.
Hình dưới là ảnh sinh ra bởi GAN năm 2018, phải để ý rất chi tiết thì mới có thể phân biệt được ảnh mặt đấy là sinh ra hay ảnh thật.
Image editing
Chắc mọi người vẫn nhớ tới FaceApp làm mưa làm gió trong thời gian vừa qua. Nó là một ứng dụng của GAN để sửa các thuộc tính vào khuôn mặt như màu tóc, da, giới tính, cảm xúc hay độ tuổi.
Generate Anime characters
Việc thuê các họa sĩ thiết kế các nhân vật anime rất đắt đỏ thế nên GAN được sử dụng để tự động sinh ra các nhân vật anime.
Generate Realistic Photographs
Năm 2018, Andrew Brock cho ra paper “Large Scale GAN Training for High Fidelity Natural Image Synthesis” với BigGAN có khả năng sinh ra các ảnh tự nhiên rất khó phân biệt với ảnh chụp thường.
Image-to-Image Translation
Ví dụ điển hình của mô hình Image to image translation là Pix2pix. Input là 1 ảnh và output là 1 ảnh tương ứng, ví dụ input là ảnh không màu, output là ảnh màu. Mọi người có thể vào đây thử, input là bản phác (draft) con mèo, output là ảnh con mèo hay input là các khối block, output là ảnh ngôi nhà.
Unsupervised Image-to-image translation
Bài toán trên (Image-to-image translation) là supervised tức là ta có các dữ liệu thành cặp (input, output) như bản phác thảo của cái cặp và ảnh màu của nó. Tuy nhiên khi muốn chuyển dữ liệu từ domain này sang domain khác (từ ngựa thường sang ngựa vằn) thì ta không có sẵn các cặp dữ liệu để train đó gọi là bài toán unsupervised.
Super-resolution
GAN có thể dùng để tăng chất lượng của ảnh từ độ phân giải thấp lên độ phân giải cao với kết quả rất tốt.
Text to image
GAN có thể học sinh ra ảnh với input là một câu.
Generate new human pose
Với ảnh người đứng và dáng đứng mới, GAN có thể sinh ra người với dáng đứng mới.
Music generation
Ngoài các ứng dụng với ảnh, GAN có thể áp dụng để sinh ra những bản nhạc.