Starting a new issue for better visibility to other people. I have some quick questions regarding the implementation of discriminator. The argument to the forward function (images, rgb, real_images) seems to be a bit confusing.

Not sure my understanding is correct. In a training iteration of a general GAN, the discriminator should be called twice, once for a batch real images and once for a batch of generated image. While we can concat real and fake images to call the network once, I think this is not done here as the output logit has only 1 scalar rather than 2.

Then I would like to know what are the expected arguments for the real pass and fake pass? I guess for the fake pass, rgbs is the output collection of different resolution rgbs from the generator, and images should be the final output of the generator (generated images at highest resolution); for the real pass, images is the real image, and 'rgbs' should be None. The real_images argument can always be None.

I may be very wrong, so really appreciate if you can correct and explain.

Two additional questions:

this line looks tricky, isn't self.resize_image_to(rgb, rgb.shape[-1]) just return rgb so it is basically concat two rgb together?
Just want to confirm the current implementation has not supported the multi-scale loss yet, as that requires modules to process (HW3) images at multiple resolutions.

Write a brief paragraph-by-paragraph summary