Giter VIP home page Giter VIP logo

anime-generation's Introduction

ACGAN Conditional Anime Generation

Note: I have restructured the whole folder, cleaned up training code, pruned my dataset, and updated most of the results. You can see the old version of this repo in old.

Generate colorful anime characters using GAN.

Generating characters with different hair and eye colors

By interpolating generator input, we can see some interesting results.

By fixing color classes and varying noise, we can generate anime characters with same colors but different identity.

Generate characters with different artistic styles

I noticed that anime produced in different years have distinctive artistic styles. To name a few:

  • Characters in older anime tend to have larger, angular eyes, while newer anime have characters with round eyes.
  • Colors are brighter and more saturated in older anime, while newer anime have mild colors.

By conditioning the ACGAN on year labels, we can generate characters with different artistic styles.

Interpolating along the year latent code:

Start training

Modify config.yaml as you wish.

> python3 run.py

The dataset

The current dataset is a composition of 2 datasets:

  1. One dataset with eye and hair color labels (30k+ images)
  2. One dataset with year label, which is the year in which the anime is produced (60k+ images).

The dataset format is as follows:

- images/
    - XXXXX.jpg
    - ...
- labels.pkl
- eye_label.json
- year_label.json
- hair_label.json

After loading in labels.pkl with pickle, you will get a dictionary of { filname : labels }. The labels are formatted as (eye, hair, year) tuples.

{
    "32455": (8, 10, 5),
    ...
}

This means 32455.jpg has eye class 8, hair class 10, year class 5.

Missing labels will be a None. All images from dataset 1 will have year labels None, while all images from dataset 2 will have eye and hair label None.


Source code in the current repo is used to train on the first dataset. This requires some manual preprocessing (see dataset/anime_dataset.py) to extract the first dataset from the whole dataset.


The .json files map discrete labels to semantics.

// eye_label.json
{
    "aqua": 0, 
    "black": 1, 
    ...
}

Some notes

  • When training on the first dataset, adding some color transformations to images as a preprocessing step traning might help. You can achieve this through various torchvisions.transforms.functional methods.
  • Train with N(0, 1) but sample from Gaussian of smaller variance when evaluating. Just an engineering hack to get better results.

anime-generation's People

Contributors

bchao1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

anime-generation's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.