Operators for StyleGAN2
All files in this directory are borrowed from repository stylegan3. Basically, these files implement customized operators, which are faster than the native operators from PyTorch, especially for second-derivative computation, including
bias_act.bias_act()
: Fuse adding bias and then performing activation as one operator.upfirdn2d.setup_filter()
: Set up the kernel used for filtering.upfirdn2d.filter2d()
: Filtering a 2D feature map with given kernel.upfirdn2d.upsample2d()
: Upsampling a 2D feature map.upfirdn2d.downsample2d()
: Downsampling a 2D feature map.upfirdn2d.upfirdn2d()
: Upsampling, filtering, and then downsampling a 2D feature map.filtered_lrelu.filtered_lrelu()
: Leaky ReLU layer, wrapped with upsampling and downsampling for anti-aliasing.conv2d_gradfix.conv2d()
: Convolutional layer, supporting arbitrarily high order gradients and fixing gradient when computing penalty.conv2d_gradfix.conv_transpose2d()
: Transposed convolutional layer, supporting arbitrarily high order gradients and fixing gradient when computing penalty.conv2d_resample.conv2d_resample()
: Wrapsupfirdn2d()
andconv2d()
(orconv_transpose2d()
). This is not used in our network implementation (i.e.,models/stylegan2_generator.py
andmodels/stylegan2_discriminator.py
)
We make following slight modifications beyond disabling some lint warnings:
- Line 24 of file
misc.py
: UseEasyDict
from moduleeasydict
to replace that fromdnnlib
from stylegan3. - Line 36 of file
custom_ops.py
: Disable log message when setting up customized operators. - Line 54/109 of file
custom_ops.py
: Add necessary CUDA compiler path. (NOTE: If your cuda binary does not locate at/usr/local/cuda/bin
, please specify in function_find_compiler_bindir_posix()
.) - Line 21 of file
bias_act.py
: UseEasyDict
from moduleeasydict
to replace that fromdnnlib
from stylegan3. - Line 162-165 of file
filtered_lrelu.py
: Change some implementations in_filtered_lrelu_ref()
toref
. - Line 31 of file
grid_sample_gradfix.py
: Enable customized grid sampling operator by default. - Line 35 of file
grid_sample_gradfix.py
: Useimpl
to disable customized grid sample operator. - Line 34 of file
conv2d_gradfix.py
: Enable customized convolution operators by default. - Line 48/53 of file
conv2d_gradfix.py
: Useimpl
to disable customized convolution operators. - Line 36/53 of file
conv2d_resample.py
: Useimpl
to disable customized convolution operators. - Line 23 of file
fma.py
: Useimpl
to disable customized add-multiply operator.
Please use ref
or cuda
to choose which implementation to use. ref
refers to native PyTorch operators while cuda
refers to the customized operators from the official repository. cuda
is used by default.