python3 / Implementation of Google Brain's BEGAN in Tensorflow
Switch branches/tags
Nothing to show
Clone or download
Heumi
Latest commit 7e1530a Jun 7, 2017
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Data/celeba upgrade to python3.5 and debug minor erros May 28, 2017
Result Add files via upload Apr 13, 2017
src Delete op_base.cpython-35.pyc Jun 7, 2017
README.md Update README.md May 28, 2017
began_cmd.txt glob -> glob.glob May 28, 2017
main.py upgrade to python3.5 and debug minor erros May 28, 2017

README.md

BEGAN: Boundary Equilibrium Generative Adversarial Networks

Implementation of Google Brain's BEGAN: Boundary Equilibrium Generative Adversarial Networks in Tensorflow.
BEGAN is the state of the art when it comes to generate realistic faces.

Figure1a. 128x128 img and 64x64 img. 128x128 img is very impressive. You can see SET OF TEETH

Figure1b. This is random result from my train model. From gamma 0.3 to 0.5. No cherry picking. gamma 0.3, nice but bias to women's face. gamma 0.4, Best. gamma 0.5, good texture but hole problem.

Figure1c. From scratch to 200k iter

Implementation detail

This train model is 64x64. 128x128 will be update. Different with original paper is train loss update method, learning rate decay. First, paper's loss update way is Loss_G and Loss_D simultaneously. But when I tried that way, models are mode collapse. So, This code use altenative way. Second, learning rate decay is 0.95 every 2000 iter. This parameter is just train experienc. You can change or see the paper.

Train progress

If you want to see the train progress download this dropbox folder and run "tensorboard --logdir='./'". I uploaded two trained model(64x64 and 128x128)

Figure2. Kt graph. When you train model, reference this result. It doesn't reach to 1.0. In my case, it's converge to 0.08

Figure3. Convergence measure(M_global). Similar with paper's graph

Figure4. Compare with Generator output and Decoder output.

Usage

Recommend to download trained model this dropbox folder.

Make Train Data

  1. Download celebA dataset (img_align_celeba.zip) and unzip to 'Data/celeba/raw'
  2. Run ' python ./Data/celeba/face_detect.py '

Train (refer the main.py began_cmd)

ex) 64x64 img | Nz,Nh 128 | gamma 0.4
python3 main.py -f 1 -p "began" -trd "celeba" -tro "crop" -trs 64  -z 128 -em 128 -fn 64  -b 16 -lr 1e-4 -gm 0.4 -g "0"

ex) 128x128 img | Nz,Nh 64 | gamma 0.7
python3 main.py -f 1 -p "began" -trd "celeba" -tro "crop" -trs 128 -z 64  -em 64  -fn 128 -b 16 -lr 1e-4 -gm 0.7 -g "0"

Test (refer the main.py and began_cmd)

ex) 64x64 img | Nz,Nh 128 | gamma 0.4
python3 main.py -f 0 -p "began" -trd "celeba" -tro "crop" -trs 64  -z 128 -em 128 -fn 64  -b 16 -lr 1e-4 -gm 0.4 -g "0"

ex) 128x128 img | Nz,Nh 64 | gamma 0.7
python3 main.py -f 0 -p "began" -trd "celeba" -tro "crop" -trs 128 -z 64  -em 64  -fn 128 -b 16 -lr 1e-4 -gm 0.7 -g "0"

Requirements

  • Python 3.5, scipy 0.18.1, numpy 1.11.2
  • TensorFlow 1.1.0

Author

Heumi / ckhfight@gmail.com