Git Product home page Git Product logo

ndi_facetrack's Introduction

NDI_FaceTrack

A Windows desktop application allows Bird Dog PTZ Cameras to automatically track persons of interests, freeing up camera operators. This application uses Machine Learning and CV Techniques to Identify and track both faces and human body figures.

Quick Start


Highly suggest to use a virtual environment when running and install the required modules

python -m virtualenv .venv
pip install -r requirements.txt'

Launch the FastAPI server. By defaults it runs on 127.0.0.1:8000 Run the Tracking GUI as the direct interface to the program

python TrackingServer_FastAPI.py
python TrackingGUI.py

Packaging

This project supports packaging the program to an .exe using PyInstaller cli.spec is given for easier packaging

Architecture

Backend: The backend framework is built from a pure FastAPI framework. The FastAPI handles communication between external applications using websockets and to start namedPipes(FIFO) between the Tracking Module and the GUI. Currently it supports data exchanged between:

  1. Websockets via Python Pickling
  2. Websockets via Qt Framework
  3. namedPipes via Python Pickling

Frontend: The GUI interface available in TrackingGUI.py is built on top of the PySide2 (Qt) framework. It communicates with the FastAPI backend using namedPipes(FIFO).

NDI Facetracking uses open multiple open source projects to work seamlessly betwen each other, namely:

Alt text

https://github.com/Tomas1337/NDI_FaceTrack

An integral part of this project is to have this easily deployable to users in a robust lightweight executable file. Currently achieves +30FPS on an QuadCore Intel 2.4GHz

ndi_facetrack's People

Contributors

dependabot[bot] avatar tomas1337 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

xieren58

ndi_facetrack's Issues

Tracking on the 'edge' becomes problamtic

We have to make sure that the x,y,w,h variables upon on track_with_csrt return and setting of any class variables related to it needs to be managed.

Where in the x,y,w,h, can never reach the extremes of the frame. Even if the tracked object is at the edge, the x needs to be a certain distance from the edge and the w needs to have padding from the edge as well. Basically the bounding box can never touch the extremes of the frame with an padding of about 100 pixels.

Instead of using .jpg encode to send through pipe, use pure numpy instead

Need to change this to numpy and send through pipe. Must also handle the decoding of the pipe.
Better: Develop a feature where we can switch from each.

        #image_payload = PipeClient_Image_Payload(frame = jpeg.encode(frame))
        is_success, im_buf_arr = cv2.imencode(".jpg", frame)
        byte_im = im_buf_arr.tobytes()
        
        image_payload = PipeClient_Image_Payload(frame = byte_im)
        self.reset_trigger = False
        self.pipeClient.writeToPipe(payload = image_payload.pickle_object())

Solves: LAG

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.