ClearView: Image Deraining with ResNet18-UNet (Mixed-Domain)

ClearView demo showcase: rainy input vs. derained output across four scenes (ResNet18-UNet)

Task Domain Params License

A U-Net [8] with a ResNet-18 [9] encoder (ImageNet-pretrained, fine-tuned end to end), the smallest of ClearView's three ResNet-backbone variants, trained on a blended synthetic + real-world rain set, selecting checkpoints against a blended real-world validation metric rather than a single benchmark, for a model that holds up across domains instead of maxing out one dataset's quirks. Not a mirror of someone else's checkpoint, see Citation.


Quickstart

Requires the ClearView library:

pip install git+https://github.com/dronefreak/clearview.git
from clearview.api import DerainingModel
from huggingface_hub import hf_hub_download

weights = hf_hub_download(repo_id="dronefreak/clearview-derain-resnet18-unet", filename="clearview-derain-resnet18-unet.pth")
model = DerainingModel.from_pretrained("resnet18_unet", weights=weights)

clean = model.process("rainy_image.png", output_path="derained.png")

Training Data

5 sources combined via ClearView's --mix-config (recipe), oversampling the real-world sources 2x:

Source Type Weight Pairs
Rain13K [1] Synthetic 1.0 13,711
DDN-Data / Rain1400 [4] Synthetic 1.0 12,600
SPA-Data [5] Real-world 2.0 6,385
RealRain-1k-H [6] Real-world 2.0 784
RealRain-1k-L [6] Real-world 2.0 784

~62% synthetic / ~38% real by effective sampling weight (before oversampling: ~77%/23% by raw pair count).

