Skip to main content

SMQTK - Core

A light-weight, non-intrusive framework for developing interfaces that have built-in implementation discovery and factory construction from a simple configuration structure.

While anything may make use of this library, this was originally developed as a foundation for a suite of packages that predominantly support AI and Machine Learning use-cases:

  • Scalable data structure interfaces and implementations, with a focus on those relevant for machine learning like descriptors, classifications, and object detections.

  • Interfaces and implementations of machine learning algorithms with a focus on media-based functionality.


Libraries

Some above-mentioned packages supporting AI/ML topics include the following:

  • SMQTK-Dataprovider provides abstractions around data storage and retrieval.

  • SMQTK-Image-IO provides interfaces and implementations around image reading and writing using abstractions defined in SMQTK-Dataprovider.

  • SMQTK-Descriptors provides algorithms and data structures around computing descriptor vectors from different kinds of input data.

  • SMQTK-Classifier provides interfaces and implementations around black-box classification.

  • SMQTK-Detection provides interfaces and support for black-box object detection.

  • SMQTK-Indexing provides interfaces and implementations for efficient, large-scale indexing of descriptor vectors. The sources of such descriptor vectors may come from a multitude of sources, such as hours of video archives. Some provided implementation plugins include Locality-sensitive Hashing (LSH) and FAIR's FAISS library.

  • SMQTK-Relevancy provides interfaces and implementations for ranking datasets using human-in-the-loop feedback. This is a primary component for Interactive Query Refinement (IQR) systems that makes use of human feedback.

  • SMQTK-IQR provides classes and utilities to perform the Interactive Query Refinement (IQR) process. This package also includes a web API exposing the use of these tools as well as an example web UI service to demonstrate the capability. These services are additionally containerized to provide some portability of these services.

These packages are related as follows:

Dependency Graph

This looks a lot like KWIVER! Why use this instead?

KWIVER is another open source package that similarly holds modularity, plugins and configurability at its core.

The SMQTK-* suite of functionality exists separately from KWIVER for a few reasons (for now):

  • History
    • The origins of KWIVER and SMQTK were initiated at roughly the same time and were never resolved into the same thing because...
  • Language
    • KWIVER has historically been predominantly C++ while SMQTK-* is (mostly) pure python. (see note below)
  • Configuration UX
    • SMQTK takes an "add on" approach to configurability: concrete implementations have parameterized constructors and should be usable after construction like a "normal" object. Configuration semantics are derived from introspection of, and explicitly related to, the constructor. KWIVER takes an alternative approach where construction is generally empty and configuration setting is a required separate step via a custom object (ConfigBlock).
  • Pythonic Plugin Support
    • Plugins are exposed via standard package entrypoints.

If I'm using python, does that mean that SMQTK is always the better choice?

At this point, not necessarily. While this used to be true for a number of years due to SMQTK being the toolkit with python support. This is becoming more blurry KWIVER's continuously improving python binding support.

Building Documentation

Documentation is hosted on ReadTheDocs.io here.

You can also build the sphinx documentation locally for the most up-to-date reference:

# Install dependencies
poetry install
# Navigate to the documentation root.
cd docs
# Build the docs.
poetry run make html
# Open in your favorite browser!
firefox _build/html/index.html

Metadata

Release files for smqtk-core 0.21.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for smqtk-core 0.21.0
File Size Uploaded
smqtk_core-0.21.0.tar.gz 19.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for smqtk-core 0.21.0
File Interpreter ABI Platform
smqtk_core-0.21.0-py3-none-any.whl Python 3 none any Details

Total release size: 38.7 kB

Release files / smqtk_core-0.21.0.tar.gz

Download URL smqtk_core-0.21.0.tar.gz
Size 19.6 kB
Tags Source
SHA-256 checksum
How to use checksums
3be63308f2146b16351e5274dac587707ac31d47ef6f4816caceddc6aaa2c83d
BLAKE2b-256 checksum
How to use checksums
caecf6dcd58f999d51627093147aa756ed7c377a1a17acdeed4ef1440d2f9976
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.5 CPython/3.10.19 Linux/6.11.0-1018-azure

Release files / smqtk_core-0.21.0-py3-none-any.whl

Download URL smqtk_core-0.21.0-py3-none-any.whl
Size 19.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
efb94a65fb9efa5106afee3b61c2cf2c5cebcb4004bf190cb1797796343a69de
BLAKE2b-256 checksum
How to use checksums
7f37a1d17a375d2be38a9d271ff0c288ed7b8c0a29460143c4d0be69b861dce4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.8.5 CPython/3.10.19 Linux/6.11.0-1018-azure

Release history Release notifications | RSS feed

This release

0.21.0 This release

2 release files

0.20.0

2 release files

0.19.0

2 release files

0.18.2

2 release files

0.18.1

2 release files

0.18.0

2 release files

0.17.0

2 release files

0.16.0

1 release file

0.15.0

1 release file

0.1.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page