In this video, you'll learn about progressive growing, which is one of the components of StyleGAN. I'll go over both the intuition behind progressive growing as well as the motivation and then I'll dive a little bit deeper into how to implement it. First off, progressive growing and StyleGAN is trying to make it so it's easier for the generator to generate higher resolution images by gradually training it from lower resolution images to those higher resolution images. Starting with an easier task of say, a very blurry image for it to generate a four by four image with only 16 pixels to then a much higher resolution image overtime. For example, this is what it would start out as where the generator just needs to generate this four by four image and the discriminator needs to evaluate whether it's real or fake. Of course, to make it not so obvious what's real or fake, the reals will also be downsampled to a four by four image. Now in the next step of progressive growing, everything is doubled, so the image now generated is an eight by eight image. It's of much higher resolution image than before, but still an easier task than a super high resolution image, and of course, the reals are also down-sampled to an eight by eight image to make it not so obvious which ones are real and which ones are fake. The discriminator will now taken this eight by eight image and have this extra convolutional layer to take that in. The generator conversely, will also have this eight by eight extra convolutional layer that will then be able to generate this higher resolution image. By eight by eight here for the convolutional layer, I don't mean the filter size, I actually mean the expected output here on generator and input here for the discriminator of heightened width, we're not looking at channels here. Then finally, over time, over and perhaps lots of different growing periods and these are scheduled intervals during training. The generator will be able to generate super high-resolution images and the discriminator will look at that higher resolution image against real images that will also be at this high resolution, so no longer downsampled and be able to detect whether it's real or fake. This is progressive growing in action from really pixelated four by four, perhaps pixels, to super high resolution images and to this style again trained on an enemy face dataset. Now this progressive growing isn't as straightforward as just doubling in size immediately at this scheduled intervals, it's actually a little bit more gradual than that. What happens initially when you first want to generate a doubled size image is that instead of a four by four image here, where I'm saying conv four by four is a height width. You actually want to upsample the image and upsampling, that could be using nearest neighbors filtering. These are not learned parameters, it's just very basic upsampling, and all you do is you upsample it to this image here. All you're doing is upsampling and then at the next step, maybe you do 99 percent upsampling and you do one percent of taking this upsampled image into a convolutional layer that produces an eight by eight resolution image so that you have some learned parameters, but you only weight this direction by one percent. You do all this learning and then you still way is image as 99 percent from the upsampling purely and one percent from these learned parameters. Then over time, you start to decrease, it's 99 percent and you want to increase this one percent, so you rely more and more on these learned parameters. Let's say you have 50 percent, 50-50, and you're relying more on learned parameters and you see this image starting to look perhaps more like a face and less like just upsampling from nearest Neighbors upsampling and then over time even more until you completely do not rely on this upsampling by itself and you just rely on these learned parameters. At some point this will be a 100 percent and this will just be part of the network that you see like this guy. This will just be part of the network and this section will just not be there anymore. More generally, you can think of this as an alpha parameter that grows over time where alpha starts out as 0 and this is just completely one, so completely this way. Then alpha grows like 0.1, 0.2, 0.3 all the way up to one. When an alpha is one then this will equal 0, this whole thing over here, so you don't care about this, and this will equal one. That was for the generator, for the discriminator, there's something fairly similar, but in the opposite direction. Now you have this high-resolution eight by eight image, and before maybe you had a four by four image. What happens is, slowly over time, you go through this downsampling layer to then handle this four by four image down here. What first happens is you downsample and your alpha is 0, so you're only going this direction and then over time as your alpha increases and this is the same alpha perimeter as you saw in the generator, you'll go through these learned parameters with a comv eight by eight, taken as input and then downsampled here and then into your four by four. Essentially, what's happening in the discriminator is the reverse and with the same alpha that gradually uses these learned perimeters as well. Of course, the discriminator takes in the image instead of generating the image at the very end, gives you just one output of real or fake and essentially a probability of between zero and one. Progressive growing in the context of StyleGAN essentially is a series of all of these blocks that progressively grow into higher and higher resolution outputs and the StyleGAN generator essentially will look like this. Each of these blocks will be composed of an upsampling layer as well as a convolutional layer and actually they will have each two convolutional layers to be able to learn even more. In summary, progressive growing gradually will double that image resolution so that it's easier for your StyleGAN to learn higher resolution images over time. Essentially, this helps with faster and more stable training.