Skip to main content

Machine learning framework for building object trackers and similarity search engines

Project description

Similari

Newer versions (renamed):

Rust Rust Rust

PyPI version

Older versions:

Rust Rust Rust

:star: Star us on GitHub — it motivates us a lot!

Similari is a Rust framework with Python bindings that helps build sophisticated tracking systems. With Similari one can develop highly efficient parallelized SORT, DeepSORT, and other sophisticated single observer (e.g. Cam) or multi-observer tracking engines.

Introduction

The primary purpose of Similari is to provide means to build sophisticated in-memory multiple object tracking engines.

The framework helps build various kinds of tracking and similarity search engines - the simplest one that holds vector features and allows comparing new vectors against the ones kept in the database. More sophisticated engines operate over tracks - a series of observations for the same feature collected during the lifecycle. Such systems are often used in video processing or other systems where the observer receives fuzzy or changing observation results.

Out-of-The-Box Stuff

Similari is a framework to build custom trackers, however it provides certain algorithms as an end-user functionality:

Bounding Box Kalman filter, that predicts rectangular bounding boxes axis-aligned to scene, supports the oriented (rotated) bounding boxes as well.

2D Point Kalman filter, that predicts 2D point motion.

2D Point Vector Kalman filter, that predicts the vector of independent 2D points motion (used in the Keypoint Tracker).

Bounding box clipping, that allows calculating the area of intersection for axis-aligned and oriented (rotated) bounding boxes.

Non-Maximum Suppression (NMS) - filters rectangular bounding boxes co-axial to scene, and supports the oriented bounding boxes.

SORT tracking algorithm (axis-aligned and oriented boxes are supported) - IoU and Mahalanobis distances are supported.

Batch SORT tracking algorithm (axis-aligned and oriented boxes are supported) - IoU and Mahalanobis distances are supported. Batch tracker allows passing multiple scenes to tracker in a single batch and get them back. If the platform supports batching (like Nvidia DeepStream or Intel DL Streamer) the batch tracker is more beneficial to use.

VisualSORT tracking - a DeepSORT-like algorithm (axis-aligned and oriented boxes are supported) - IoU and Mahalanobis distances are supported for positional tracking, euclidean, cosine distances are used for visual tracking on feature vectors.

Batch VisualSORT - batched VisualSORT flavor;

Applicability Notes

Although Similari allows building various tracking and similarity engines, there are competitive tools that sometimes may fit better. The section will explain where it is applicable and what alternatives exist.

Similari fits best for the tracking tasks where objects are described by multiple observations for a certain feature class, not a single feature vector. Also, their behavior is dynamic - you remove them from the index or modify them as often as add new ones. This is a very important point - it is less efficient than tools that work with growing or static object spaces.

Fit: track the person across the room: person ReID, age/gender, and face features are collected multiple times during the tracking and used to merge tracks or provide aggregated results at the end of the track;

Not fit: plagiarism database, when a single document is described by a number (or just one) constant ReID vectors, documents are added but not removed. The task is to find the top X most similar documents to a checked.

If your task looks like Not fit, can use Similari, but you're probably looking for HNSW or NMS implementations:

Similari objects support following features:

Track lifecycle - the object is represented by its lifecycle (track) - it appears, evolves, and disappears. During its lifetime object evolves according to its behavioral properties (attributes, and feature observations).

Observations - Similari assumes that an object is observed by an observer entity that collects its features (uniform vectors) and custom observation attributes (like GPS or screen box position)multiple times. Those features are presented by vectors of float numbers and observation attributes. When the observation happened, the track is updated with gathered features. Future observations are used to find similar tracks in the index and merge them.

Track Attributes - Arbitrary attributes describe additional track properties aside from feature observations. Track attributes is crucial part when you are comparing objects in the wild, because there may be attributes disposition when objects are incompatible, like animal_type that prohibits you from comparing dogs and cats between each other. Another popular use of attributes is a spatial or temporal characteristic of an object, e.g. objects that are situated at distant locations at the same time cannot be compared. Attributes in Similari are dynamic and evolve upon every feature observation addition and when objects are merged. They are used in both distance calculations and compatibility guessing (which decreases compute space by skipping incompatible objects).

If you plan to use Similari to search in a large index, consider object attributes to split the lookup space. If the attributes of the two tracks are not compatible, their distance calculations are skipped.

Performance

