Skip to main content

AI driven heart monitoring kit for ultra low-power wearables.

Project description

HeartKit


Documentation: https://ambiqai.github.io/heartkit

Source Code: https://github.com/AmbiqAI/heartkit


HeartKit is an AI Development Kit (ADK) that enables developers to easily train and deploy real-time heart-monitoring models onto Ambiq's family of ultra-low power SoCs. The kit provides a variety of datasets, efficient model architectures, and heart-related tasks. In addition, HeartKit provides optimization and deployment routines to generate efficient inference models. Finally, the kit includes a number of pre-trained models and task-level demos to showcase the capabilities.

Key Features:

  • Real-time: Inference is performed in real-time on battery-powered, edge devices.
  • Efficient: Leverage Ambiq's ultra low-power SoCs for extreme energy efficiency.
  • Extensible: Easily add new tasks, models, and datasets to the framework.
  • Open Source: HeartKit is open source and available on GitHub.

Requirements

The following are also required to compile/flash the binary for the EVB demo:

!!! note A VSCode Dev Container is also available and defined in ./.devcontainer.

Installation

To get started, first install the local python package heartkit along with its dependencies via Poetry:

$ poetry install

Usage

HeartKit can be used as either a CLI-based tool or as a Python package to perform advanced development. In both forms, HeartKit exposes a number of modes and tasks outlined below. In addition, by leveraging highly-customizable configurations, HeartKit can be used to create custom workflows for a given application with minimal coding. Refer to the Quickstart to quickly get up and running in minutes.


Modes

HeartKit provides a number of modes that can be invoked for a given task. These modes can be accessed via the CLI or directly from the task within the Python package.

  • Download: Download specified datasets
  • Train: Train a model for specified task and datasets
  • Evaluate: Evaluate a model for specified task and datasets
  • Export: Export a trained model to TensorFlow Lite and TFLM
  • Demo: Run task-level demo on PC or remotely on Ambiq EVB

Task Factory

HeartKit includes a number of built-in tasks. Each task provides reference routines for training, evaluating, and exporting the model. The routines can be customized by providing a configuration file or by setting the parameters directly in the code. Additional tasks can be easily added to the HeartKit framework by creating a new task class and registering it to the task factory.

  • Denoise: Denoise ECG signal
  • Segmentation: Perform ECG based segmentation (P-Wave, QRS, T-Wave)
  • Rhythm: Heart rhythm detection (AFIB, AFL)
  • Beat: Classify individual beats (NORM, PAC, PVC)
  • BYOT: Bring-Your-Own-Task (BYOT) to create custom tasks

Model Factory

HeartKit provides a model factory that allows you to easily create and train customized models. The model factory includes a number of modern networks well suited for efficient, real-time edge applications. Each model architecture exposes a number of high-level parameters that can be used to customize the network for a given application. These parameters can be set as part of the configuration accessible via the CLI and Python package.


Sensing Modalities

The two primary sensing modalities to monitor cardiac cycles are electrocardiograph (ECG) and photoplethysmography (PPG). Since HeartKit is targeted for low-power, wearable applications we focus on either single-lead ECG and/or 1-2 channels of PPG that can be easily captured on wrist, ear, or chest. The following table provides a comparison of the two modalities:

Modality ECG PPG
Description Electrical activity of heart Blood volume changes in tissue
Location Chest, Wrist, Ear Wrist, Ear
Channels 1-3 1-2
SNR High Low
Noise Low High
Fidelity High Low
Power High Low
Contact Yes No

Dataset Factory

HeartKit exposes several open-source datasets for training each of the HeartKit tasks via a dataset factory. For certain tasks, we also provide synthetic data provided by PhysioKit to help improve model generalization. Each dataset has a corresponding Python class to aid in downloading and generating data for the given task. Additional datasets can be easily added to the HeartKit framework by creating a new dataset class and registering it to the dataset factory.

  • Icentia11k: 11-lead ECG data collected from 11,000 subjects captured continously over two weeks.
  • LUDB: 200 ten-second 12-lead ECG records w/ annotated P-wave, QRS, and T-wave boundaries.
  • QTDB: 100+ fifteen-minute two-lead ECG recordings w/ annotated P-wave, QRS, and T-wave boundaries.
  • PTB-XL: 10-second, 12-lead ECG dataset collected from 18,885 subjects w/ 72 different diagnostic classes.
  • Synthetic: A synthetic dataset generator from PhysioKit.
  • BYOD: Bring-Your-Own-Dataset (BYOD) to add additional datasets.

Model Zoo

A number of pre-trained models are available for each task. These models are trained on a variety of datasets and are optimized for deployment on Ambiq's ultra-low power SoCs. In addition to providing links to download the models, HeartKit provides the corresponding configuration files and performance metrics. The configuration files allow you to easily retrain the models or use them as a starting point for a custom model. Furthermore, the performance metrics provide insights into the model's accuracy, precision, recall, and F1 score. For a number of the models, we provide experimental and ablation studies to showcase the impact of various design choices. Check out the Model Zoo to learn more about the available models and their corresponding performance metrics.


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

heartkit-1.2.0.tar.gz (5.8 MB view details)

Uploaded Source

Built Distribution

heartkit-1.2.0-py3-none-any.whl (5.8 MB view details)

Uploaded Python 3

File details

Details for the file heartkit-1.2.0.tar.gz.

File metadata

  • Download URL: heartkit-1.2.0.tar.gz
  • Upload date:
  • Size: 5.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for heartkit-1.2.0.tar.gz
Algorithm Hash digest
SHA256 e63933e99ae3b824f08e3f4fb7763d283eb7792f21e0032f84d765004bfc8fdd
MD5 381bcec7e98dfce644b89022f9c9f3bf
BLAKE2b-256 d9685b4b13cef6d323f30c34b035fe78d30da9a9e966258a0df865cf9fc3e2e0

See more details on using hashes here.

File details

Details for the file heartkit-1.2.0-py3-none-any.whl.

File metadata

  • Download URL: heartkit-1.2.0-py3-none-any.whl
  • Upload date:
  • Size: 5.8 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.3

File hashes

Hashes for heartkit-1.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b11d7bb2674819f6c9b935e9a54697517071793ca56256085481b130420689b8
MD5 367b3c4df0246586231237c862ff6291
BLAKE2b-256 924f6fa145ae5d14ec56c67590150ae1e5a2476b8d51e3c239f88591dae21d62

See more details on using hashes here.

Supported by

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