This project implements a novel method for guiding Deep Image Prior (DIP) early stopping by combining DIP with DDPM-inspired supervision. The approach addresses common challenges in DIP, such as overfitting and unstable image quality during training, by introducing a multi-stage denoising framework.
- DIP: Utilizes a randomly initialized deep convolutional network for image denoising, restoration, and super-resolution.
- Challenges: Overfitting noise and difficulty determining the optimal early-stopping point.
- Proposed Method:
- Generate a series of noise-level images for multi-stage supervision.
- Modify DIP training to include multiple denoising stages, starting with high-noise images and progressively reducing noise.
- Use metrics like PSNR and SSIM to monitor reconstruction quality and determine early stopping.
- Baseline Implementations:
- Traditional DIP and DDPM methods.
- Dataset:
- Smithsonian Butterflies Subset.
- Key Configurations:
- Three DIP network architectures: U-Net, DnCNN, ResNet.
- Use of perceptual loss for feature space comparisons.
- Beta scheduling: Linear and Scaled-Linear schedulers.
- Two beta_max values: 0.01 and 0.02.
- Performance:
- Higher PSNR and SSIM values with the proposed method compared to traditional DIP.
- U-Net outperforms DnCNN and ResNet.
- Perceptual loss enhances PSNR and SSIM values.
- Linear scheduler yields slightly worse results than Scaled-Linear scheduler.
- Larger beta_max increases complexity and reduces PSNR and SSIM values.
- Training Efficiency:
- No significant increase in time cost compared to traditional DIP.
The proposed method effectively improves DIP by addressing overfitting and stabilizing image quality through multi-stage denoising. It is a promising approach for future research and development in image restoration techniques.
- Set up the environment with necessary libraries (e.g., PyTorch, NumPy).
- Clone the repository and prepare the dataset.
- Configure training parameters in the script (e.g., network architecture, beta scheduler, loss function).
- Run the training script and monitor metrics like PSNR and SSIM to evaluate results.
- Explore other datasets and architectures.
- Further optimize the dynamic adjustment mechanism for training epochs.
- Investigate additional loss functions and noise scheduling strategies.