# AI upscaler baselines: bicubic, Lanczos and Real-ESRGAN on 12 public-domain photos

> Twelve public-domain and CC0 photos reduced 4x and enlarged again by five free methods, from bicubic interpolation to Real-ESRGAN, scored against the originals with PSNR, SSIM and LPIPS, with side-by-side crops. Not a ranking of products; the yardstick commercial upscalers have to beat.

By PhotoAIBench. Updated 7 October 2026. Canonical URL: https://photoaibench.com/upscaler-baselines/

**What this is.** Five free, open methods for enlarging a photo 4x, measured on the same 12 photos with the same code, on 7 October 2026. They are the baseline any paid upscaler should beat: if a product can't do better than free bicubic interpolation or the open-source Real-ESRGAN models, you don't need it. **It is not a ranking of products**, and no commercial tool appears on this page.

**How.** Each photo was reduced to 2,000 px on the long side (the reference), then reduced again by exactly 4x with bicubic filtering (the input, about 500 px). Each method enlarged the input back to 2,000 px, and the result was compared with the reference. The [methodology](/methodology/) explains every step and the metrics; the [scripts and data](#data-and-code) are published.

## Results

<section class="benchmark-data" data-block="data" markdown="1">

### Averages over the 12 photos

Higher PSNR and SSIM mean closer to the original pixel for pixel; lower LPIPS means closer as a neural network trained on human judgements sees it. Methods are listed from simplest to most complex, not ranked.

<div class="table-wrap" markdown="1">

| Method | PSNR (Y), mean | SSIM (Y), mean | LPIPS, mean | Time per photo |
|---|---|---|---|---|
| Bicubic | 30.00 dB | 0.7679 | 0.386 | under 0.1 s |
| Lanczos | 30.22 dB | 0.7740 | 0.392 | 0.1 s |
| Real-ESRNet x4plus | 29.54 dB | 0.7915 | 0.351 | 37.8 s |
| Real-ESRGAN x4plus | 26.79 dB | 0.7268 | 0.226 | 35.4 s |
| Real-ESRGAN general v3 | 27.66 dB | 0.7626 | 0.312 | 2.3 s |


</div>

Time is the median per photo on an 8-core Intel Core i9 laptop CPU (no GPU), PyTorch 2.2.2. A recent GPU runs the neural networks in well under a second.

### How often each method beats bicubic, photo by photo

<div class="table-wrap" markdown="1">

| Method | Higher PSNR | Higher SSIM | Lower LPIPS |
|---|---|---|---|
| Lanczos | 12 of 12 | 12 of 12 | 5 of 12 |
| Real-ESRNet x4plus | 9 of 12 | 9 of 12 | 9 of 12 |
| Real-ESRGAN x4plus | 0 of 12 | 0 of 12 | 12 of 12 |
| Real-ESRGAN general v3 | 0 of 12 | 4 of 12 | 10 of 12 |


</div>

### Every photo

PSNR on luma, in dB (higher is closer):

<div class="table-wrap" markdown="1">

| Photo | Bicubic | Lanczos | Real-ESRNet x4plus | Real-ESRGAN x4plus | Real-ESRGAN general v3 | 
|---|---|---|---|---|---|
| Guide, Little Norway (1942) | 38.65 | 39.30 | 32.71 | 31.70 | 29.99 | 
| Garage mechanic (1943) | 34.19 | 34.43 | 34.83 | 32.58 | 32.46 | 
| Walter White (c. 1950) | 44.52 | 44.78 | 41.04 | 37.91 | 36.81 | 
| A. G. Bell (c. 1895) | 32.39 | 32.47 | 32.04 | 25.00 | 31.25 | 
| Jacques-Cartier river | 24.24 | 24.33 | 24.44 | 22.21 | 23.46 | 
| Mount Ida, Crete | 26.67 | 26.82 | 26.96 | 23.74 | 25.34 | 
| Rio de Janeiro | 26.47 | 26.60 | 27.13 | 25.35 | 25.98 | 
| Sunset Key | 26.16 | 26.25 | 26.43 | 24.23 | 25.41 | 
| Hotel Post sign | 29.77 | 30.09 | 31.13 | 28.45 | 27.15 | 
| "Posted" sign | 26.03 | 26.38 | 26.49 | 23.79 | 24.73 | 
| Lynx | 29.55 | 29.70 | 29.63 | 26.70 | 28.55 | 
| Golden Chapel | 21.40 | 21.49 | 21.70 | 19.83 | 20.82 | 


</div>

SSIM on luma (higher is closer):

<div class="table-wrap" markdown="1">

| Photo | Bicubic | Lanczos | Real-ESRNet x4plus | Real-ESRGAN x4plus | Real-ESRGAN general v3 | 
|---|---|---|---|---|---|
| Guide, Little Norway (1942) | 0.951 | 0.954 | 0.939 | 0.918 | 0.921 | 
| Garage mechanic (1943) | 0.917 | 0.919 | 0.924 | 0.894 | 0.904 | 
| Walter White (c. 1950) | 0.975 | 0.976 | 0.972 | 0.959 | 0.966 | 
| A. G. Bell (c. 1895) | 0.701 | 0.705 | 0.695 | 0.598 | 0.673 | 
| Jacques-Cartier river | 0.504 | 0.515 | 0.552 | 0.444 | 0.502 | 
| Mount Ida, Crete | 0.679 | 0.688 | 0.715 | 0.608 | 0.671 | 
| Rio de Janeiro | 0.771 | 0.776 | 0.799 | 0.753 | 0.777 | 
| Sunset Key | 0.683 | 0.689 | 0.714 | 0.651 | 0.680 | 
| Hotel Post sign | 0.885 | 0.889 | 0.914 | 0.880 | 0.886 | 
| "Posted" sign | 0.791 | 0.805 | 0.828 | 0.727 | 0.787 | 
| Lynx | 0.866 | 0.870 | 0.886 | 0.834 | 0.871 | 
| Golden Chapel | 0.491 | 0.503 | 0.560 | 0.456 | 0.514 | 


</div>

LPIPS (lower is closer):

<div class="table-wrap" markdown="1">

| Photo | Bicubic | Lanczos | Real-ESRNet x4plus | Real-ESRGAN x4plus | Real-ESRGAN general v3 | 
|---|---|---|---|---|---|
| Guide, Little Norway (1942) | 0.152 | 0.151 | 0.192 | 0.143 | 0.195 | 
| Garage mechanic (1943) | 0.301 | 0.298 | 0.282 | 0.217 | 0.289 | 
| Walter White (c. 1950) | 0.205 | 0.203 | 0.226 | 0.123 | 0.191 | 
| A. G. Bell (c. 1895) | 0.593 | 0.605 | 0.642 | 0.570 | 0.622 | 
| Jacques-Cartier river | 0.662 | 0.681 | 0.603 | 0.288 | 0.484 | 
| Mount Ida, Crete | 0.446 | 0.462 | 0.411 | 0.211 | 0.329 | 
| Rio de Janeiro | 0.456 | 0.461 | 0.374 | 0.221 | 0.332 | 
| Sunset Key | 0.393 | 0.400 | 0.350 | 0.128 | 0.277 | 
| Hotel Post sign | 0.241 | 0.240 | 0.171 | 0.123 | 0.171 | 
| "Posted" sign | 0.382 | 0.395 | 0.284 | 0.248 | 0.252 | 
| Lynx | 0.198 | 0.197 | 0.194 | 0.120 | 0.168 | 
| Golden Chapel | 0.601 | 0.608 | 0.482 | 0.321 | 0.438 | 


</div>

</section>

## What the numbers say




**The metrics disagree, and that is the main finding.** Real-ESRGAN x4plus, the generative model behind many "AI upscalers", has the best LPIPS on 12 of 12 photos, yet scores below plain bicubic on PSNR on 12 of 12 and on SSIM on 12 of 12. It draws sharp, convincing fur, foliage and edges that are not exactly where the real ones were. PSNR and SSIM count every misplaced detail as error; LPIPS, which was fitted to what people judge as similar, rewards the sharpness. So "this upscaler has lower PSNR" doesn't prove it is worse, and "it looks sharper" doesn't prove it is faithful.

**The model trained without a GAN is the most faithful photo by photo.** Real-ESRNet x4plus, the same network trained with pixel loss only, has the best PSNR on 8 and the best SSIM on 9 of the 12 photos, and the highest average SSIM. Its average PSNR (29.54 dB) is still below Lanczos's (30.22 dB), pulled down by a few portraits where it loses by several decibels. It looks cleaner than bicubic, but not as crisp as the GAN.

**On soft originals, plain interpolation wins on PSNR.** Lanczos or bicubic has the best PSNR on 4 photos: Guide, Little Norway (1942), Walter White (c. 1950), A. G. Bell (c. 1895), Lynx. Three of those are the film and studio portraits, whose references are smooth; the Real-ESRGAN models, trained to remove noise and blur from real-world photos, flatten skin and fabric texture that was really there. A model trained for degraded inputs is not the right tool for a clean small image.

**The compact model is a fair trade on a CPU.** Real-ESRGAN general v3 takes about 2.3 seconds per photo here against about 35.4 for x4plus, and its average LPIPS (0.312) sits between bicubic's and x4plus's.

**What this test does not show.** These inputs were made by clean bicubic reduction, the easy case. Real small images also carry blur, noise and JPEG compression, which the Real-ESRGAN models were trained to handle and where they should do better against bicubic; that harder test is planned (see the [methodology](/methodology/#planned-tests-not-run-yet)). With 12 photos, differences of a few tenths of a dB or a few thousandths of SSIM between methods are not meaningful.

## Side by side

Each figure shows the same 128 × 128 region of the reference and of every output at 2x (nearest-neighbour, so each output pixel is a 2 × 2 block), the 32 × 32 input pixels the methods started from at 8x, and where the region sits in the photo. The region is chosen by a fixed rule, the most detailed spot in the reference, not by eye. Figures are lossless.


### Guide, Little Norway (1942)

![Crops of the same region of the Guide, Little Norway (1942) photo: the original, the 4x-reduced input, and the outputs of bicubic, Lanczos, Real-ESRNet x4plus, Real-ESRGAN x4plus and Real-ESRGAN general v3](/img/baselines/portrait-little-norway-guide.webp){: width="520" height="1152" loading="lazy" decoding="async"}



### Garage mechanic (1943)

![Crops of the same region of the Garage mechanic (1943) photo: the original, the 4x-reduced input, and the outputs of bicubic, Lanczos, Real-ESRNet x4plus, Real-ESRGAN x4plus and Real-ESRGAN general v3](/img/baselines/portrait-garage-mechanic.webp){: width="520" height="1152" loading="lazy" decoding="async"}



### Walter White (c. 1950)

![Crops of the same region of the Walter White (c. 1950) photo: the original, the 4x-reduced input, and the outputs of bicubic, Lanczos, Real-ESRNet x4plus, Real-ESRGAN x4plus and Real-ESRGAN general v3](/img/baselines/portrait-walter-white.webp){: width="520" height="1152" loading="lazy" decoding="async"}



### A. G. Bell (c. 1895)

![Crops of the same region of the A. G. Bell (c. 1895) photo: the original, the 4x-reduced input, and the outputs of bicubic, Lanczos, Real-ESRNet x4plus, Real-ESRGAN x4plus and Real-ESRGAN general v3](/img/baselines/portrait-graham-bell.webp){: width="520" height="1152" loading="lazy" decoding="async"}



### Jacques-Cartier river

![Crops of the same region of the Jacques-Cartier river photo: the original, the 4x-reduced input, and the outputs of bicubic, Lanczos, Real-ESRNet x4plus, Real-ESRGAN x4plus and Real-ESRGAN general v3](/img/baselines/landscape-jacques-cartier.webp){: width="520" height="1152" loading="lazy" decoding="async"}



### Mount Ida, Crete

![Crops of the same region of the Mount Ida, Crete photo: the original, the 4x-reduced input, and the outputs of bicubic, Lanczos, Real-ESRNet x4plus, Real-ESRGAN x4plus and Real-ESRGAN general v3](/img/baselines/landscape-mount-ida.webp){: width="520" height="1152" loading="lazy" decoding="async"}



### Rio de Janeiro

![Crops of the same region of the Rio de Janeiro photo: the original, the 4x-reduced input, and the outputs of bicubic, Lanczos, Real-ESRNet x4plus, Real-ESRGAN x4plus and Real-ESRGAN general v3](/img/baselines/landscape-rio-skyline.webp){: width="520" height="1152" loading="lazy" decoding="async"}



### Sunset Key

![Crops of the same region of the Sunset Key photo: the original, the 4x-reduced input, and the outputs of bicubic, Lanczos, Real-ESRNet x4plus, Real-ESRGAN x4plus and Real-ESRGAN general v3](/img/baselines/landscape-sunset-key.webp){: width="520" height="1152" loading="lazy" decoding="async"}



### Hotel Post sign

![Crops of the same region of the Hotel Post sign photo: the original, the 4x-reduced input, and the outputs of bicubic, Lanczos, Real-ESRNet x4plus, Real-ESRGAN x4plus and Real-ESRGAN general v3](/img/baselines/text-hotel-post-sign.webp){: width="520" height="1152" loading="lazy" decoding="async"}



### "Posted" sign

![Crops of the same region of the "Posted" sign photo: the original, the 4x-reduced input, and the outputs of bicubic, Lanczos, Real-ESRNet x4plus, Real-ESRGAN x4plus and Real-ESRGAN general v3](/img/baselines/text-posted-sign.webp){: width="520" height="1152" loading="lazy" decoding="async"}

A second crop of this photo, **chosen by hand** to show the sign's small print (about 5 pixels tall in the input). Real-ESRGAN x4plus produces crisp, confident letters, but the first I of FISHING comes out misshapen and some strokes are redrawn; general v3 leaves red specks inside the letters. Bicubic and Lanczos are blurry but invent nothing.

![Hand-chosen crops of the small print on the "Posted" sign from every method](/img/baselines/text-posted-sign-by-hand.webp){: width="520" height="1152" loading="lazy" decoding="async"}


### Lynx

![Crops of the same region of the Lynx photo: the original, the 4x-reduced input, and the outputs of bicubic, Lanczos, Real-ESRNet x4plus, Real-ESRGAN x4plus and Real-ESRGAN general v3](/img/baselines/texture-lynx.webp){: width="520" height="1152" loading="lazy" decoding="async"}



### Golden Chapel

![Crops of the same region of the Golden Chapel photo: the original, the 4x-reduced input, and the outputs of bicubic, Lanczos, Real-ESRNet x4plus, Real-ESRGAN x4plus and Real-ESRGAN general v3](/img/baselines/texture-golden-chapel.webp){: width="520" height="1152" loading="lazy" decoding="async"}




## Data and code

- [upscaler-baselines.json](/tools/image-quality-compare/upscaler-baselines.json): every score, per photo and method, with the library versions.
- [upscale-timings.json](/tools/image-quality-compare/upscale-timings.json) and [crops.json](/tools/image-quality-compare/crops.json): run times and crop positions.
- [photo-samples.yaml](/tools/image-quality-compare/photo-samples.yaml): the photos, their licenses and hashes.
- Scripts: [prepare.py](/tools/image-quality-compare/bench-prepare.py), [upscale_local.py](/tools/image-quality-compare/bench-upscale-local.py), [score.py](/tools/image-quality-compare/bench-score.py).

To check a PSNR or SSIM value yourself, make the reference and input with `prepare.py`, upscale, and load the reference and output into the [PSNR and SSIM calculator](/psnr-ssim-calculator/): it uses the same formulas and settings.

**Licenses.** Real-ESRGAN and its released weights are BSD-3-Clause ([github.com/xinntao/Real-ESRGAN](https://github.com/xinntao/Real-ESRGAN)). The photos are public domain or CC0 (list on the [methodology page](/methodology/#the-test-photos)), so the crops above are free to reuse.
