File size: 2,962 Bytes
2f85de4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# Operators for StyleGAN2

All files in this directory are borrowed from repository [stylegan3](https://github.com/NVlabs/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()`: Wraps `upfirdn2d()` and `conv2d()` (or `conv_transpose2d()`). This is not used in our network implementation (*i.e.*, `models/stylegan2_generator.py` and `models/stylegan2_discriminator.py`)

We make following slight modifications beyond disabling some lint warnings:

- Line 24 of file `misc.py`: Use `EasyDict` from module `easydict` to replace that from `dnnlib` from [stylegan3](https://github.com/NVlabs/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`: Use `EasyDict` from module `easydict` to replace that from `dnnlib` from [stylegan3](https://github.com/NVlabs/stylegan3).
- Line 162-165 of file `filtered_lrelu.py`: Change some implementations in `_filtered_lrelu_ref()` to `ref`.
- Line 31 of file `grid_sample_gradfix.py`: Enable customized grid sampling operator by default.
- Line 35 of file `grid_sample_gradfix.py`:  Use `impl` 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`: Use `impl` to disable customized convolution operators.
- Line 36/53 of file `conv2d_resample.py`: Use `impl` to disable customized convolution operators.
- Line 23 of file `fma.py`: Use `impl` 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.