mmagic.models.editors.dcgan
¶
Package Contents¶
Classes¶
Implementation of `Unsupervised Representation Learning with Deep |
|
Discriminator for DCGAN. |
|
Generator for DCGAN. |
- class mmagic.models.editors.dcgan.DCGAN(generator: ModelType, discriminator: Optional[ModelType] = None, data_preprocessor: Optional[Union[dict, mmengine.Config]] = None, generator_steps: int = 1, discriminator_steps: int = 1, noise_size: Optional[int] = None, ema_config: Optional[Dict] = None, loss_config: Optional[Dict] = None)[source]¶
Bases:
mmagic.models.base_models.BaseGAN
Implementation of Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks.
- Paper link:
<https://arxiv.org/abs/1511.06434>`_ (DCGAN).
Detailed architecture can be found in
DCGANGenerator
# noqa andDCGANDiscriminator
# noqa- disc_loss(disc_pred_fake: torch.Tensor, disc_pred_real: torch.Tensor) Tuple [source]¶
Get disc loss. DCGAN use the vanilla gan loss to train the discriminator.
- Parameters
disc_pred_fake (Tensor) – Discriminator’s prediction of the fake images.
disc_pred_real (Tensor) – Discriminator’s prediction of the real images.
- Returns
Loss value and a dict of log variables.
- Return type
tuple[Tensor, dict]
- gen_loss(disc_pred_fake: torch.Tensor) Tuple [source]¶
Get gen loss. DCGAN use the vanilla gan loss to train the generator.
- Parameters
disc_pred_fake (Tensor) – Discriminator’s prediction of the fake images.
- Returns
Loss value and a dict of log variables.
- Return type
tuple[Tensor, dict]
- train_discriminator(inputs: dict, data_samples: mmagic.structures.DataSample, optimizer_wrapper: mmengine.optim.OptimWrapper) Dict[str, torch.Tensor] [source]¶
Train discriminator.
- Parameters
inputs (dict) – Inputs from dataloader.
data_samples (DataSample) – Data samples from dataloader.
optim_wrapper (OptimWrapper) – OptimWrapper instance used to update model parameters.
- Returns
A
dict
of tensor for logging.- Return type
Dict[str, Tensor]
- train_generator(inputs: dict, data_samples: mmagic.structures.DataSample, optimizer_wrapper: mmengine.optim.OptimWrapper) Dict[str, torch.Tensor] [source]¶
Train generator.
- Parameters
inputs (dict) – Inputs from dataloader.
data_samples (DataSample) – Data samples from dataloader. Do not used in generator’s training.
optim_wrapper (OptimWrapper) – OptimWrapper instance used to update model parameters.
- Returns
A
dict
of tensor for logging.- Return type
Dict[str, Tensor]
- class mmagic.models.editors.dcgan.DCGANDiscriminator(input_scale, output_scale, out_channels, in_channels=3, base_channels=128, default_norm_cfg=dict(type='BN'), default_act_cfg=dict(type='LeakyReLU'), out_act_cfg=None, init_cfg=None)[source]¶
Bases:
mmengine.model.BaseModule
Discriminator for DCGAN.
Implementation Details for DCGAN architecture:
Adopt convolution in the discriminator;
Use batchnorm in the discriminator except for the input and final output layer;
Use LeakyReLU in the discriminator in addition to the output layer.
- Parameters
input_scale (int) – The scale of the input image.
output_scale (int) – The final scale of the convolutional feature.
out_channels (int) – The channel number of the final output layer.
in_channels (int, optional) – The channel number of the input image. Defaults to 3.
base_channels (int, optional) – The basic channel number of the generator. The other layers contains channels based on this number. Defaults to 128.
default_norm_cfg (dict, optional) – Norm config for all of layers except for the final output layer. Defaults to
dict(type='BN')
.default_act_cfg (dict, optional) – Activation config for all of layers except for the final output layer. Defaults to
dict(type='ReLU')
.out_act_cfg (dict, optional) – Activation config for the final output layer. Defaults to
dict(type='Tanh')
.pretrained (str, optional) – Path for the pretrained model. Default to
None
.init_cfg (dict, optional) – Initialization config dict. Default: None.
- class mmagic.models.editors.dcgan.DCGANGenerator(output_scale, out_channels=3, base_channels=1024, input_scale=4, noise_size=100, default_norm_cfg=dict(type='BN'), default_act_cfg=dict(type='ReLU'), out_act_cfg=dict(type='Tanh'), init_cfg=None)[source]¶
Bases:
mmengine.model.BaseModule
Generator for DCGAN.
Implementation Details for DCGAN architecture:
Adopt transposed convolution in the generator;
Use batchnorm in the generator except for the final output layer;
Use ReLU in the generator in addition to the final output layer.
More details can be found in the original paper: Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks http://arxiv.org/abs/1511.06434
- Parameters
output_scale (int | tuple[int]) – Output scale for the generated image. If only a integer is provided, the output image will be a square shape. The tuple of two integers will set the height and width for the output image, respectively.
out_channels (int, optional) – The channel number of the output feature. Default to 3.
base_channels (int, optional) – The basic channel number of the generator. The other layers contains channels based on this number. Default to 1024.
input_scale (int | tuple[int], optional) – Output scale for the generated image. If only a integer is provided, the input feature ahead of the convolutional generator will be a square shape. The tuple of two integers will set the height and width for the input convolutional feature, respectively. Defaults to 4.
noise_size (int, optional) – Size of the input noise vector. Defaults to 100.
default_norm_cfg (dict, optional) – Norm config for all of layers except for the final output layer. Defaults to
dict(type='BN')
.default_act_cfg (dict, optional) – Activation config for all of layers except for the final output layer. Defaults to
dict(type='ReLU')
.out_act_cfg (dict, optional) – Activation config for the final output layer. Defaults to
dict(type='Tanh')
.init_cfg (dict, optional) – Initialization config dict. Default: None.
- forward(noise, num_batches=0, return_noise=False)[source]¶
Forward function.
- Parameters
noise (torch.Tensor | callable | None) – You can directly give a batch of noise through a
torch.Tensor
or offer a callable function to sample a batch of noise data. Otherwise, theNone
indicates to use the default noise sampler.num_batches (int, optional) – The number of batch size. Defaults to 0.
return_noise (bool, optional) – If True,
noise_batch
will be returned in a dict withfake_img
. Defaults to False.
- Returns
- If not
return_noise
, only the output image will be returned. Otherwise, a dict contains
fake_img
andnoise_batch
will be returned.
- If not
- Return type
torch.Tensor | dict