Downloads · 30 days
17
40% of all-time downloads
dronefreak/clearview-derain-restormer-small
clearview-derain-restormer-small 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 (Restormer-Small)"/ </p
Downloads · 30 days
17
40% of all-time downloads
All-time downloads
42
Public
Repo size
9.6 MB
Likes
0
Public
Click a slice to open those files.
.pth9.2 MB · 95%
From the Hugging Face model README
A smaller, faster Restormer [8] variant (reduced embedding dimension, fewer transformer blocks per level), 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-restormer-small", filename="clearview-derain-restormer-small.pth")
model = DerainingModel.from_pretrained("restormer_small", 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 | 31.57 | 0.933 | 0.0157 | 0.00103 | 0.338 | 9.75 |
| Rain100H [2] | Synthetic | 25.92 | 0.806 | 0.0367 | 0.00318 | 0.710 | 11.33 |
| Test100 [3] | Synthetic | 26.10 | 0.842 | 0.0451 | 0.00405 | 0.458 | 8.99 |
| Test1200 [3] | Synthetic | 30.66 | 0.882 | 0.0244 | 0.00137 | 0.457 | 7.10 |
| Test2800 [4] | Synthetic | 31.00 | 0.914 | 0.0208 | 0.00089 | 0.431 | 799.06 |
| DDN-Data [4] | Synthetic | 31.28 | 0.918 | 0.0204 | 0.00086 | 0.424 | 1006.31 |
| SPA-Data [5] | Real-world | 38.46 | 0.978 | 0.0063 | 0.00039 | 0.381 | 6.22 |
| RealRain-1k-H [6] | Real-world | 35.29 | 0.969 | 0.0128 | 0.00081 | 0.747 | 3.82 |
| RealRain-1k-L [6] | Real-world | 37.56 | 0.978 | 0.0094 | 0.00047 | 0.687 | 3.81 |
| AllWeather (rain+fog) [7] | Cross-domain (stress) | 13.59 | 0.572 | 0.1906 | 0.05590 | 0.120 | 235.04 |
No negative Rain Removal Rate anywhere in this table, unlike ClearView's ResNet-backbone variants (18/34/50-UNet), which all show negative RRR on at least Rain100L and SPA-Data. Consistent with Restormer-Small being a scaled-down purpose-built restoration architecture rather than a repurposed classification backbone.
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. Restormer-Small punches above its weight for its size, at 2.3M params (a fifteenth of full Restormer's 15.3M), it lands right between UNet (21.5M) and NAFNet Small (1.1M), beating both despite being smaller than one and cheaper to run than the other.
Good for: dashcam/surveillance footage, photo restoration, real-world rain (not just synthetic-style streaks); latency-sensitive or edge deployments where full Restormer is overkill, the strongest small-model option in the ClearView zoo right now.
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 full Restormer and both larger NAFNet variants by a meaningful margin, use those instead if quality matters more than latency/size.
clearview-train --model restormer_small --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 64 --epochs 100 --mixed-precision --ema --compile \
--output-dir ./runs/rain_mixed_restormer_small
@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