Giter VIP home page Giter VIP logo

ambianic-edge's Introduction

Ambianic Edge

Ambianic Edge turns your Raspberry Pi into a smart camera device.

Read the docs to learn how to run, configure and develop with Ambianic Edge.

Gitpod ready-to-code Join the Slack chat room

Docker pulls CI Build codecov FOSSA Status CodeFactor CodeQL Container Security Scan Language grade: Python CII Best Practices

ambianic-edge's People

Contributors

bhavikapanara avatar dependabot-preview[bot] avatar dependabot[bot] avatar fossabot avatar imgbotapp avatar ivelin avatar muka avatar njcurtis3 avatar semantic-release-bot avatar vickywane avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ambianic-edge's Issues

[FEATURE] Definte and Document Pipeline API:

  • CRUD
    • Create a new pipeline
    • Configure a pipeline
    • Add/remove elements
    • Update configuration
    • Set pipeline activation rules
    • Edit pipeline activation rules
  • Pipeline Activation API:
    • Rules and Triggers schema
    • Define a rule
    • Define a trigger
    • External triggers (e.g. MQTT, HASS)
    • Internal triggers (output from other pipelines)

Unsupervised healing for broken Gstreamer pipe element:

  • Gstreamer hangups, AV source plug/unplug
  • Gradual component healing, termination, forceful recycling based on component responsiveness: stop signal, SIGTERM, SIGKILL. Cleanup sub-process zombies.
  • Gradual component healing from smallest to largest scope: PipeElement, Pipeline, Root servers
  • Test coverage

CI Automation:

  • Build from source
  • Run tests
  • Run code coverage report
  • Build docker image
  • Publish docker image on docker hub

Unsupervised healing framework for broken pipelines:

  • Gradual component healing, termination, forceful recycling based on component responsiveness: stop signal, SIGTERM, SIGKILL. Cleanup sub-process zombies.
  • Gradual component healing from smallest to largest scope: PipeElement, Pipeline, Root servers
  • Test coverage

Add label_mask element:

  • Filter previous detection output on
  • Labels(categories)
  • Pass remaining detections on to next element
  • Move 'person' iteration code from FaceDetect to mew mask element.

- [ ] Notifications API

  • Async events
    • How elements should fire async evens (e.g. new detections, new saved samples available, etc.)
    • How clients should consume events.
    • Auto broker from Python to MQTT
    • Auto broker from Python to WebSockets
    • Auto broker to Kafka

[FEATURE] Introduce pipeline priorities:

  • Live:

    • Example 1: real time person detection at front door.
    • Example 2: real time face recognition for door unlock.
  • Offline:

    • Example 1: alert if the same unknown face shows up around the building more than once a week.
    • Example 2: count all unique persons who entered the building in the past month.

Why:

  • Live models are usually busy during peak hours and often idle during nighttime.
  • Offline can run when resources aren't tied up by live models.
  • Better resource utilization would allow a broader set of use cases to be handled on the same system.

[FEATURE] Local privacy preserving face recognition (face identification)

  • Provide face recognition timeline events (in addition to face detection) for known faces
  • Enable users to provide face recognition labeling by presenting them with detected faces and allowing them to provide tags or names for known faces. Similar to FB's friends tagging ,except no cloud image uploads.
  • Use the labeling data to train a local on-device face recognition model.
  • Allow multiple edge devices to collaborate in training via federated learning to better recognize people in a given household or professional facility premises.

Related resources:

Future work:

  • Use federated learning to enable multiple edge devices (owned by the same user) to work together on recognizing user known faces without sharing image data with each other or any third parties.

[FEATURE] Data retention policy

Enhance data configuration parameters to prevent running out of space.

Options to consider:

  • Delete oldest files after space available is under certain %
  • Keep data for up to day/week/month
  • Keep data up to a certain amount of MB

PWA has similar data retention issues that are automatically addressed by modern browsers. We can use browser designs as a reference:
https://web.dev/storage-for-the-web/

Chrome allows the browser to use up to 60% of total disk space. You can use the StorageManager API to determine the maximum quota available. Other Chromium-based browsers may allow the browser to use more storage.

Describe the solution you'd like
We can run a cron job to automatically remove data files older than a configurable time period.

Example:
https://stackoverflow.com/questions/41416628/cron-job-to-auto-delete-folder-older-than-7-days-linux

Describe alternatives you've considered
An alternative would be to implement data retention policy for each service that stores data on the local edge device.

[FEATURE] Define and Document APIs for new pipe elements:

  • REST API
    • Get/set element config at deployment level
    • Get/set element config at a pipeline level
    • Search element historical data per pipeline
    • Get element historical data per pipeline
    • Add element to pipeline
    • Remove element from pipeline
  • Python API
    • Python to REST auto proxy rules
  • Notifications API
    • Async events
    • How elements should fire async evens (e.g. new detections, new saved samples available, etc.)
    • How clients should consume events.

Push notification to user

  • notify web app (PWA Push Notification) that new samples are available to show to users.
  • notify external notification handler (e.g. IFTTT, Zapier, MQTT) that allows integration with a wide variety of end points.

[FEATURE] Add image_regions_mask element:

  • Accept arbitrary SVG to be scaled and applied against input image samples
  • Accept arbitrary polygon defined as a sequence of lines.
  • Mask out by painting in solid black all pixels outside of the polygon.
  • Crop out border of solid black to maximize the visible region fed onto the next AI element.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.