Multichannel Image Benchmark Results

Single-threaded CPU benchmark for 9-channel image augmentation. Tests how well each library handles non-standard channel counts — common in satellite imagery, medical imaging, and scientific data.

Why multichannel matters

Standard image libraries are optimized for 3-channel RGB. Many real-world applications use more channels: satellite imagery (RGB + NIR + thermal), hyperspectral cameras, medical scans (CT slices as channels), and custom sensor fusion. This benchmark uses 9-channel images to test how each library handles arbitrary channel counts on a single CPU thread.

30 of 42
transforms where Albumentationsx is fastest
7.9x
average speedup over nearest competitor
across transforms where Albumentationsx leads
57x
fastest speedup (RandomGamma)
vs next fastest library

Pairwise Summary

Generated automatically from benchmark JSON at build time (median speedup midpoint with IQR).

Albumentationsx vs Kornia

Wins: 33 / 41 · Median: 2.47x · IQR: 1.21x-8.79x

Albumentationsx vs Torchvision

Wins: 15 / 23 · Median: 1.59x · IQR: 0.65x-3.40x

Speedup Distribution

How many transforms fall into each speedup range (Albumentationsx vs best competitor). 42 transforms with head-to-head comparison.

5< 0.5×70.5–1×91–2×122–5×45–10×410–50×1> 50×

Results

TransformSpeedup
Albx / best
albumentationsx
2.2.6
kornia
0.8.2
torchvision
0.26.0
RandomGamma50-64x5465 ± 67297 ± 0
MedianBlur≥41x419 ± 5≤10
Elastic≥33x335 ± 3≤10≤10
RandomJigsaw18-19x5609 ± 44302 ± 2
MotionBlur10-11x1342 ± 65126 ± 0
Solarize9.0-11x5615 ± 502503 ± 1567 ± 2
Blur8.4-9.1x2567 ± 100292 ± 0
Rotate7.0-7.3x1772 ± 31249 ± 1246 ± 2
RandomRotate905.6-5.9x1478 ± 24259 ± 2
PlasmaBrightness3.7-3.9x151 ± 340 ± 0
Perspective3.3-3.5x602 ± 17172 ± 0176 ± 0
Erasing2.4-4.0x19946 ± 4338593 ± 16362 ± 227
RandomResizedCrop2.9-3.0x986 ± 22335 ± 2335 ± 2
Sharpen2.6-2.8x770 ± 11202 ± 1286 ± 4
GaussianBlur2.6-2.7x802 ± 12299 ± 0121 ± 1
Affine2.5-2.6x670 ± 11260 ± 0198 ± 2
ChannelDropout2.2-2.7x9472 ± 9593840 ± 4
SmallestMaxSize2.3-2.5x603 ± 18250 ± 1
Shear2.2x662 ± 7300 ± 0
LongestMaxSize2.1x858 ± 16410 ± 0
PlasmaContrast2.0x85 ± 042 ± 0
RandomCrop1281.4-1.8x47302 ± 23842929 ± 8829917 ± 1842
GaussianNoise1.5-1.6x109 ± 372 ± 0
OpticalDistortion1.5x290 ± 7193 ± 0
ChannelShuffle1.3-1.5x2641 ± 1061411 ± 21892 ± 6
CenterCrop1281.4x51003 ± 2174628 ± 2136610 ± 143
ThinPlateSpline1.2x85 ± 170 ± 0
Contrast1.0-1.1x3052 ± 992898 ± 4572 ± 4
Brightness0.9-1.1x3013 ± 2842906 ± 6985 ± 3
Posterize0.8-1.3x23588 ± 5135487 ± 923074 ± 276
CornerIllumination0.9-1.0x289 ± 16302 ± 0
PlasmaShadow0.9x253 ± 4288 ± 2
GaussianIllumination0.8x295 ± 9362 ± 1
Invert0.5-0.8x16207 ± 33885325 ± 2823672 ± 108
JpegCompression0.6x160 ± 073 ± 0258 ± 1
AutoContrast0.5-0.6x437 ± 15540 ± 1780 ± 2
Pad0.5x8066 ± 8815071 ± 103
VerticalFlip0.3-0.6x9190 ± 29413810 ± 1419143 ± 130
Normalize0.4-0.5x1311 ± 542957 ± 41375 ± 1
Grayscale0.3x392 ± 31241 ± 51491 ± 7
LinearIllumination0.2x206 ± 31009 ± 3
HorizontalFlip0.1-0.2x2630 ± 734069 ± 918238 ± 318

Methodology

Test Environment

Platform
macOS arm64 (Apple M-series)
CPU threads
1 (forced single-thread)
Image channels
9
Images per run
2000
Runs per transform
5
Last run
April 29, 2026

Library Versions

Albumentationsx
2.2.6
Kornia
0.8.2
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.

Channel handling: All libraries process the same9-channel uint8 images. Libraries that don't support arbitrary channel counts show for those transforms.

Thread control: OMP, OpenBLAS, MKL, and OpenCV threads all forced to 1 to ensure fair single-thread comparison.

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.