Checkpoint selection uses a separate blended validation set (recipe): SPA-Data val (capped to 150 of 1,000 pairs so it can't dominate), RealRain-1k-H/L validation (112 each), and Rain100L (100) as a synthetic sanity anchor.


Detailed Test-Set Metrics

Full per-dataset breakdown across all 6 tracked metrics, computed on each source's own held-out test/eval split (not the blended validation set used for checkpoint selection during training).

Test Set Domain PSNR SSIM MAE MSE Rain Removal Rate NIQE
Rain100L [2] Synthetic 28.87 0.893 0.0242 0.00156 -0.029 10.54
Rain100H [2] Synthetic 24.95 0.776 0.0422 0.00382 0.668 11.91
Test100 [3] Synthetic 25.99 0.833 0.0399 0.00315 0.400 9.67
Test1200 [3] Synthetic 28.03 0.845 0.0322 0.00239 0.295 7.72
Test2800 [4] Synthetic 28.34 0.875 0.0280 0.00168 0.226 792.65
DDN-Data [4] Synthetic 28.42 0.878 0.0278 0.00167 0.201 1041.55
SPA-Data [5] Real-world 36.55 0.970 0.0103 0.00045 -0.555 6.39
RealRain-1k-H [6] Real-world 34.64 0.966 0.0138 0.00068 0.726 4.39
RealRain-1k-L [6] Real-world 36.25 0.975 0.0110 0.00046 0.649 4.43
AllWeather (rain+fog) [7] Cross-domain (stress) 13.66 0.558 0.1869 0.05451 0.109 235.27

Two negative Rain Removal Rate values here (Rain100L: -0.029, SPA-Data: -0.555) are worth calling out explicitly: PSNR/SSIM are still decent on both, but the Sobel-residual metric says this checkpoint added slightly more high-frequency error than it removed on those two sets specifically, likely mild over-sharpening/artifacting from the ResNet encoder path rather than a training failure, this same pattern shows up on all three ClearView ResNet-backbone variants (18/34/50). See Use Cases below.

Metric definitions:

  • PSNR (Peak Signal-to-Noise Ratio, dB): pixel-level fidelity between the restored output and ground truth. Higher is better. The standard image-restoration metric, but insensitive to structural/perceptual quality on its own.
  • SSIM (Structural Similarity Index, 0-1): perceptual similarity based on luminance, contrast, and structure. Higher is better, tracks human-perceived quality more closely than PSNR.
  • MAE (Mean Absolute Error, normalized [0,1] pixel space): average per-pixel absolute intensity difference. Lower is better, less sensitive to outlier pixels than MSE.
  • MSE (Mean Squared Error, normalized [0,1] pixel space): average per-pixel squared intensity difference, the term PSNR is derived from. Lower is better, penalizes large errors more heavily than MAE.
  • Rain Removal Rate: ClearView-specific metric. Compares the Sobel-gradient ("high-frequency") residual energy of the output vs. ground truth against that of the input vs. ground truth: 1 - (residual after) / (residual before). 1.0 means perfect rain removal, 0.0 means no change, negative means the model added more high-frequency error than it removed (e.g. hallucinated detail or over-sharpening). Higher is better.
  • NIQE (Natural Image Quality Evaluator): no-reference perceptual quality score. Its pristine reference statistics are refit per test set from that set's own clean images, so NIQE values are only comparable within the same row, not across rows, a NIQE of 800 on one dataset and 10 on another does not mean one output is 80x worse, the reference scale itself differs per dataset. Lower is better within a given row.

ClearView Model Comparison

How this model compares to the rest of the ClearView model zoo (PSNR / SSIM), same test sets and evaluation protocol for every model. Columns sorted highest to lowest by average PSNR across the 9 rain-only test sets.

Test Set Domain Restormer NAFNet (Large) NAFNet (Mid) Restormer-Small UNet (Vanilla) NAFNet (Small) ResNet50-UNet ResNet34-UNet ResNet18-UNet Histoformer
Rain100L [2] Synthetic 36.04 / 0.969 34.59 / 0.961 34.14 / 0.957 31.57 / 0.933 30.96 / 0.932 30.20 / 0.922 29.79 / 0.906 29.00 / 0.894 28.87 / 0.893 25.83 / 0.836
Rain100H [2] Synthetic 27.78 / 0.868 27.65 / 0.856 27.72 / 0.849 25.92 / 0.806 26.41 / 0.823 25.02 / 0.763 25.37 / 0.794 24.67 / 0.774 24.95 / 0.776 12.22 / 0.364
Test100 [3] Synthetic 28.65 / 0.881 27.71 / 0.865 27.96 / 0.873 26.10 / 0.842 24.91 / 0.836 25.26 / 0.820 26.16 / 0.839 26.38 / 0.839 25.99 / 0.833 22.01 / 0.684
Test1200 [3] Synthetic 31.91 / 0.906 31.37 / 0.898 31.28 / 0.898 30.66 / 0.882 29.08 / 0.868 30.43 / 0.874 28.44 / 0.856 28.19 / 0.852 28.03 / 0.845 24.20 / 0.727
Test2800 [4] Synthetic 32.05 / 0.928 31.75 / 0.924 31.66 / 0.923 31.00 / 0.914 30.61 / 0.909 30.58 / 0.906 28.67 / 0.883 28.31 / 0.875 28.34 / 0.875 24.71 / 0.785
DDN-Data [4] Synthetic 32.21 / 0.931 31.90 / 0.927 31.84 / 0.926 31.28 / 0.918 30.67 / 0.912 30.83 / 0.910 28.72 / 0.886 28.47 / 0.879 28.42 / 0.878 25.04 / 0.784
SPA-Data [5] Real-world 44.67 / 0.989 41.99 / 0.986 41.77 / 0.986 38.46 / 0.978 39.01 / 0.980 37.13 / 0.973 37.07 / 0.973 36.97 / 0.971 36.55 / 0.970 32.18 / 0.929
RealRain-1k-H [6] Real-world 40.28 / 0.985 39.34 / 0.982 38.68 / 0.980 35.29 / 0.969 35.98 / 0.971 34.33 / 0.957 34.94 / 0.970 35.21 / 0.969 34.64 / 0.966 21.86 / 0.761
RealRain-1k-L [6] Real-world 42.35 / 0.989 41.17 / 0.987 40.64 / 0.986 37.56 / 0.978 38.04 / 0.980 36.59 / 0.970 36.52 / 0.978 36.88 / 0.977 36.25 / 0.975 25.47 / 0.867
AllWeather (rain+fog) [7] Cross-domain (stress) 13.72 / 0.584 13.53 / 0.576 13.64 / 0.579 13.59 / 0.572 13.66 / 0.570 13.59 / 0.574 13.61 / 0.555 13.54 / 0.558 13.66 / 0.558 30.75 / 0.923

All ClearView models trained under the identical mixed-domain recipe, only batch size/accumulation steps vary per architecture size. Histoformer is included as an external, inference-only reference point (original authors' checkpoint, not trained under this recipe), its strong AllWeather (rain+fog) score and comparatively weak scores on the rain-only test sets reflect that it was trained on a rain+fog+snow mix, while ClearView's current mix is rain-only. ResNet18-UNet is the smallest of the three ClearView ResNet-backbone variants and, along with ResNet34/50-UNet, trails the rest of the ClearView-native lineup on every rain-only test set. The three ResNet variants cluster tightly together (30.23-30.63 avg PSNR) rather than separating cleanly by depth/capacity, likely a ResNet-stem effect (the stock ResNet stem's aggressive early downsampling, a stride-2 7x7 conv followed by a stride-2 max-pool, can blur or alias away the thin rain streaks it's supposed to detect before any residual block runs) rather than a capacity issue, still a working hypothesis rather than a confirmed cause.


Use Cases

Good for: dashcam/surveillance footage, photo restoration, real-world rain (not just synthetic-style streaks); the lightest-weight option among ClearView's ResNet-backbone variants for latency-sensitive deployments; a reference point for how a plain ImageNet-pretrained ResNet encoder compares against ClearView's purpose-built architectures on this task.

Limitations: no temporal consistency for video (processes frames independently); AllWeather rain+fog is an explicit out-of-scope stress test, fog was not in the training mix and this model is not expected to handle it; trails every other ClearView model on rain-only test sets; negative Rain Removal Rate on Rain100L and SPA-Data specifically, PSNR/SSIM are still reasonable there but the residual high-frequency error metric suggests mild over-sharpening/artifacting rather than clean streak removal on those two sets.


Training

clearview-train --model resnet18_unet --mix-config configs/mix/rain_mixed_synthetic_real.yaml --mix-sampler \
  --val-mix-config configs/mix/rain_mixed_val.yaml --loss custom --loss-config '{"charbonnier": {"weight": 1.0}}' \
  --crop-size 256 --batch-size 24 --epochs 100 --mixed-precision --ema --compile \
  --output-dir ./runs/rain_mixed_resnet18_unet

Training Curves

Training and validation loss/PSNR curves for ResNet18-UNet


Citation

@software{saksena2025clearview,
  author = {Saksena, Saumya Kumaar},
  title = {ClearView: Practical Image Deraining},
  year = {2025},
  url = {https://github.com/dronefreak/clearview}
}

Architecture and datasets this model builds on:

References

  1. Fu et al. and others, Rain13K composite (Rain800/Rain100H/L/Rain14000/Rain12), standard MPRNet/Restormer training set.
  2. Yang et al., Deep Joint Rain Detection and Removal from a Single Image, CVPR 2017 (Rain100H/L).
  3. Zhang & Patel / Zhang, Sindagi & Patel (Test100 / Test1200).
  4. Fu et al., Removing Rain from Single Images via a Deep Detail Network, CVPR 2017 (DDN-Data / Rain1400 / Test2800).
  5. Wang et al., Spatial Attentive Single-Image Deraining with a High Quality Real Rain Dataset, CVPR 2019 (SPA-Data).
  6. Li et al., RealRain-1k, arXiv:2206.05514, 2022.
  7. Li et al., Heavy Rain Image Restoration, CVPR 2019 (AllWeather rain+fog / Outdoor-Rain).
  8. Ronneberger, Fischer & Brox, U-Net: Convolutional Networks for Biomedical Image Segmentation, MICCAI 2015, arXiv:1505.04597 (decoder topology).
  9. He, Zhang, Ren & Sun, Deep Residual Learning for Image Recognition, CVPR 2016, arXiv:1512.03385 (encoder backbone).

Full bibtex for each: main repo README.


Model Card Authors / Contact

Saumya Kumaar Saksena, GitHub Issues

Downloads last month
45
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Datasets used to train dronefreak/clearview-derain-resnet18-unet

Collection including dronefreak/clearview-derain-resnet18-unet

Papers for dronefreak/clearview-derain-resnet18-unet