DenoiseGAN / README.md
orangepegasus's picture
Rename huggingface_model_card.md to README.md
2f00d6f verified
|
Raw
History Blame Contribute Delete
1.87 kB
---
license: mit
library_name: pytorch
pipeline_tag: image-to-image
tags:
- image-restoration
- denoising
- image-denoising
- pytorch
- low-level-vision
---
# DenoiseGAN — detail-preserving single-step image denoiser
A single-step image denoiser tuned to remove noise **while preserving fine
detail**, plus a small **noise-translator** front-end that adapts it to noise it
was not trained on. Code: **<your-github-url>**.
## Files
| File | What |
|------|------|
| `psnr_final.pt` | The denoiser (PSNR stage). Use the `ema` weights. |
| `translator_0020000.pt` | Noise translator front-end (~0.37M params). Enable for Gaussian / OOD noise. |
## Usage
```python
import torch
from models import DenoiseGenerator, NoiseTranslator # from the GitHub repo
D = DenoiseGenerator(channels=(48,96,192,320,448), use_checkpoint=False).eval().cuda()
D.load_state_dict(torch.load('psnr_final.pt')['ema'], strict=False)
T = NoiseTranslator().eval().cuda() # optional
T.load_state_dict(torch.load('translator_0020000.pt')['ema'])
with torch.no_grad():
out = D(T(noisy)) # noisy normalized to [-1, 1]; drop T for in-distribution noise
```
## Model
- **Generator** (~21M params): NAFNet/Restormer-hybrid U-Net, single forward pass,
residual noise prediction, attention-gated skips.
- **Translator** (~0.37M params): bias-free, scale-equivariant residual CNN trained
*through* the frozen denoiser so `D(T(noisy)) ≈ clean`.
## Notes & limitations
- Shipped model is the **PSNR (reconstruction) stage**. The adversarial/GAN stage
was tried and **did not improve** results (it traded fidelity for hallucination).
- Optimized for **detail preservation** on a specific noise family rather than for
topping a single PSNR benchmark.
- For **Gaussian / out-of-distribution** noise, enable the **translator**.
## License
MIT.