Skip to main content

DaisyKit Python

https://pypi.org/project/daisykit/

Deploy AI Systems Yourself (DAISY) Kit. DaisyKit Python is the wrapper of DaisyKit SDK, an AI framework focusing on the ease of deployment. This package only supports Ubuntu Linux - Python 3 now. We will add support for other platforms and models in the future.

Install and run example

Install dependencies. Below commands are for Ubuntu. You can try other installation methods based on your OS.

sudo apt install pybind11-dev # Pybind11 - For Python/C++ Wrapper
sudo apt install libopencv-dev # For OpenCV
sudo apt install libvulkan-dev # Optional - For GPU support

Install DaisyKit

pip3 install --upgrade pip # Ensure pip is updated
pip3 install daisykit

Face Detection with mask recognition:

import cv2
import json
from daisykit.utils import get_asset_file
import daisykit

config = {
    "face_detection_model": {
        "model": get_asset_file("models/face_detection/yolo_fastest_with_mask/yolo-fastest-opt.param"),
        "weights": get_asset_file("models/face_detection/yolo_fastest_with_mask/yolo-fastest-opt.bin"),
        "input_width": 320,
        "input_height": 320,
        "score_threshold": 0.7,
        "iou_threshold": 0.5,
        "use_gpu": False
    },
    "with_landmark": True,
    "facial_landmark_model": {
        "model": get_asset_file("models/facial_landmark/pfld-sim.param"),
        "weights": get_asset_file("models/facial_landmark/pfld-sim.bin"),
        "input_width": 112,
        "input_height": 112,
        "use_gpu": False
    }
}

face_detector_flow = daisykit.FaceDetectorFlow(json.dumps(config))

# Open video stream from webcam
vid = cv2.VideoCapture(0)

while(True):

    # Capture the video frame
    ret, frame = vid.read()

    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

    faces = face_detector_flow.Process(frame)
    # for face in faces:
    #     print([face.x, face.y, face.w, face.h,
    #           face.confidence, face.wearing_mask_prob])
    face_detector_flow.DrawResult(frame, faces)

    frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)

    # Display the resulting frame
    cv2.imshow('frame', frame)

    # The 'q' button is set as the
    # quitting button you may use any
    # desired button of your choice
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# After the loop release the cap object
vid.release()
# Destroy all the windows
cv2.destroyAllWindows()

Background Matting:

import cv2
import json
from daisykit.utils import get_asset_file
from daisykit import BackgroundMattingFlow

config = {
    "background_matting_model": {
        "model": get_asset_file("models/background_matting/erd/erdnet.param"),
        "weights": get_asset_file("models/background_matting/erd/erdnet.bin")
    }
}

# Load background
default_bg_file = get_asset_file("images/background.jpg")
background = cv2.imread(default_bg_file)
background = cv2.cvtColor(background, cv2.COLOR_BGR2RGB)

background_matting_flow = BackgroundMattingFlow(json.dumps(config), background)

# Open video stream from webcam
vid = cv2.VideoCapture(0)

while(True):

    # Capture the video frame
    ret, frame = vid.read()

    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

    mask = background_matting_flow.Process(frame)
    background_matting_flow.DrawResult(frame, mask)

    frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)

    # Display the resulting frame
    cv2.imshow('frame', frame)

    # The 'q' button is set as the
    # quitting button you may use any
    # desired button of your choice
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# After the loop release the cap object
vid.release()
# Destroy all the windows
cv2.destroyAllWindows()

Human Pose Detection:

import cv2
import json
from daisykit.utils import get_asset_file
from daisykit import HumanPoseMoveNetFlow

config = {
  "person_detection_model": {
    "model": get_asset_file("models/human_detection/ssd_mobilenetv2.param"),
    "weights": get_asset_file("models/human_detection/ssd_mobilenetv2.bin")
  },
  "human_pose_model": {
    "model": get_asset_file("models/human_pose_detection/movenet/lightning.param"),
    "weights": get_asset_file("models/human_pose_detection/movenet/lightning.bin"),
    "input_width": 192,
    "input_height": 192
  }
}

human_pose_flow = HumanPoseMoveNetFlow(json.dumps(config))

# Open video stream from webcam
vid = cv2.VideoCapture(0)

while(True):

    # Capture the video frame
    ret, frame = vid.read()

    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

    poses = human_pose_flow.Process(frame)
    human_pose_flow.DrawResult(frame, poses)

    print(poses)

    frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)

    # Display the resulting frame
    cv2.imshow('frame', frame)

    # The 'q' button is set as the
    # quitting button you may use any
    # desired button of your choice
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# After the loop release the cap object
vid.release()
# Destroy all the windows
cv2.destroyAllWindows()

Barcode Detection:

import cv2
import json
from daisykit.utils import get_asset_file
from daisykit import BarcodeScannerFlow

config = {
  "try_harder": True,
  "try_rotate": True
}

