Skip to main content

A modular framework built to simplify Computer Vision inference workloads.

Project description

PeekingDuck

Python version PyPI version PyPI Downloads License Documentation Status

What is PeekingDuck?

PeekingDuck is an open-source, modular framework in Python, built for Computer Vision (CV) inference. It helps to significantly cut down development time when building CV pipelines. The name "PeekingDuck" is a play on these words: "Peeking" in a nod to CV; and "Duck" in duck typing.

Install and Run PeekingDuck

  1. Install PeekingDuck from PyPI.

    > pip install peekingduck
    

    Note: if installing on a ARM-based device such as a Raspberry Pi or M1 Macbook, include the --no-dependencies flag, and separately install other dependencies listed in our requirements.txt. See our guide for M1 Mac installation.

  2. Create a project folder at a convenient location, and initialize a PeekingDuck project.

    > mkdir <project_dir>
    > cd <project_dir>
    > peekingduck init
    

    The following files and folders will be created upon running peekingduck init:

    <project_dir>
     ├── run_config.yml
     └── src
          └── custom_nodes
              └── configs
    
  3. Run a demo.

    > peekingduck run
    

    If you have a webcam, you should see the demo running live:

    The previous command looks for a run_config.yml in the current directory. You can also specify the path of a different config file to be used, as follows:

    > peekingduck run --config_path <path_to_config>
    

    Terminate the program by clicking on the output screen and pressing q.

  4. For more help on how to use PeekingDuck's command line interface, you can use peekingduck --help.

How PeekingDuck Works

Nodes are the building blocks of PeekingDuck. Each node is a wrapper for a Python function, and contains information on how other PeekingDuck nodes may interact with it.

PeekingDuck has 5 types of nodes:

A pipeline governs the behavior of a chain of nodes. The diagram below shows the pipeline used in the previous demo. Nodes in a pipeline are called in sequential order, and the output of one node will be the input to another. For example, input.live produces "img", which is taken in by model.yolo, and model.yolo produces "bboxes", which is taken in by draw.bbox. For ease of visualisation, not all the inputs and outputs of these nodes are included in this diagram.

To list the available nodes in PeekingDuck and get their respective documentation's URL:

> peekingduck nodes

Explore PeekingDuck's Features

You can find the complete documentation for PeekingDuck at our Read the Docs site. This includes information on:

You are also welcome to join discussions about using PeekingDuck in the following channels:

PeekingDuck Use Cases

AI models are cool and fun, but we're even more interested to use them to solve real-world problems. We've combined dabble nodes with model nodes to create use cases, such as social distancing and group size checking to help combat COVID-19. For more details, click on the heading of each use case below.

Social Distancing Zone Counting
Group Size Checking Object Counting
Privacy Protection (Faces) Privacy Protection (License Plates)
Face Mask Detection

We're constantly developing new nodes to increase PeekingDuck's capabilities. You've gotten a taste of some of our commonly used nodes in the previous demos, but PeekingDuck can do a lot more. To see what other nodes are available, check out PeekingDuck's API Reference.

Acknowledgements

This project is supported by the National Research Foundation, Singapore under its AI Singapore Programme (AISG-RP-2019-050). Any opinions, findings and conclusions or recommendations expressed in this material are those of the author(s) and do not reflect the views of National Research Foundation, Singapore.

License

PeekingDuck is under the open source Apache License 2.0 (:

Even so, your organisation may require legal proof of its right to use PeekingDuck, due to circumstances such as the following:

  • Your organisation is using PeekingDuck in a jurisdiction that does not recognise this license
  • Your legal department requires a license to be purchased
  • Your organisation wants to hold a tangible legal document as evidence of the legal right to use and distribute PeekingDuck

Contact us if any of these circumstances apply to you.

Additional References

Additional references can be found here.

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

peekingduck-1.2.0rc1.tar.gz (97.5 kB view hashes)

Uploaded Source

Built Distribution

peekingduck-1.2.0rc1-py3-none-any.whl (196.8 kB view hashes)

Uploaded Python 3

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