Implementacion en PyTorch de Unpaired Image-to-Image Translation.
Este codigo fue escrito por Jun-Yan Zhu y Taesung Park, y con ayuda de Tongzhou Wang.
Esta implementacion de PyTorch produce resultados comparables o mejores que nuestros original software de Torch. Si te gustaria producir los mismos resultados que en documento oficial, echa un vistazo al codigo original CycleGAN Torch y pix2pix Torch
Aviso: El software actual funciona correctamente en PyTorch 0.41+. Para soporte en PyTorch 0.1-0.3: branch.
Puede encontrar información útil en training/test tips y preguntas frecuentes. Para implementar modelos y conjuntos de datos personalizados, consulte nuestro templates. Para ayudar a los usuarios a comprender y adaptar mejor nuestra base de código, proporcionamos un overview de la estructura de código de este repositorio.
CycleGAN: Proyecto | PDF | Torch | Guia de Tensorflow Core | PyTorch Colab
Pix2pix: Proyeto | PDF | Torch | Guia de Tensorflow Core | PyTorch Colab
EdgesCats Demo | pix2pix-tensorflow | por Christopher Hesse
Si usa este código para su investigación, cite:
Unpaired Image-to-Image Translation usando Cycle-Consistent Adversarial Networks.
Jun-Yan Zhu*, Taesung Park*, Phillip Isola, Alexei A. Efros. In ICCV 2017. (* contribucion igualitaria) [Bibtex]
Image-to-Image Translation usando Conditional Adversarial Networks.
Phillip Isola, Jun-Yan Zhu, Tinghui Zhou, Alexei A. Efros. In CVPR 2017. [Bibtex]
Presentacion en PowerPoint de Pix2pix: keynote | pdf, Presentacion en PowerPoint de CycleGAN: pptx | pdf
Asignación del curso CycleGAN codigo y handout diseñado por el Prof. Roger Grosse for CSC321 "Intro to Neural Networks and Machine Learning" en la universidad de Toronto. Póngase en contacto con el instructor si desea adoptarlo en su curso.
TensorFlow Core CycleGAN Tutorial: Google Colab | Codigo
Guia de TensorFlow Core pix2pix : Google Colab | Codigo
PyTorch Colab notebook: CycleGAN y pix2pix
[Tensorflow] (por Harry Yang), [Tensorflow] (por Archit Rathore), [Tensorflow] (por Van Huy), [Tensorflow] (por Xiaowei Hu), [Tensorflow-simple] (por Zhenliang He), [TensorLayer] (por luoxier), [Chainer] (por Yanghua Jin), [Minimal PyTorch] (por yunjey), [Mxnet] (por Ldpe2G), [lasagne/Keras] (por tjwei), [Keras] (por Simon Karlsson)
[Tensorflow] (por Christopher Hesse), [Tensorflow] (por Eyyüb Sariu), [Tensorflow (face2face)] (por Dat Tran), [Tensorflow (film)] (por Arthur Juliani), [Tensorflow (zi2zi)] (por Yuchen Tian), [Chainer] (por mattya), [tf/torch/keras/lasagne] (por tjwei), [Pytorch] (por taey16)
- Linux o macOS
- Python 3
- CPU o NVIDIA GPU usando CUDA CuDNN
- Clone este repositorio:
git clone https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix
cd pytorch-CycleGAN-and-pix2pix
- Instale PyTorch 0.4+ y sus otras dependencias (e.g., torchvision, visdom y dominate).
- Para uso de pip, por favor escriba el comando
pip install -r requirements.txt
. - Para uso de Conda, proporcionamos un script de instalación
./scripts/conda_deps.sh
. De forma alterna, puede crear un nuevo entorno Conda usandoconda env create -f environment.yml
. - Para uso de Docker, Proporcionamos la imagen Docker y el archivo Docker preconstruidos. Por favor, consulte nuestra página Docker.
- Para uso de pip, por favor escriba el comando
- Descargar el dataset de CycleGAN (e.g. maps):
bash ./datasets/download_cyclegan_dataset.sh maps
- Para ver los resultados del entrenamiento y las gráficas de pérdidas,
python -m visdom.server
y haga clic en la URL http://localhost:8097. - Entrenar el modelo:
#!./scripts/train_cyclegan.sh
python train.py --dataroot ./datasets/maps --name maps_cyclegan --model cycle_gan
Para ver más resultados intermedios, consulte ./checkpoints/maps_cyclegan/web/index.html
.
- Pruebe el modelo:
#!./scripts/test_cyclegan.sh
python test.py --dataroot ./datasets/maps --name maps_cyclegan --model cycle_gan
-Los resultados de la prueba se guardarán en un archivo html aquí: ./results/maps_cyclegan/latest_test/index.html
.
- Descargue el dataset de pix2pix (e.g.facades):
bash ./datasets/download_pix2pix_dataset.sh facades
- Para ver los resultados del entrenamiento y las gráficas de pérdidas
python -m visdom.server
, haga clic en la URL http://localhost:8097. - Para entrenar el modelo:
#!./scripts/train_pix2pix.sh
python train.py --dataroot ./datasets/facades --name facades_pix2pix --model pix2pix --direction BtoA
Para ver más resultados intermedios, consulte ./checkpoints/facades_pix2pix/web/index.html
.
- Pruebe el modelo (
bash ./scripts/test_pix2pix.sh
):
#!./scripts/test_pix2pix.sh
python test.py --dataroot ./datasets/facades --name facades_pix2pix --model pix2pix --direction BtoA
- Los resultados de la prueba se guardarán en un archivo html aquí:
./results/facades_pix2pix/test_latest/index.html
. Puede encontrar más scripts enscripts
directory. - Para entrenar y probar modelos de colorización basados en pix2pix, agregue la linea
--model colorization
y--dataset_mode colorization
. Para más detalles de nuestro entrenamiento tips.
- Puedes descargar un modelo previamente entrenado (e.g. horse2zebra) con el siguiente script:
bash ./scripts/download_cyclegan_model.sh horse2zebra
-
El modelo pre-entrenado se guarda en
./checkpoints/{name}_pretrained/latest_net_G.pth
. Revise aqui para todos los modelos CycleGAN disponibles. -
Para probar el modelo, también debe descargar el dataset horse2zebra:
bash ./datasets/download_cyclegan_dataset.sh horse2zebra
- Luego genere los resultados usando:
python test.py --dataroot datasets/horse2zebra/testA --name horse2zebra_pretrained --model test --no_dropout
-
La opcion
--model test
ise usa para generar resultados de CycleGAN de un solo lado. Esta opción configurará automáticamente--dataset_mode single
, carga solo las imágenes de un conjunto. Por el contrario, el uso de--model cycle_gan
requiere cargar y generar resultados en ambas direcciones, lo que a veces es innecesario. Los resultados se guardarán en./results/
. Use--results_dir {directory_path_to_save_result}
para especificar el directorio de resultados. -
Para sus propios experimentos, es posible que desee especificar
--netG
,--norm
,--no_dropout
para que coincida con la arquitectura del generador del modelo entrenado.
Descargue un modelo pre-entrenado con ./scripts/download_pix2pix_model.sh
.
- Revise aqui para todos los modelos pix2pix disponibles. Por ejemplo, si desea descargar el modelo label2photo en el dataset:
bash ./scripts/download_pix2pix_model.sh facades_label2photo
- Descarga el dataset facades de pix2pix:
bash ./datasets/download_pix2pix_dataset.sh facades
- Luego genere los resultados usando:
python test.py --dataroot ./datasets/facades/ --direction BtoA --model pix2pix --name facades_label2photo_pretrained
-
Tenga en cuenta que
--direction BtoA
como Facades dataset's, son direcciones A o B para etiquetado de fotos. -
Si desea aplicar un modelo previamente entrenado a una colección de imágenes de entrada (en lugar de pares de imágenes), use la opcion
--model test
. Vea./scripts/test_single.sh
obre cómo aplicar un modelo a Facade label maps (almacenados en el directoriofacades/testB
). -
Vea una lista de los modelos disponibles actualmente en
./scripts/download_pix2pix_model.sh
Proporcionamos la imagen Docker y el archivo Docker preconstruidos que pueden ejecutar este repositorio de código. Ver docker.
Descargue los conjuntos de datos pix2pix / CycleGAN y cree sus propios conjuntos de datos.
Las mejores prácticas para entrenar y probar sus modelos.
Antes de publicar una nueva pregunta, primero mire las preguntas y respuestas anteriores y los problemas existentes de GitHub.
Si planea implementar modelos y conjuntos de datos personalizados para sus nuevas aplicaciones, proporcionamos un conjunto de datos template y un modelo template como punto de partida.
Para ayudar a los usuarios a comprender mejor y usar nuestro código, presentamos brevemente la funcionalidad e implementación de cada paquete y cada módulo.
Siempre puede contribuir a este repositorio enviando un pull request.
Por favor ejecute flake8 --ignore E501 .
y python ./scripts/test_before_push.py
antes de realizar un Pull en el código, asegure de también actualizar la estructura del código overview en consecuencia si agrega o elimina archivos.
Si utiliza este código para su investigación, cite nuestros documentos.
@inproceedings{CycleGAN2017,
title={Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networkss},
author={Zhu, Jun-Yan and Park, Taesung and Isola, Phillip and Efros, Alexei A},
booktitle={Computer Vision (ICCV), 2017 IEEE International Conference on},
year={2017}
}
@inproceedings{isola2017image,
title={Image-to-Image Translation with Conditional Adversarial Networks},
author={Isola, Phillip and Zhu, Jun-Yan and Zhou, Tinghui and Efros, Alexei A},
booktitle={Computer Vision and Pattern Recognition (CVPR), 2017 IEEE Conference on},
year={2017}
}
CycleGAN-Torch |
pix2pix-Torch | pix2pixHD|
BicycleGAN | vid2vid | SPADE/GauGAN
iGAN | GAN Dissection | GAN Paint
Si amas a los gatos y te encanta leer gráficos geniales, computer vision y documentos de aprendizaje, echa un vistazo a Cat Paper Collection.
Nuestro código fue inspirado en pytorch-DCGAN.