The Similari is fast. It is usually faster than trackers built with Python and NumPy.

To run visual feature calculations performant the framework uses ultraviolet - the library for fast SIMD computations.

Parallel computations are implemented with index sharding and parallel computations based on a dedicated thread workers pool.

Vector operations performance depends a lot on the optimization level defined for the build. On low or default optimization levels Rust may not use f32 vectorization, so when running benchmarks take care of proper optimization levels configured.

Rust optimizations

Use RUSTFLAGS="-C target-cpu=native" to enable all cpu features like AVX, AVX2, etc. It is beneficial to ultraviolet.

Alternatively you can add build instructions to .cargo/config:

[build]
rustflags = "-C target-cpu=native"

Take a look at benchmarks for numbers.

Performance Benchmarks

Some benchmarks numbers are presented here: Benchmarks

You can run your own benchmarks by:

rustup default nightly
cargo bench

Apple Silicone Build Notes

You may need to add following lines into your ~/.cargo/config to build the code on Apple Silicone:

[build]
rustflags = "-C target-cpu=native"

# Apple Silicone fix
[target.aarch64-apple-darwin]
rustflags = [
    "-C", "link-arg=-undefined",
    "-C", "link-arg=dynamic_lookup",
]

Python API

Python interface exposes ready-to-use functions and classes of Similari. As for now, the Python interface provides:

  • the Kalman filter for axis-aligned and oriented (rotated) boxes prediction;
  • the Kalman filter for 2D point motion prediction;
  • the 2D Point Vector Kalman filter, that predicts the vector of independent 2D points motion (used in the Keypoint Tracker);
  • NMS (Non-maximum suppression);
  • the Sutherland-Hodgman clipping, intersection area for oriented (rotated) boxes;
  • SORT with IoU and Mahalanobis metric;
  • BatchSORT with IoU and Mahalanobis metric;
  • VisualSORT - DeepSORT-like tracker with euclidean/cosine metric for visual features and IoU/Mahalanobis metric for positional tracking (VisualSort).
  • BatchVisualSORT - batched VisualSORT flavor;

Python API classes and functions can be explored in the python documentation and tiny examples provided.

There is also MOTChallenge evaluation kit provided which you can use to simply evaluate trackers performance and metrics.

Install Python API from PyPi

Please, keep in mind that the PyPi package is built to conform broad range of platforms, so it may not be as fast as the one you build locally for your platform (see the following sections).

Platforms:

  • Linux: X86_64, ARM64, ARMv7;
  • Windows: X86_64;
  • MacOS: X86_64, ARM64.
pip3 install similari-trackers-rs

Build Python API in Docker

You can build the wheel in the Docker and if you want to install it in the host system, copy the resulting package to the host system as demonstrated by the following examples.

Rust 1.67 Base Image

If you use other rust libraries you may find it beneficial to build with base Rust container (and Python 3.8):

docker build -t similari-trackers-rs -f docker/rust_1.67/Dockerfile .

