Downloads · 30 days
7
8% of all-time downloads
dronefreak/clearview-derain-resnet18-unet
clearview-derain-resnet18-unet is a image-to-image model from dronefreak. Use it when you need one image transformed into another. It is set up for pytorch. The card lists the license as apache-2.0.
<p align="center" <img src="demoshowcase.jpg" alt="ClearView demo showcase: rainy input vs. derained output across four scenes (ResNet18-UNet)"/ </p
Downloads · 30 days
7
8% of all-time downloads
All-time downloads
88
Public
Repo size
58.4 MB
Likes
0
Public
Click a slice to open those files.
.pth57.9 MB · 99%
From the Hugging Face model README
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.
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")
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.
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:
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.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.
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.
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
@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:
Full bibtex for each: main repo README.
Saumya Kumaar Saksena, GitHub Issues