Skip to main content

Parallel multiradial LBP features

Project description

fastLBP

Highly parallel LBP implementation

Important pre-release warning: If aborted mid-execution, this software sometimes create a lot of orphan processes that needs to be killed manually. Please, note down the name of your python script, search for Python in your task manager and look for the processes that correspond to your python script.

Requirements

FastLBP is tested with Python 3.11 on Windows 10, Debian 11, and Ubuntu 22.04

Python requirements are:

  • numpy >= 1.26.0
  • Cython (to build the binary modules, will be optional in the future)
  • scikit-image >= 0.22.0 (mostly for testing, we plan making this requirement optional in the future)
  • pandas >= 2.1.1
  • psutil

Installation

  • Activate or create a Python 3.11 environment (e.g. using conda create -y -n p11 python=3.11 && conda activate p11)
  • Verify you are using the right env
    • python --version and pip --version
  • Install a stable version from PyPI
    pip install fastlbp
  • Or build the latest version from sources
    git clone git@github.com:imbg-ua/fastLBP.git
    cd fastLBP
    # git checkout <branchname> # if you need a specific branch
    pip install . # this will install the fastlbp package in the current env
    
  • You can use import fastlbp as fastlbp now

GPU (CUDA) optional install

  • CPU-only install (default):
    pip install fastlbp
    
  • GPU build (opt-in): ensure CUDA is discoverable by setting CUDA_HOME (or having nvcc on PATH) and install the extra:
    export CUDA_HOME=/usr/local/cuda  # adjust to your CUDA install
    pip install fastlbp
    
  • To hard-require CUDA and fail if not found, set:
    FORCE_CUDA=1 pip install fastlbp
    

If CUDA isn’t detected, the build will proceed with CPU-only features. At runtime, you can check availability:

import fastlbp
fastlbp.fastlbp.is_cuda_available()  # -> True/False

Testing

# in repo root
conda activate fastlbp
pip install -e .
python -m unittest

Bug reporting

You can report a bug or suggest an improvement using our github issues

Implemented modules

run_fastlbp

Computes multiradial LBP of a single multichannel image in a parallel fashion.

Features:

  • Powered by fastlbp.lbp, our implementation of skimage.feature.local_binary_pattern
  • Concurrency is managed by Python's multiprocessing module
  • Parallel computation via multiprocessing.Pool of size ncpus
  • Efficient memory usage via multiprocessing.shared_memory to make sure processes do not create redundant copies of data
  • If save_intermediate_results=False then computes everything in RAM, no filesystem usage

TODO:

  • Use max_ram parameter to estimate optimal number of sub-processes and collect memory stats. Now max_ram is ignored.

Planned modules

run_chunked_skimage

Similar to 1. run_fastlbp, but each subprocess should compute LBP for its image chunk, not the whole image.

run_dask and run_chunked_dask

Similar to 1. run_fastlbp, but use Dask and dask.array.map_overlap for parallelisation instead of multiprocessing and manual data wrangling

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

fastlbp-0.3.1-cp313-cp313-manylinux_2_39_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.39+ x86-64

fastlbp-0.3.1-cp312-cp312-manylinux_2_39_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.39+ x86-64

fastlbp-0.3.1-cp311-cp311-manylinux_2_39_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.39+ x86-64

File details

Details for the file fastlbp-0.3.1-cp313-cp313-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for fastlbp-0.3.1-cp313-cp313-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 827c6bcbe4ec587eed4b54b16a5a6e1e85d98df296b07a9cf38cbdef05c387ec
MD5 e717519c488e37b042268d360a6a59ad
BLAKE2b-256 1d2a9633c68b9daf34d5190202f806ee5b7d5237a31773906389d75b684dfa9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastlbp-0.3.1-cp313-cp313-manylinux_2_39_x86_64.whl:

Publisher: publish-to-pypi.yaml on imbg-ua/fastLBP

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastlbp-0.3.1-cp312-cp312-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for fastlbp-0.3.1-cp312-cp312-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 3d66439824c45ee001fdf9e4e4e2e54e5a847eee6adc14422beb547e34762652
MD5 1b2900540aedf6b8a63c3d30557a947e
BLAKE2b-256 9a69d33c7f40e8ac2269606d34e00f6aea52d2629a209ea42b66cb32dd9042d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastlbp-0.3.1-cp312-cp312-manylinux_2_39_x86_64.whl:

Publisher: publish-to-pypi.yaml on imbg-ua/fastLBP

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastlbp-0.3.1-cp311-cp311-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for fastlbp-0.3.1-cp311-cp311-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 b7089c36f941c86e9172e59464eceb8e837090629f653c002ddfdfc9de6beee9
MD5 9a61b5523f6479012b8dbbb186c5136b
BLAKE2b-256 c0e95ac392818b720a22f4fd40247c2681a78ec876028175b04e58bde37eb634

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastlbp-0.3.1-cp311-cp311-manylinux_2_39_x86_64.whl:

Publisher: publish-to-pypi.yaml on imbg-ua/fastLBP

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page