Image Benchmark Results

Single-threaded CPU benchmark comparing image augmentation throughput (images/second). All libraries run under identical conditions on the same machine.

51 of 59
transforms where Albumentationsx is fastest
8.9x
average speedup over nearest competitor
across transforms where Albumentationsx leads
143x
fastest speedup (MedianBlur)
vs next fastest library

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.

3< 0.5×50.5–1×151–2×222–5×85–10×310–50×3> 50×

Results

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)
MedianBlur1546 ± 167 ± 011 ± 0140-147x
RandomGamma14482 ± 424252 ± 455-60x
Elastic453 ± 24 ± 08 ± 053-55x
RandomRotate908652 ± 167464 ± 218-19x
RandomJigsaw9413 ± 136638 ± 214-15x
MotionBlur3847 ± 49322 ± 612-12x
Hue1908 ± 18204 ± 19.2-9.5x
ColorJiggle1208 ± 16107 ± 0133 ± 18.9-9.2x
PhotoMetricDistort1070 ± 19129 ± 08.1-8.5x
ColorJitter1221 ± 10169 ± 1131 ± 27.1-7.3x
Erasing27849 ± 40281228 ± 84175 ± 105.7-7.7x
UnsharpMask3063 ± 37478 ± 26.3-6.5x
Invert31753 ± 13273718 ± 235503 ± 175195 ± 845.5-6.0x
Posterize28724 ± 32591080 ± 675429 ± 105162 ± 64.7-5.9x
SmallestMaxSize2676 ± 7537 ± 15.0-5.0x
RandomResizedCrop4354 ± 22653 ± 6939 ± 234.5-4.8x
LongestMaxSize3847 ± 62855 ± 74.4-4.6x
Perspective1185 ± 9214 ± 2268 ± 64.3-4.6x
Sharpen2221 ± 35434 ± 6525 ± 14.2-4.3x
ChannelDropout11971 ± 4342878 ± 114.0-4.3x
Blur7544 ± 134745 ± 21870 ± 133.9-4.1x
Snow754 ± 4188 ± 04.0-4.0x
PlasmaBrightness394 ± 9115 ± 03.3-3.5x
Contrast10045 ± 1192983 ± 111055 ± 61228 ± 43.3-3.4x
Brightness9849 ± 992992 ± 81340 ± 61989 ± 93.2-3.3x
Resize3542 ± 11677 ± 71087 ± 9288 ± 23.2-3.3x
GaussianBlur2462 ± 11717 ± 11765 ± 3336 ± 43.2-3.2x
CLAHE644 ± 5206 ± 13.1-3.2x
RandomCrop12893574 ± 19643223 ± 1731208 ± 5642.9-3.1x
RGBShift5025 ± 481710 ± 152.9-3.0x
CenterCrop12895346 ± 12815226 ± 5734279 ± 3072.7-2.8x
Shear1322 ± 7482 ± 4502 ± 22.6-2.7x
Solarize13505 ± 442695 ± 185403 ± 131297 ± 22.4-2.6x
GaussianNoise328 ± 20133 ± 12.3-2.6x
Affine1456 ± 23456 ± 2613 ± 1331 ± 72.3-2.4x
PlasmaContrast250 ± 6117 ± 02.1-2.2x
PlasmaShadow526 ± 8281 ± 11.8-1.9x
SaltAndPepper946 ± 4510 ± 11.8-1.9x
OpticalDistortion395 ± 4243 ± 11.6-1.6x
ChannelShuffle8235 ± 861729 ± 35383 ± 121.5-1.5x
CornerIllumination866 ± 28596 ± 31.4-1.5x
Normalize1642 ± 261226 ± 131091 ± 61.3-1.4x
Pad34979 ± 327427167 ± 2825072 ± 681.2-1.4x
Rain2169 ± 271725 ± 31.2-1.3x
ThinPlateSpline92 ± 178 ± 01.2-1.2x
GaussianIllumination773 ± 21680 ± 131.1-1.2x
PlankianJitter3278 ± 132996 ± 261.1-1.1x
Saturation1389 ± 27216 ± 11324 ± 61.0-1.1x
Colorize3858 ± 113697 ± 181.0-1.1x
JpegCompression1351 ± 11202 ± 21305 ± 5925 ± 31.0-1.0x
Grayscale19593 ± 3501679 ± 1619267 ± 613409 ± 81.0-1.0x
HorizontalFlip13200 ± 4301352 ± 814680 ± 1941678 ± 150.9-0.9x
Transpose8184 ± 19911038 ± 1720.7-0.8x
Rotate2996 ± 12442 ± 34101 ± 119451 ± 90.7-0.8x
AutoContrast1619 ± 44739 ± 142239 ± 3399 ± 20.7-0.7x
VerticalFlip29169 ± 26573409 ± 341794 ± 1895023 ± 290.6-0.8x
Equalize1086 ± 12390 ± 62204 ± 2946 ± 50.5-0.5x
LinearIllumination557 ± 181195 ± 70.4-0.5x
Dithering6 ± 01426 ± 160.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.