smqtk-core


Namesmqtk-core JSON
Version 0.19.0 PyPI version JSON
download
home_pagehttps://github.com/Kitware/SMQTK-Core
SummaryPython toolkit for pluggable algorithms and data structures for multimedia-based machine learning.
upload_time2022-09-16 21:06:53
maintainer
docs_urlNone
authorKitware, Inc.
requires_python>=3.7,<4.0
licenseBSD-3-Clause
keywords
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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)](https://en.wikipedia.org/wiki/Locality-sensitive_hashing) 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](docs/images/dep_block.svg)

## 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](
https://smqtk-core.readthedocs.io/en/stable/).

You can also build the sphinx documentation locally for the most up-to-date
reference:
```bash
# 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
```


[FAISS]: https://github.com/facebookresearch/faiss
[KWIVER]: https://github.com/kitware/kwiver
[SMQTK-Dataprovider]: https://github.com/Kitware/SMQTK-Dataprovider
[SMQTK-Image-IO]: https://github.com/Kitware/SMQTK-Image-IO
[SMQTK-Descriptors]: https://github.com/Kitware/SMQTK-Descriptors
[SMQTK-Classifier]: https://github.com/Kitware/SMQTK-Classifier
[SMQTK-Detection]: https://github.com/Kitware/SMQTK-Detection
[SMQTK-Indexing]: https://github.com/Kitware/SMQTK-Indexing
[SMQTK-Relevancy]: https://github.com/Kitware/SMQTK-Relevancy
[SMQTK-IQR]: https://github.com/Kitware/SMQTK-IQR

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/Kitware/SMQTK-Core",
    "name": "smqtk-core",
    "maintainer": "",
    "docs_url": null,
    "requires_python": ">=3.7,<4.0",
    "maintainer_email": "",
    "keywords": "",
    "author": "Kitware, Inc.",
    "author_email": "smqtk-developers@kitware.com",
    "download_url": "https://files.pythonhosted.org/packages/f4/86/50ba20dee6b83ef8f49d704bc2a799919de6193b5b4e5b9b2c54ba427a02/smqtk-core-0.19.0.tar.gz",
    "platform": null,
    "description": "# SMQTK - Core\n\nA light-weight, non-intrusive framework for developing interfaces that have\nbuilt-in implementation discovery and factory construction from a simple\nconfiguration structure.\n\nWhile anything may make use of this library, this was originally developed\nas a foundation for a suite of packages that predominantly support **AI** and\n**Machine Learning** use-cases:\n\n* Scalable data structure interfaces and implementations, with a focus on those\n  relevant for machine learning like descriptors, classifications, and object\n  detections.\n\n* Interfaces and implementations of machine learning algorithms with a focus on\n  media-based functionality.\n****\n## Libraries\nSome above-mentioned packages supporting AI/ML topics include the following:\n\n* [SMQTK-Dataprovider] provides\n  abstractions around data storage and retrieval.\n\n* [SMQTK-Image-IO] provides\n  interfaces and implementations around image reading and writing using\n  abstractions defined in [SMQTK-Dataprovider].\n\n* [SMQTK-Descriptors] provides\n  algorithms and data structures around computing descriptor vectors from\n  different kinds of input data.\n\n* [SMQTK-Classifier] provides\n  interfaces and implementations around black-box classification.\n\n* [SMQTK-Detection] provides interfaces and support for black-box object\n  detection.\n\n* [SMQTK-Indexing] provides\n  interfaces and implementations for efficient, large-scale indexing of\n  descriptor vectors.\n  The sources of such descriptor vectors may come from a multitude of sources,\n  such as hours of video archives.\n  Some provided implementation plugins include [Locality-sensitive Hashing\n  (LSH)](https://en.wikipedia.org/wiki/Locality-sensitive_hashing) and FAIR's\n  [FAISS] library.\n\n* [SMQTK-Relevancy] provides\n  interfaces and implementations for ranking datasets using human-in-the-loop\n  feedback.\n  This is a primary component for Interactive Query Refinement (IQR) systems\n  that makes use of human feedback.\n\n* [SMQTK-IQR] provides classes and utilities to perform the Interactive Query\n  Refinement (IQR) process. This package also includes a web API exposing the\n  use of these tools as well as an example web UI service to demonstrate the\n  capability. These services are additionally containerized to provide some\n  portability of these services.\n\nThese packages are related as follows:\n\n![Dependency Graph](docs/images/dep_block.svg)\n\n## This looks a lot like KWIVER! Why use this instead?\n[KWIVER] is another open source package that similarly holds modularity,\nplugins and configurability at its core.\n\nThe SMQTK-* suite of functionality exists separately from KWIVER for a few\nreasons (for now):\n* History\n  * The origins of KWIVER and SMQTK were initiated at roughly the same\n    time and were never resolved into the same thing because...\n* Language\n  * KWIVER has historically been predominantly C++ while SMQTK-* is (mostly)\n    pure python. (see note below)\n* Configuration UX\n  * SMQTK takes an \"add on\" approach to configurability: concrete\n    implementations have parameterized constructors and should be usable after\n    construction like a \"normal\" object.\n    Configuration semantics are derived from introspection of, and explicitly\n    related to, the constructor.\n    KWIVER takes an alternative approach where construction is generally empty\n    and configuration setting is a required separate step via a custom object\n    (`ConfigBlock`).\n* Pythonic Plugin Support\n  * Plugins are exposed via standard package entrypoints.\n\n> If I'm using python, does that mean that SMQTK is __*always*__ the better\n> choice?\n\nAt this point, not necessarily.\nWhile this used to be true for a number of years due to SMQTK being the toolkit\nwith python support.\nThis is becoming more blurry KWIVER's continuously improving python binding\nsupport.\n\n## Building Documentation\nDocumentation is [hosted on ReadTheDocs.io here](\nhttps://smqtk-core.readthedocs.io/en/stable/).\n\nYou can also build the sphinx documentation locally for the most up-to-date\nreference:\n```bash\n# Install dependencies\npoetry install\n# Navigate to the documentation root.\ncd docs\n# Build the docs.\npoetry run make html\n# Open in your favorite browser!\nfirefox _build/html/index.html\n```\n\n\n[FAISS]: https://github.com/facebookresearch/faiss\n[KWIVER]: https://github.com/kitware/kwiver\n[SMQTK-Dataprovider]: https://github.com/Kitware/SMQTK-Dataprovider\n[SMQTK-Image-IO]: https://github.com/Kitware/SMQTK-Image-IO\n[SMQTK-Descriptors]: https://github.com/Kitware/SMQTK-Descriptors\n[SMQTK-Classifier]: https://github.com/Kitware/SMQTK-Classifier\n[SMQTK-Detection]: https://github.com/Kitware/SMQTK-Detection\n[SMQTK-Indexing]: https://github.com/Kitware/SMQTK-Indexing\n[SMQTK-Relevancy]: https://github.com/Kitware/SMQTK-Relevancy\n[SMQTK-IQR]: https://github.com/Kitware/SMQTK-IQR\n",
    "bugtrack_url": null,
    "license": "BSD-3-Clause",
    "summary": "Python toolkit for pluggable algorithms and data structures for multimedia-based machine learning.",
    "version": "0.19.0",
    "split_keywords": [],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "md5": "ef30b3757afaa7ac1c39f096ca0df1e8",
                "sha256": "48903c5efa9b6f4fb051f025e19cac03d2a49268a0ee87c7b3a1dfb2252de1e7"
            },
            "downloads": -1,
            "filename": "smqtk_core-0.19.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "ef30b3757afaa7ac1c39f096ca0df1e8",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7,<4.0",
            "size": 18587,
            "upload_time": "2022-09-16T21:06:54",
            "upload_time_iso_8601": "2022-09-16T21:06:54.434035Z",
            "url": "https://files.pythonhosted.org/packages/63/1b/6c970876a278bc534ea24b4d9c671b103bde684b4cc3d8cb38713ee88079/smqtk_core-0.19.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "md5": "d81efd49dbb506399befb067927ee81e",
                "sha256": "0df2604818eeb0d2fb7bb45c0121231b07fb1d065d7ed9ccb04c21c6822a8ede"
            },
            "downloads": -1,
            "filename": "smqtk-core-0.19.0.tar.gz",
            "has_sig": false,
            "md5_digest": "d81efd49dbb506399befb067927ee81e",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7,<4.0",
            "size": 19901,
            "upload_time": "2022-09-16T21:06:53",
            "upload_time_iso_8601": "2022-09-16T21:06:53.374448Z",
            "url": "https://files.pythonhosted.org/packages/f4/86/50ba20dee6b83ef8f49d704bc2a799919de6193b5b4e5b9b2c54ba427a02/smqtk-core-0.19.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2022-09-16 21:06:53",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": "Kitware",
    "github_project": "SMQTK-Core",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "smqtk-core"
}
        
Elapsed time: 0.04185s