I implemented a machine learning based upscaler from scratch. To do this, I created my own custom CNN (and GAN) framework (implementing forward/backward passes, dataset batching, etc) using SYCL (C++) for wide compute device support such as GPUs (GPGPU).
The gallery shows a CNN that has 300k parameters upscaling various game screenshots/images, sometimes 2x and sometimes even 4x is used because my model can handle arbitrary upscaling factors.
The CNN is trained with a 120k-sample dataset, compiled and preprocessed by my code, using my custom framework to train of course. The architecture uses a Pixel Shuffle layer to do the tensor reshaping necessary for upscaling, and 7 layers of 3x3 convolutions to do feature extraction, as well as a Sobel edge-detection texture passed in as an input channel.
Text is also upscaled well (well, you guys should be judge for that)
Trained completely using my framework (no external ML libraries used like tensorflow/torch.)

I recommend clicking on each of the images to fully see the upscaled details