Git Product home page Git Product logo

tfobjwebrtc's Introduction

Tensorflow Object Detection API Web Service

This is an example of how to turn the TensorFlow Object API into a web service. A Python Flask web server is used to interact with a JavaScript a client library. The example shows how you can extract frames from WebRTC's getUserMedia, upload them to the API, and then use the canvas to display them. This allows use of the TensorFlow Object API on any HTML <video> element.

Please see the Computer Vision on the Web with WebRTC and TensorFlow post on webrtcHacks for a walkthrough and more details.

Example image: Detecting Cats

TensorFlow Object Detection API on a WebRTC getUserMedia stream demo video:

TensorFlow Object Detection API on a video element

TensorFlow Object Detection API on a video element demo video:

TensorFlow Object Detection API on a video element

Quick start with Docker

docker run -it -p 5000:5000 chadhart/tensorflow-object-detection:runserver

Installation

Docker Install

git clone https://github.com/webrtcHacks/tfObjWebrtc.git
cd tfObjWebrtc
docker run -it -p 5000:5000 --name tf-webrtchacks -v $(pwd):/code chadhart/tensorflow-object-detection:webrtchacks
python setup.py install
python server.py

Manual install

Follow the TensorFlow Object API install instructions. Then run the the instructions above.

Example web apps

Point your browser to:

  • https://localhost:5000/local - shows a mirrored video from a webcam
  • https://localhost:5000/video - shows object detection running on a HTML <video> tag

Browser support

WebRTC browsers have secure origin restrictions:

  • Chrome will only work on localhost unless you add TLS certificates to your server
  • Firefox will work on any domain as long as you allow it
  • Safari will work, but you will need to "Allow Media Capture on Insecure Domains"

These should all work fine with any other video source.

Edge is currently not supported (polyfill for canvas.toBlob needed)

See the webrtcHacks link for details.

API Details

Point to a <script> tag to objDetect.js with an id of objDetect. Include data-source="myVideo" and other optional data- tags to set parameters.

Example:

<script id="objDetect" src="/static/objDetect.js" data-source="myVideo" data-mirror="true" data-uploadWidth="1280" data-scoreThreshold="0.40"></script>

Data tags:

  • data-source - the ID of the source <video> to use. Must be specified.
  • data-uploadWidth - the width of the upload file. Height will automatically be calculated based on the source video's aspect ratio. Default is 640.
  • data-mirror - mirror the boundary boxes. Used is the image is mirrored (as is usual with a local getUserMedia view). Default is false.
  • data-scoreThreshold - only show objects above this confidence threshold. Default is 0.5
  • data-apiServer - the full URL of the TensorFlow Object Detection Web API server location. Default is /image off of the current domain - i.e. http://localhost:5000/image

tfobjwebrtc's People

Watchers

James Chang avatar  avatar

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.