barcode_scanner_flow = BarcodeScannerFlow(json.dumps(config))

# Open video stream from webcam
vid = cv2.VideoCapture(0)

while(True):

    # Capture the video frame
    ret, frame = vid.read()

    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

    result = barcode_scanner_flow.Process(frame, draw=True)

    frame = cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)

    # Display the resulting frame
    cv2.imshow('frame', frame)

    # The 'q' button is set as the
    # quitting button you may use any
    # desired button of your choice
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# After the loop release the cap object
vid.release()
# Destroy all the windows
cv2.destroyAllWindows()

Build Python package

Build environment: Ubuntu.

sudo apt install ninja-build
python3 -m pip install --user --upgrade twine

Build package:

python3 setup.py sdist

or

bash scripts/build_python.sh

Upload to Pypi (for DaisyKit authors only)

twine upload dist/*

TODO

  • Multiplatform build.

Metadata

Release files for daisykit 0.1.20211116

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

Source distribution (sdist)

Source distribution for daisykit 0.1.20211116
File Size Uploaded
daisykit-0.1.20211116.tar.gz 15.4 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for daisykit 0.1.20211116
File
daisykit-0.1.20211116-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
daisykit-0.1.20211116-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
daisykit-0.1.20211116-cp37-cp37m-win_amd64.whl CPython 3.7 CPython 3.7 pymalloc Windows x86-64 Details
daisykit-0.1.20211116-cp36-cp36m-win_amd64.whl CPython 3.6 CPython 3.6 pymalloc Windows x86-64 Details
daisykit-0.1.20211116-cp35-cp35m-win_amd64.whl CPython 3.5 CPython 3.5 pymalloc Windows x86-64 Details

Total release size: 135.1 MB

Release files / daisykit-0.1.20211116.tar.gz

Download URL daisykit-0.1.20211116.tar.gz
Size 15.4 MB
Tags Source
SHA-256 checksum
How to use checksums
2d6f564187a67ad922777379adc86903b5f3dc9edbaf4d500fb8a69bb4dee986
BLAKE2b-256 checksum
How to use checksums
a7b2a82805e7100ff2ae6b3b4463f0850af56c328f33e160cb6cc324653cee40
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.5

Release files / daisykit-0.1.20211116-cp310-cp310-win_amd64.whl

Download URL daisykit-0.1.20211116-cp310-cp310-win_amd64.whl
Size 23.9 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
7b171649413ae1fc3c2802c7726f55ca2a3ed4572fb30b279ec8b24ec7b8e5a1
BLAKE2b-256 checksum
How to use checksums
cf6a4807d3ae1ea946b8ee7fc444859e5270cfc43a1e59b24f3dfb968e1847e6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.5

Release files / daisykit-0.1.20211116-cp39-cp39-win_amd64.whl

Download URL daisykit-0.1.20211116-cp39-cp39-win_amd64.whl
Size 23.9 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
6c9f0f5243a9d8b9a0dd7b0901b595a393e6cc77776cf08358e30646c46dccb7
BLAKE2b-256 checksum
How to use checksums
55715ba0f5c7049a5ac6678d2a9c6db17f50f9294f45a7fcc954ab7057b98f77
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.5

Release files / daisykit-0.1.20211116-cp37-cp37m-win_amd64.whl

Download URL daisykit-0.1.20211116-cp37-cp37m-win_amd64.whl
Size 23.9 MB
Tags CPython 3.7 CPython 3.7 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
49abe01308beee7d61fdb7fc2c688acc27a96123f71b1078d81d8dc05852e568
BLAKE2b-256 checksum
How to use checksums
eb16ed02dd873a0017facfaca9bb111d04e51bbfb2f9636865cf14e56e34d91a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.5

Release files / daisykit-0.1.20211116-cp36-cp36m-win_amd64.whl

Download URL daisykit-0.1.20211116-cp36-cp36m-win_amd64.whl
Size 23.9 MB
Tags CPython 3.6 CPython 3.6 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
f0a1c07988acbd61c7bd3fc8ef0c3d0dde4e17f2352075ccff12473f1bd4c8b7
BLAKE2b-256 checksum
How to use checksums
42a2457ce296e45e7b5ccee200ae8ba7151e692fa296edcbeb666ba186fb97c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.5

Release files / daisykit-0.1.20211116-cp35-cp35m-win_amd64.whl

Download URL daisykit-0.1.20211116-cp35-cp35m-win_amd64.whl
Size 23.9 MB
Tags CPython 3.5 CPython 3.5 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
d5b0b3f61f92639e7ee7e7208821e6b2524faa69d57c4d7d474adb49f127a8bf
BLAKE2b-256 checksum
How to use checksums
fe3db5ee9a81d72f422907a5f1571c9ee302c62ab2a6a0cc9400bfd168c26668
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.6.0 importlib_metadata/4.8.2 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.9.5
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