Image Benchmark Results
Single-threaded CPU benchmark comparing image augmentation throughput (images/second). All libraries run under identical conditions on the same machine.
Pairwise Summary
Generated automatically from benchmark JSON at build time (median speedup midpoint with IQR).
AlbumentationsX vs Kornia
Wins: 52 / 53 · Median: 4.99x · IQR: 2.74x-10.13x
AlbumentationsX vs Pillow
Wins: 17 / 24 · Median: 1.83x · IQR: 0.86x-4.35x
AlbumentationsX vs Torchvision
Wins: 28 / 28 · Median: 5.78x · IQR: 4.19x-7.95x
Speedup Distribution
How many transforms fall into each speedup range (Albumentationsx vs best competitor). 59 transforms with head-to-head comparison.
Results
Click any column header to sort · Transform names link to interactive demos
| Transform | albumentationsx 2.2.5 CPU · macOS arm64 | kornia 0.8.2 CPU · macOS arm64 | pillow 12.2.0 CPU · macOS arm64 | torchvision 0.26.0 CPU · macOS arm64 | Speedup Albx / best other (range) |
|---|---|---|---|---|---|
| MedianBlur | 1546 ± 16 | 7 ± 0 | 11 ± 0 | — | 140-147x |
| RandomGamma | 14482 ± 424 | 252 ± 4 | — | — | 55-60x |
| Elastic | 453 ± 2 | 4 ± 0 | — | 8 ± 0 | 53-55x |
| RandomRotate90 | 8652 ± 167 | 464 ± 2 | — | — | 18-19x |
| RandomJigsaw | 9413 ± 136 | 638 ± 2 | — | — | 14-15x |
| MotionBlur | 3847 ± 49 | 322 ± 6 | — | — | 12-12x |
| Hue | 1908 ± 18 | 204 ± 1 | — | — | 9.2-9.5x |
| ColorJiggle | 1208 ± 16 | 107 ± 0 | — | 133 ± 1 | 8.9-9.2x |
| PhotoMetricDistort | 1070 ± 19 | — | — | 129 ± 0 | 8.1-8.5x |
| ColorJitter | 1221 ± 10 | 169 ± 1 | — | 131 ± 2 | 7.1-7.3x |
| Erasing | 27849 ± 4028 | 1228 ± 8 | — | 4175 ± 10 | 5.7-7.7x |
| UnsharpMask | 3063 ± 37 | — | 478 ± 2 | — | 6.3-6.5x |
| Invert | 31753 ± 1327 | 3718 ± 23 | 5503 ± 17 | 5195 ± 84 | 5.5-6.0x |
| Posterize | 28724 ± 3259 | 1080 ± 67 | 5429 ± 10 | 5162 ± 6 | 4.7-5.9x |
| SmallestMaxSize | 2676 ± 7 | 537 ± 1 | — | — | 5.0-5.0x |
| RandomResizedCrop | 4354 ± 22 | 653 ± 6 | — | 939 ± 23 | 4.5-4.8x |
| LongestMaxSize | 3847 ± 62 | 855 ± 7 | — | — | 4.4-4.6x |
| Perspective | 1185 ± 9 | 214 ± 2 | — | 268 ± 6 | 4.3-4.6x |
| Sharpen | 2221 ± 35 | 434 ± 6 | — | 525 ± 1 | 4.2-4.3x |
| ChannelDropout | 11971 ± 434 | 2878 ± 11 | — | — | 4.0-4.3x |
| Blur | 7544 ± 134 | 745 ± 2 | 1870 ± 13 | — | 3.9-4.1x |
| Snow | 754 ± 4 | 188 ± 0 | — | — | 4.0-4.0x |
| PlasmaBrightness | 394 ± 9 | 115 ± 0 | — | — | 3.3-3.5x |
| Contrast | 10045 ± 119 | 2983 ± 11 | 1055 ± 6 | 1228 ± 4 | 3.3-3.4x |
| Brightness | 9849 ± 99 | 2992 ± 8 | 1340 ± 6 | 1989 ± 9 | 3.2-3.3x |
| Resize | 3542 ± 11 | 677 ± 7 | 1087 ± 9 | 288 ± 2 | 3.2-3.3x |
| GaussianBlur | 2462 ± 11 | 717 ± 11 | 765 ± 3 | 336 ± 4 | 3.2-3.2x |
| CLAHE | 644 ± 5 | 206 ± 1 | — | — | 3.1-3.2x |
| RandomCrop128 | 93574 ± 1964 | 3223 ± 17 | — | 31208 ± 564 | 2.9-3.1x |
| RGBShift | 5025 ± 48 | 1710 ± 15 | — | — | 2.9-3.0x |
| CenterCrop128 | 95346 ± 1281 | 5226 ± 57 | — | 34279 ± 307 | 2.7-2.8x |
| Shear | 1322 ± 7 | 482 ± 4 | 502 ± 2 | — | 2.6-2.7x |
| Solarize | 13505 ± 442 | 695 ± 18 | 5403 ± 13 | 1297 ± 2 | 2.4-2.6x |
| GaussianNoise | 328 ± 20 | 133 ± 1 | — | — | 2.3-2.6x |
| Affine | 1456 ± 23 | 456 ± 2 | 613 ± 1 | 331 ± 7 | 2.3-2.4x |
| PlasmaContrast | 250 ± 6 | 117 ± 0 | — | — | 2.1-2.2x |
| PlasmaShadow | 526 ± 8 | 281 ± 1 | — | — | 1.8-1.9x |
| SaltAndPepper | 946 ± 4 | 510 ± 1 | — | — | 1.8-1.9x |
| OpticalDistortion | 395 ± 4 | 243 ± 1 | — | — | 1.6-1.6x |
| ChannelShuffle | 8235 ± 86 | 1729 ± 3 | — | 5383 ± 12 | 1.5-1.5x |
| CornerIllumination | 866 ± 28 | 596 ± 3 | — | — | 1.4-1.5x |
| Normalize | 1642 ± 26 | 1226 ± 13 | — | 1091 ± 6 | 1.3-1.4x |
| Pad | 34979 ± 3274 | — | 27167 ± 282 | 5072 ± 68 | 1.2-1.4x |
| Rain | 2169 ± 27 | 1725 ± 3 | — | — | 1.2-1.3x |
| ThinPlateSpline | 92 ± 1 | 78 ± 0 | — | — | 1.2-1.2x |
| GaussianIllumination | 773 ± 21 | 680 ± 13 | — | — | 1.1-1.2x |
| PlankianJitter | 3278 ± 13 | 2996 ± 26 | — | — | 1.1-1.1x |
| Saturation | 1389 ± 27 | 216 ± 1 | 1324 ± 6 | — | 1.0-1.1x |
| Colorize | 3858 ± 11 | — | 3697 ± 18 | — | 1.0-1.1x |
| JpegCompression | 1351 ± 11 | 202 ± 2 | 1305 ± 5 | 925 ± 3 | 1.0-1.0x |
| Grayscale | 19593 ± 350 | 1679 ± 16 | 19267 ± 61 | 3409 ± 8 | 1.0-1.0x |
| HorizontalFlip | 13200 ± 430 | 1352 ± 8 | 14680 ± 194 | 1678 ± 15 | 0.9-0.9x |
| Transpose | 8184 ± 199 | — | 11038 ± 172 | — | 0.7-0.8x |
| Rotate | 2996 ± 12 | 442 ± 3 | 4101 ± 119 | 451 ± 9 | 0.7-0.8x |
| AutoContrast | 1619 ± 44 | 739 ± 14 | 2239 ± 3 | 399 ± 2 | 0.7-0.7x |
| VerticalFlip | 29169 ± 2657 | 3409 ± 3 | 41794 ± 189 | 5023 ± 29 | 0.6-0.8x |
| Equalize | 1086 ± 12 | 390 ± 6 | 2204 ± 2 | 946 ± 5 | 0.5-0.5x |
| LinearIllumination | 557 ± 18 | 1195 ± 7 | — | — | 0.4-0.5x |
| Dithering | 6 ± 0 | — | 1426 ± 16 | — | 0.0-0.0x |
Methodology
Test Environment
- Platform
- macOS arm64 (Apple M-series)
- CPU threads
- 1 (forced single-thread)
- Images per run
- 2000
- Runs per transform
- 5
- Last run
- April 29, 2026
Library Versions
- Albumentationsx
- 2.2.5
- Kornia
- 0.8.2
- Pillow
- 12.2.0
- Torchvision
- 0.26.0
- NumPy
- 2.4.4
- OpenCV
- 4.13.0.92
Metric: Median throughput in images/second across 5 runs. Higher is better.
Warmup: Adaptive warmup until variance stabilizes before measurement begins.
Thread control: OMP, OpenBLAS, MKL, and OpenCV threads all forced to 1 to ensure fair single-thread comparison.
Image loading: Each library uses its native format — OpenCV (BGR→RGB) for Albumentationsx, normalized tensors for Kornia, PIL images for Pillow and Torchvision.
Speedup column: Range computed from throughput error bars: speedup_from to speedup_to, where each bound uses median +/- std. Green = 2x+ conservative bound, yellow = 1x-2x, gray = slower.
Want to verify the results on your own hardware or check that the comparison is fair? The benchmark code is open source on GitHub.