[Model Description](#Model Description)
[Mixed Precision](#Mixed Precision)
[Environment Requirements](#Environment Requirements)
[Script Description](#Script Description)
[Model Train](#Model Train)
[Model Eval](#Model Eval)
[Model Infer](#Model Infer)
[Model Export](#Model Export)
[Run Infer](#Run Infer)
[Model Description](#Model Description)
[Description of Random Situation](#Description of Random Situation)
[Model_Zoo Homepage](#Model_Zoo Homepage)
The generative adversarial network consists of a generator G and a discriminator D. The function of the former is to generate realistic random samples based on random noise data, and the function of the latter is to identify whether the samples are real or generated by the generator. The feat of BigGAN is achieved through large batches, large parameters, "truncation trick" and large-scale GAN training stability control.
ImageNet2012 Dataset
- Dataset size: 224*224 colorful images in 1000 classes Train:1,281,167 images Test: 50,000 images
- Data format:jpeg Note: Data will be processed in src/dataset.py
The mixed precision training method accelerates the deep learning neural network training process by using both the single-precision and half-precision data formats, and maintains the network precision achieved by the single-precision training at the same time. Mixed precision training can accelerate the computation process, reduce memory usage, and enable a larger model or batch size to be trained on specific hardware. For FP16 operators, if the input data type is FP32, the backend of MindSpore will automatically handle it with reduced precision. Users could check the reduced-precision operators by enabling INFO log and then searching ‘reduce precision’.
-
Hardware(Ascend/GPU/CPU)
Prepare hardware environment with Ascend/GPU/CPU processor.
-
Framework
-
For more information, please check the resources below:
├── model_zoo
├── README.md #readme file
├── biggan
├── ascend310_infer #for ascend310 model infer
│ ├── build.sh #for env build
│ ├── CMakeLists.txt
│ ├── inc
│ │ └── utils.h #necessary header file
│ └── src
│ ├── main.cc #model infer main .c
│ └── utils.cc
├── export.py #for model infer export mindir
├── model
│ ├── BigGAN.py #model def file
│ ├── __init__.py
│ ├── layers.py #model layer file
│ └── losses.py #model loss def file
├── postprocess.py #for model infer postprocess
├── preprocess.py #for model infer preprocess
├── scripts
│ ├── run_infer_310.sh #model infer script
│ ├── train_1p.sh #model train 1p shell script
│ ├── train_8p.sh #model train 8p shell script
├── src
│ ├── calculate_inception_moments.py #for model train measurable cal
│ ├── datasets.py #for model dataset
│ ├── inception_utils.py #model necessary file
│ ├── inception_v3.py #inception_v3 def file
│ ├── __init__.py
│ └── utils.py #model utils file
└── train.py #model train file
1、training model on 1 device
bash ./scripts/run_standalone_train_ascend.sh 'DEVICE_ID' 'DATASET_PATH'
exp: bash ./scripts/run_standalone_train_ascend.sh '0' '/dataset/imagenet'
2、training model on multi device
bash ./scripts/run_distribute_train_ascend.sh 'DATASET_PATH'
exp:bash ./scripts/run_distribute_train_ascend.sh '/dataset/imagenet'
Note:hccl.json which is specified by RANK_TABLE_FILE is needed when you are running a distribute task. You can generate it by using the [hccl_tools](Note:hccl.json which is specified by RANK_TABLE_FILE is needed when you are running a distribute task. You can generate it by using the hccl_tools.).
bash ./scripts/run_eval.sh 'INPUT_PATH' 'OUTPUT_PATH' 'USED_CKPT' DEVICE_ID
exp: bash ./scripts/run_eval.sh 'test.jpg' './save_img' './G.ckpt' 0
trans .ckpt to .mindir
python export.py --use_device 0 --ckpt_pth 'CKPT_PATH'
exp:python export.py --use_device 0 --ckpt_pth './weights/biggan.ckpt'
bash ./scripts/run_infer_310.sh 'MINDIR_PATH' 'DATA_PATH'
exp:bash ./scripts/run_infer_310.sh 'biggan.mindir' '/imagenet/eval'
Parameters | Ascend | GPU |
---|---|---|
Model Version | BigGAN | BigGAN |
Resource | Ascend 910; CPU 2.60GHz, 192cores; Memory 755G; OS Euler2.8 | NV SMX2 V100-32G |
uploaded Date | 07/25/2022 (month/day/year) | 07/25/2022 (month/day/year) |
MindSpore Version | 1.6.0 | 1.6.0 |
Dataset | ImageNet | ImageNet |
Training Parameters | epoch=100, batch_size = 256, lr=0.01 | epoch=100, batch_size=256, lr=0.01 |
Optimizer | Adam | Adam |
Loss Function | Binary CrossEntropy Loss | Binary CrossEntropy Loss |
outputs | probability | probobility |
Loss | G:0.22/D:0.98 | G:0.23/D:1.01 |
Speed | 1pc: 30 s/iter; 8pcs: 42 s/iter | 1pc: 35 s/iter; 8pcs: 50 s/iter |
Checkpoint for Fine tuning | 513.5M (.ckpt file) | 513.5M (.ckpt file) |
Model for inference | 513M(.mindir file) | / |
In config file, we set the seed ,We also use random seed in train.py.
Please check the official homepage.