***** NOVO: Stargan V2 está disponível em https://github.com/clovaai/stargan-v2 *****

Este repositório fornece a implementação oficial do Pytorch do seguinte artigo:
Stargan: redes adversárias generativas unificadas para tradução para imagens para imagens de vários domínios
Yunjey Choi 1,2 , Minje Choi 1,2 , Munyoung Kim 2,3 , Jung-Woo Ha 2 , Sung Kim 2,4 , Jaegult Choo 1,2
1 Universidade da Coréia, 2 Clova AI Research, Naver Corp.
3 A Faculdade de Nova Jersey, 4 Universidade de Ciência e Tecnologia de Hong Kong
https://arxiv.org/abs/1711.09020Resumo: Estudos recentes mostraram um sucesso notável na tradução de imagem a imagem para dois domínios. No entanto, as abordagens existentes têm escalabilidade e robustez limitadas em lidar com mais de dois domínios, pois diferentes modelos devem ser construídos independentemente para cada par de domínios de imagem. Para abordar essa limitação, propomos Stargan, uma abordagem nova e escalável que pode executar traduções de imagem a imagem para vários domínios usando apenas um único modelo. Uma arquitetura de modelo tão unificada do Stargan permite treinamento simultâneo de vários conjuntos de dados com diferentes domínios em uma única rede. Isso leva à qualidade superior das imagens traduzidas da Stargan em comparação com os modelos existentes, bem como a nova capacidade de traduzir de forma flexível uma imagem de entrada em qualquer domínio de destino desejado. Demonstramos empiricamente a eficácia de nossa abordagem em uma transferência de atributos faciais e tarefas de síntese de expressão facial.
Para baixar o conjunto de dados Celeba:
git clone https://github.com/yunjey/StarGAN.git
cd StarGAN/
bash download.sh celebaPara baixar o conjunto de dados RAFD, você deve solicitar acesso ao conjunto de dados no site do Radboud Faces Database. Em seguida, você precisa criar uma estrutura de pastas conforme descrito aqui.
Para treinar Stargan no Celeba, execute o roteiro de treinamento abaixo. Veja aqui uma lista de atributos selecionáveis no conjunto de dados Celeba. Se você alterar o argumento selected_attrs , também deverá alterar o argumento c_dim de acordo.
# Train StarGAN using the CelebA dataset
python main.py --mode train --dataset CelebA --image_size 128 --c_dim 5
--sample_dir stargan_celeba/samples --log_dir stargan_celeba/logs
--model_save_dir stargan_celeba/models --result_dir stargan_celeba/results
--selected_attrs Black_Hair Blond_Hair Brown_Hair Male Young
# Test StarGAN using the CelebA dataset
python main.py --mode test --dataset CelebA --image_size 128 --c_dim 5
--sample_dir stargan_celeba/samples --log_dir stargan_celeba/logs
--model_save_dir stargan_celeba/models --result_dir stargan_celeba/results
--selected_attrs Black_Hair Blond_Hair Brown_Hair Male YoungPara treinar Stargan no RAFD:
# Train StarGAN using the RaFD dataset
python main.py --mode train --dataset RaFD --image_size 128
--c_dim 8 --rafd_image_dir data/RaFD/train
--sample_dir stargan_rafd/samples --log_dir stargan_rafd/logs
--model_save_dir stargan_rafd/models --result_dir stargan_rafd/results
# Test StarGAN using the RaFD dataset
python main.py --mode test --dataset RaFD --image_size 128
--c_dim 8 --rafd_image_dir data/RaFD/test
--sample_dir stargan_rafd/samples --log_dir stargan_rafd/logs
--model_save_dir stargan_rafd/models --result_dir stargan_rafd/resultsPara treinar Stargan em Celeba e Rafd:
# Train StarGAN using both CelebA and RaFD datasets
python main.py --mode=train --dataset Both --image_size 256 --c_dim 5 --c2_dim 8
--sample_dir stargan_both/samples --log_dir stargan_both/logs
--model_save_dir stargan_both/models --result_dir stargan_both/results
# Test StarGAN using both CelebA and RaFD datasets
python main.py --mode test --dataset Both --image_size 256 --c_dim 5 --c2_dim 8
--sample_dir stargan_both/samples --log_dir stargan_both/logs
--model_save_dir stargan_both/models --result_dir stargan_both/resultsPara treinar Stargan no seu próprio conjunto de dados, crie uma estrutura de pastas no mesmo formato que o RAFD e execute o comando:
# Train StarGAN on custom datasets
python main.py --mode train --dataset RaFD --rafd_crop_size CROP_SIZE --image_size IMG_SIZE
--c_dim LABEL_DIM --rafd_image_dir TRAIN_IMG_DIR
--sample_dir stargan_custom/samples --log_dir stargan_custom/logs
--model_save_dir stargan_custom/models --result_dir stargan_custom/results
# Test StarGAN on custom datasets
python main.py --mode test --dataset RaFD --rafd_crop_size CROP_SIZE --image_size IMG_SIZE
--c_dim LABEL_DIM --rafd_image_dir TEST_IMG_DIR
--sample_dir stargan_custom/samples --log_dir stargan_custom/logs
--model_save_dir stargan_custom/models --result_dir stargan_custom/results Para baixar um ponto de verificação do modelo pré-treinado, execute o script abaixo. O ponto de verificação do modelo pré-treinado será baixado e salvo no diretório ./stargan_celeba_128/models .
$ bash download.sh pretrained-celeba-128x128 Para traduzir imagens usando o modelo pré-treinado, execute o script de avaliação abaixo. As imagens traduzidas serão salvas em ./stargan_celeba_128/results diretório.
$ python main.py --mode test --dataset CelebA --image_size 128 --c_dim 5
--selected_attrs Black_Hair Blond_Hair Brown_Hair Male Young
--model_save_dir= ' stargan_celeba_128/models '
--result_dir= ' stargan_celeba_128/results ' Se você achar este trabalho útil para sua pesquisa, cite nosso artigo:
@inproceedings{choi2018stargan,
author={Yunjey Choi and Minje Choi and Munyoung Kim and Jung-Woo Ha and Sunghun Kim and Jaegul Choo},
title={StarGAN: Unified Generative Adversarial Networks for Multi-Domain Image-to-Image Translation},
booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition},
year={2018}
}
Este trabalho foi feito principalmente enquanto o primeiro autor fez um estágio de pesquisa na Clova AI Research, Naver. Agradecemos a todos os pesquisadores da Naver, especialmente Donghyun Kwak, por discussões perspicazes.