# optional: copy and install to host system
docker run --rm -it -v $(pwd)/distfiles:/tmp similari-trackers-rs cp -R /opt/dist /tmp
pip3 install --force-reinstall distfiles/dist/*.whl

Python 3.8 Base Image

Python 3.8 is still a very frequently used. Here is how to build Similari with it:

docker build -t similari-trackers-rs -f docker/python_3.8/Dockerfile .

# optional: copy and install to host system
docker run --rm -it -v $(pwd)/distfiles:/tmp similari-trackers-rs cp -R /opt/dist /tmp
pip3 install --force-reinstall distfiles/dist/*.whl

Python 3.10 Base Image

If you use the most recent Python environment, you can build with base Python container:

docker build -t similari-trackers-rs -f docker/python_3.10/Dockerfile .

# optional: copy and install to host system
docker run --rm -it -v $(pwd)/distfiles:/tmp similari-trackers-rs cp -R /opt/dist /tmp
pip3 install --force-reinstall distfiles/dist/*.whl

NOTE: If you are getting the pip3 error like:

ERROR: similari-trackers-rs-0.26.4-cp38-cp38-manylinux_2_28_x86_64.whl is not a supported wheel on this platform.

It means that the Python version in the host system doesn't match to the one that is in the image used to build the wheel.

Build Python API in Host System

Linux Instruction

  1. Install up-to-date Rust toolkit:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env
rustup update
  1. Install build-essential tools apt install build-essential -y.

  2. Install Python3 (>= 3.8) and the development files (python3-dev).

  3. Install Maturin:

pip3 install --upgrade maturin~=0.15
  1. Not in VENV. Build the python module:
RUSTFLAGS=" -C target-cpu=native -C opt-level=3" maturin build --release --out dist
pip3 install --force-reinstall dist/*.whl
  1. In VENV. Build the python module:
RUSTFLAGS=" -C target-cpu=native -C opt-level=3" maturin develop
  1. Usage examples are located at python.
  2. MOT Challenge Docker image for Similari trackers and conventional trackers is here. You can easily build all-in-one Docker image and try ours trackers.

Manuals and Articles

Collected articles about how the Similari can be used to solve specific problems.

Medium.com

Usage Examples

Take a look at samples in the repo:

Project details


Download files

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

Source Distribution

similari_trackers_rs-0.26.12.tar.gz (171.8 kB view details)

Uploaded Source

Built Distributions

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

similari_trackers_rs-0.26.12-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl (792.4 kB view details)

Uploaded PyPymanylinux: glibc 2.28+ x86-64

similari_trackers_rs-0.26.12-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl (776.9 kB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARM64

similari_trackers_rs-0.26.12-cp313-cp313-win_amd64.whl (625.6 kB view details)

Uploaded CPython 3.13Windows x86-64

similari_trackers_rs-0.26.12-cp313-cp313-macosx_11_0_arm64.whl (715.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

similari_trackers_rs-0.26.12-cp313-cp313-macosx_10_12_x86_64.whl (747.3 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

similari_trackers_rs-0.26.12-cp312-cp312-win_amd64.whl (626.0 kB view details)

Uploaded CPython 3.12Windows x86-64

similari_trackers_rs-0.26.12-cp312-cp312-manylinux_2_28_x86_64.whl (792.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

similari_trackers_rs-0.26.12-cp312-cp312-manylinux_2_28_aarch64.whl (774.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

similari_trackers_rs-0.26.12-cp312-cp312-macosx_11_0_arm64.whl (715.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

similari_trackers_rs-0.26.12-cp312-cp312-macosx_10_12_x86_64.whl (747.6 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

similari_trackers_rs-0.26.12-cp311-cp311-win_amd64.whl (624.7 kB view details)

Uploaded CPython 3.11Windows x86-64

similari_trackers_rs-0.26.12-cp311-cp311-manylinux_2_28_x86_64.whl (791.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

similari_trackers_rs-0.26.12-cp311-cp311-manylinux_2_28_aarch64.whl (776.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

similari_trackers_rs-0.26.12-cp311-cp311-macosx_11_0_arm64.whl (718.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

similari_trackers_rs-0.26.12-cp311-cp311-macosx_10_12_x86_64.whl (749.6 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

similari_trackers_rs-0.26.12-cp310-cp310-win_amd64.whl (624.5 kB view details)

Uploaded CPython 3.10Windows x86-64

similari_trackers_rs-0.26.12-cp310-cp310-manylinux_2_28_x86_64.whl (791.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

similari_trackers_rs-0.26.12-cp310-cp310-manylinux_2_28_aarch64.whl (776.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

similari_trackers_rs-0.26.12-cp310-cp310-macosx_11_0_arm64.whl (718.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

similari_trackers_rs-0.26.12-cp310-cp310-macosx_10_12_x86_64.whl (749.6 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

similari_trackers_rs-0.26.12-cp39-cp39-win_amd64.whl (625.0 kB view details)

Uploaded CPython 3.9Windows x86-64

similari_trackers_rs-0.26.12-cp39-cp39-manylinux_2_28_x86_64.whl (792.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

similari_trackers_rs-0.26.12-cp39-cp39-manylinux_2_28_aarch64.whl (776.9 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

similari_trackers_rs-0.26.12-cp38-cp38-win_amd64.whl (624.9 kB view details)

Uploaded CPython 3.8Windows x86-64

similari_trackers_rs-0.26.12-cp38-cp38-manylinux_2_28_x86_64.whl (792.3 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ x86-64

similari_trackers_rs-0.26.12-cp38-cp38-manylinux_2_28_aarch64.whl (776.9 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ ARM64

File details

Details for the file similari_trackers_rs-0.26.12.tar.gz.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12.tar.gz
Algorithm Hash digest
SHA256 f5e714f36a3068cc05b4e8c9776df48f6f64b088052b6444d572eece89128a15
MD5 44c4183524fb10f60c2011dca7240b81
BLAKE2b-256 b3252046633feeb71a158e6deecf92a3791f323718d9f21d282824359cf68eba

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-pp310-pypy310_pp73-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 700547b54f98127c82e6b591b0d6e8cbf06b5a519a4d5d0b779baae78d252a37
MD5 7f25390fbd406b9d1b1028c8e473422d
BLAKE2b-256 79c9082d28892d12f0c3205321b310e585fa238e286d23e869a166f392043790

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-pp310-pypy310_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0c0971ad3f724edc5cac5912b6c6a5df369dbde5cb9dbcf426e0e966eb7e01fd
MD5 6a2ef8e5f16440c6e6624d0674797c66
BLAKE2b-256 97437f2eaa8181189b5e03b08d7c31d08670c14573c6f9d1fa61872bea4871f0

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8465a854b6762b2e8e29ff56563c781a784413193e07ffbe459b6701a6d124ca
MD5 958ff7ad5d78df172b58c01310f81b83
BLAKE2b-256 fbe42bc9b3ac269a2c1aac6b865777660752a226d6dd3beff3e3430525f4f1b5

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f77686b62a1fa147b67920a87e6f68e2e4a876fbfd2283fb53d74912a5793dff
MD5 653c8a101ed30b09c53288067ca64a06
BLAKE2b-256 832ed571792903efb02a63940247bce012887c74395a5121e14e7867e21b8acc

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7ed6cb810ddb846c9832db7641f5b943158a626fd4a81ee05ebceb93ce9fcc06
MD5 d6c7ee8dec0aa9a0e7c4d06fddc1a411
BLAKE2b-256 c6ec092071c948d080d4a7e57ee5e5bac88ac6e729bd2433369f7e0571166411

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 df61be5a249dacdceb7c5e622714844bb427919868ed000daf64b25e1637c90f
MD5 4e85c231af4a51aec7814a074b636f12
BLAKE2b-256 1b2c602de54ee0d97cd7957d2e18324ecae21ae38418483c171d92d1dbfce5a1

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 549e6fa767463556b1b341c699ee9240db2ca6dc210e8699cd61513850a90376
MD5 16cecff43d854f99796979526635138d
BLAKE2b-256 0d7a20595aadba6dbe0fdb5ffeec234f99eb6dfdd09299ccff171440764be043

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5cb2bbf95b8bd212d912c593939104cab364f2c3ad59f520f0459ef12cb03469
MD5 77729b30061a9617d8178013e544ec53
BLAKE2b-256 36df0c54b276363f97414fafb68722dc929eb21751412aff5f8d126a18a0aa82

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4a3b3cf6dae0f837bfc398cf905964bce7fc57661252d2342b500970e65d91ff
MD5 f86a9a3110b9f3bcd8fb027503d0c4c7
BLAKE2b-256 d11c8117c92bf92eaa0944b6ae10e76725922051bde31891f5a2bf6b05c79bc1

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a3d549d74d5a672c52edb05a42dbe2161399414fd2e55a20ab792d2cf86c0e0e
MD5 7cc804dbaf0f4d66d9560c827b7b5f2f
BLAKE2b-256 ab2923ab57b4ed807992317e44b632312cd67fd67025a6a2540a395bac5f17a6

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 8c5a0952c5df7fb7ab42fd1a10b4b437c489f5a5a8a916023bec5723b663f2da
MD5 43a582f7fd7265e852fd869fad44514c
BLAKE2b-256 685e8934bf53971311285d42e68c838ea49193d84da122d4a3d36396e9826793

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 643c074d15dfc9553cafbaeb69ae4854a19e5e0c94b8fffb917fb2ac9e4e6533
MD5 0eeb874f4d472af47092c2d190cc5a2c
BLAKE2b-256 6f213a42c49ef0300d578930587dc38b3381c19c2fcecc41e97119e336295f10

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e1d1fe94117e8bc56e5022bf7f3b57e1aa768b48ff20c7b9040f989a798dac38
MD5 1600466ecd808f556d5c50fea7c37b28
BLAKE2b-256 34c467b3ad18ee85d74149cb5892b40bbdc588014fd3a255243041de038027c5

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c95e6d1e136491e2da7a0763fd932ea1615051b6b98a6d366144eb1edf3c5c59
MD5 27fd6bd5eb1decb524a4d27000efba2e
BLAKE2b-256 367aa2b3bc403ffed789394985bc02b7d57b5e9bdcc336b4ebc4abbc3cbded93

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c7cd45e6961700096672a87e46f355d0bbe39ea34e7fca23578a931c0f5e5d12
MD5 272578f664adc56bed0e43d47455bfe5
BLAKE2b-256 29b8d9d3cb4888455a54a664aa5f47a6c569cd2b1c034d4861d29028c9e1cd34

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 f8db6a9623d689b933425ea3521d1950a8e1f86ccae560e53ecbd115c77d4036
MD5 931a220885f67a2929c3723c8773007e
BLAKE2b-256 9800d31b1e2ac02c4f770199834854ba5228c7763f241d5fbab0f1aff8b2f71d

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cf589c088de0550f0bb9d64a607fd558625b8b58868af5893cf8d0791ced7fd1
MD5 f4ba0783a2faae45cb7f7a47cadcd2b2
BLAKE2b-256 2de1698e2cd26b475e0050056a471888aa73b522d7cfb7d0e7ab7bb14a3fc580

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ada1125223618b143326dc730322c427e152287979e89e9bd1b29131693c3688
MD5 9b3e720af510e3acfe0fa08dd0a264fc
BLAKE2b-256 bb39e4da25df87c7c8a1af13f6d8861ca81231e66efbb17b6e3f2f0cba17c153

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 44587c1d3369db45ece03dce6ff87c1ef3caf0e355cd1c41365669be233b4b74
MD5 5ce6827095aa99c8447804cdc97988a8
BLAKE2b-256 0e486b8d2c4b4f613d21c036db79f46f0436285c91e474632a64241c9b82d687

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 8a71dd79126ed92aae5805f7ac9679a508f390571fa8bbe5de3ec04752aa09cf
MD5 26de1be69ac2355e849f8a0c6c67a586
BLAKE2b-256 3d466ac22be6dc7bbdea5852eaf55ff387d7d49be24a9d4516942a5749dc91e4

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-cp39-cp39-win_amd64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 f3241756ce1218ee96c7773b4ad535617f1702482a994654e235b11804ad0452
MD5 dbbe99bcd53f345911e97fed3501ab1b
BLAKE2b-256 dc94bcf1cafb1d08e2e5b328e8f4fe78827d06f089c853f91cdb26d6489b165a

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1a47bebdac2488bea0a6c95ac312160d66c96c4bffdc7916e44f8513b2f6aeb1
MD5 0901e51c54f18f0c30b0748f76a3906c
BLAKE2b-256 6c2804f62ab52c895a3a57ce7db6964b1e0bbf8387fb06b4c973c52c0b9aa941

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-cp39-cp39-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4ccde0991c9e9d157de065a3fc6a894934908b996af8e96bfd1c42c773383459
MD5 a3396207311238fff301f89d9cc2f9dc
BLAKE2b-256 d4ab83226fcb72f23614b6f88500dc42974e51d28c30e161f25ce352c827951b

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-cp38-cp38-win_amd64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 9972d6397e7012a82f114080bb25c0ad94d95e6cbc10cb34f12c6891c06d4e42
MD5 e26967514b0b012385ba76ac9ebb45b0
BLAKE2b-256 035d860e94ba6507f88ff30868e596aa549ac7f38d4716e03b57b61aa64ac4d8

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-cp38-cp38-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d7d5837d700038502670d01c726f6558ef9df7a305dd2e664e7ecb65330a327b
MD5 38063f9ff13c1fd5f46655868e81da17
BLAKE2b-256 6133ea00bb8c1f6344ee03e8537ad3755a41326d86b89ae078f49a33a91c24f5

See more details on using hashes here.

File details

Details for the file similari_trackers_rs-0.26.12-cp38-cp38-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for similari_trackers_rs-0.26.12-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cccc3c681937b81114b76e00bfe2f16b9176242020cbb3c59744def0870ad18c
MD5 085bbb276826f378fdb1d3bd323f3823
BLAKE2b-256 a62adfaf64fe08f8a279f5934672b7e77ccf974f0f1f0171d8734f0f5de476ad

See more details on using hashes here.

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