/imread_benchmark

I/O benchmark for different image processing python libraries.

Primary LanguagePythonMIT LicenseMIT

Code style: black CircleCI

I/O benchmark

I/O benchmark for different image processing python libraries.

The code is inspired by the benchmark code of Alex Parinov for the albumentations library.

https://github.com/albu/albumentations/blob/master/benchmark/benchmark.py

The idea is inspired by the work of Roman Soloviov:

https://www.kaggle.com/zfturbo/benchmark-2019-speed-of-image-reading

Installation

sudo apt install libturbojpeg libvips-dev

You can use pip to install imread_benchmark:

pip install imread_benchmark

If you want to get the latest version of the code before it is released on PyPI you can install the library from GitHub:

pip install -U git+https://github.com/ternaus/imread_benchmark

To calculate the I/O speed of your SSD/HDD in Linux

sudo apt-get install hdparm

sudo hdparm -Tt <disk_id>

where disk_id is of the type /dev/sda

As a result you may expect something like:

/dev/sda:
 Timing cached reads:   26114 MB in  1.99 seconds = 13122.03 MB/sec
 Timing buffered disk reads: 1062 MB in  3.00 seconds = 353.70 MB/sec

To run the benchmark

To get the description of all input parameters

imread_benchmark -h
imread_benchmark -d <path to images> \
                 -i <number of images to use> \
                 -r <number of repeats>

Extra options: -p - to print benchmarked libraries versions -s - to shuffle images on every run --show-std - to show standard deviation for measurements

Libraries that are benchmarked:

  • OpenCV
  • pillow-simd (PIL-SIMD)
  • jpeg4py
  • scikit-image (skimage)
  • imageio
  • pyvips