Get in touch
or send us a question?
CONTACT

AI GAN Model: Biến mọi thứ thành Anime

Chào tất cả mọi người, mình xin giới thiệu cách biến đổi cảnh vật xung quanh vào thế giới anime sống động bằng model GAN.

Từ quang cảnh đời thường:

Biến đổi thành anime mộng mơ:

I. GAN Model là gì?

GAN , là viết tắt của Generative Adversarial Networks, là một cách tiếp cận trong các mô hình generative (Generative Model) sử dụng các phương thức học sâu (Deep Learning).

Trong đó, generative model là một phương pháp học unspervised learning, mà liên quan đến viêc tự động phát hiện và học các quy luật hoặc mẫu trong dữ liệu đầu vào và dựa vào đó để tạo ra các ví dụ mới từ tập dữ liệu ban đầu.

Thông thường, khi nhắc đến AI, người thường nhắc đến các ứng dụng nhận diện thông tin, phân loại vật thể, … Đó là các Discriminative Model. Khi trải qua quá trình huấn luyện, model sẽ đạt được khả năng định vị được vị trí của 1 điểm dữ liệu đầu vào.

Nó giống như những đứa trẻ. Đứa trẻ được cho nhìn khoảng 500 ảnh con mèo và 500 ảnh con chó, chính là dữ liệu đầu vào. Qua quá trình học hỏi và quan sát, đứa bé sẽ nhận biết được đặc điểm và khi đưa cho 1 tấm ảnh thì có thể phân biệt được đó là động vật gì.

Vậy so với Discriminative Model, Generative Model không chỉ phân biệt các điểm dữ liệu còn tự sinh ra dữ liệu tương tự với các điểm dữ liệu đã được học. Cơ chế của nó sẽ được đề cập ở phần tiếp theo.

II. Cấu trúc của GAN model

Dưới đây là cấu trúc cơ bản của model GAN:

GAN model bao gồm 2 model nhỏ là generator và discriminator.

Có thể giải thích đơn giản như sau: Discriminator có thể coi là cảnh sát, Generator là tội phạm.

Discriminator sẽ cố gắng tạo ra tiền giả từ input. Generator sẽ học cách phân biệt tiền giả từ output image của Discriminator và Training samples. Generator cố gắng phân biệt tiền thật, tiền giả và có feed back lại. Discriminator sẽ dựa vào feedback của cảnh sát để cải thiện khả năng tạo tiền giả khiến Generator phân biệt nhầm.

Kiến trúc GAN phổ biến là DCGAN – Deep Convolution GAN: cả Generator và Discriminator là các mạng Convolution nhiều lớp như dưới đây:

III. Huấn luyện GAN model

Discriminator dựa vào ảnh được sinh ngẫu nhiên từ Generator là x, tạo ra D(x) thể hiện khả năng x là tiền thật. Mục tiêu của ta là tối đa hóa khả năng nhận ảnh tiền thật là tiền thật, và ảnh tiền giả là tiền giả. Chúng ta sử dụng hàm loss cross-entropy: plog(q).

Đối với generator, mục tiêu là để model có thể tạo ra ảnh với D(x) có xác suất cao nhất để lừa discriminator.

Tổng quát hàm loss:

IV. Áp dụng tạo ảnh Anime

Dựa vào cấu trúc model GAN, áp dụng vào bài toán sinh ảnh Anime.

  • Real Image: sử dụng ảnh thường
  • z input: sử dụng ảnh anime
  • source code tham khảo: https://github.com/TachibanaYoshino/AnimeGAN

Output:

Chúc mọi người thử nghiệm thành công !

Các nguồn tham khảo:

  • https://jonathan-hui.medium.com/gan-whats-generative-adversarial-networks-and-its-application-f39ed278ef09
  • https://github.com/TachibanaYoshino/AnimeGAN