--- license: mit tags: - super-resolution - image-denoising - pytorch - computer-vision --- # NPPE3 4x Super-Resolution + Denoising CNN (RRDB-lite / EDSR-style) that jointly denoises low-light images and performs 4x super-resolution (256x160 -> 1024x640). ## Architecture - Head conv (3 -> 96 channels) - 16 residual blocks (conv-relu-conv, residual scale 0.2) - 2x PixelShuffle upsampling blocks (x2 each, total x4) - Global residual connection to bicubic-upsampled input - Trained with EMA (decay 0.999) of weights ## Training - Loss: L1 pixel loss - Optimizer: Adam, lr 2e-4, cosine annealed over 150 epochs - Patch-based training: 64x64 LR patches -> 256x256 HR patches, random flips - Dataset: 1105 train pairs, 267 val pairs (low-light noisy LQ -> clean HQ) ## Validation results (competition metric-style PSNR: grayscale, flattened, every 8th pixel) - Full validation set (267 images): 39.245 dB - With flip test-time augmentation (4-way self-ensemble): 39.271 dB ## Files - `best.pt` — best EMA checkpoint (state_dict) - `last.pt` — final EMA checkpoint (state_dict) ## Usage ```python import torch from model import SRNet # see training notebook for the class definition model = SRNet(ch=96, n_blocks=16, scale=4) model.load_state_dict(torch.load("best.pt", map_location="cpu")) model.eval() ``` Trained for the DLP 26T2 NPPE-3 Kaggle competition (low-light image denoising + 4x super-resolution).