Code Monkey home page Code Monkey logo

trafficvision's Introduction

Traffic Vision

This app detects cars/buses in a live traffic at a phenomenal 50 frames/sec with HD resolution (1920x1080) using deep learning network Yolo-V2. The model used in the app is optimized for inferencing performnce on AMD-GPUs using MIVisionX toolkit.

Traffic Vision Animation

Features

  1. Vehicle detection with bounding box
  2. Vehicle direction ((upward, downward) detection
  3. Vehicle speed estimation
  4. Vehicle type: bus/car.

How to Run

Use Model

Demo

App starts the demo, if no other option is provided. Demo uses a video stored in the media/ dir.

% ./main.py
('Loaded', 'yoloOpenVX')
OK: loaded 22 kernels from libvx_nn.so
OK: OpenVX using GPU device#0 (gfx900) [OpenCL 1.2 ] [SvmCaps 0 1]
OK: annCreateInference: successful
Processed a total of  102 frames
OK: OpenCL buffer usage: 87771380, 46/46
%

Here is the link to YouTube video detecting cars, bounding boxes, car speed, and confidence scores.

Other Examples

recorded video

  1. ./main.py --video /vid.mp4

traffic cam ip

  1. ./main.py --cam_ip 'http://166.149.104.112:8082/snap.jpg'

Installation

Prerequisites

  1. GPU: Radeon Instinct or Vega Family of Products with ROCm and OpenCL development kit
  2. Install AMD's MIVisionX toolkit : AMD's MIVisionX toolkit is a comprehensive computer vision and machine intelligence libraries, utilities
  3. CMake, Caffe
  4. Google's Protobuf

Steps

% git clone https://github.com/srohit0/trafficVision

1. Model Conversion

This steps downloads yolov2-tiny for voc dataset and converts to MIVision's openVX model.

% cd trafficVision/model
% bash ./prepareModel.sh

More details on the pre-requisite (like caffe) of the model conversion in the models/ dir.

2. MIVision Model Compilation

% cd trafficVision
% make

3. Test App

% cd trafficVision
% make test

It'll display detection all videos in media/ dir.

Design

This section is a guide for developers, who would like to port vision and object detections models to AMD's Radeon GPUs from other frameworks including tensorflow, caffe or pytorch.

High Level Design

Lower Level Modules

These lower level modules can be found as python modules (files) or packages (directories) in this repository.

Development

Model Conversion

Follow model conversion process similar to the one described below.

Infrastructure

Make sure you've infrastructure pre-requisites installed before you start porting neural network model for inferencing.

Developed and Tested on

  1. Hardware
    1. AMD Ryzen Threadripper 1900X 8-Core Processor
    2. Accelerator = Radeon Instinct� MI25 Accelerator
  2. Software
    1. Ubuntu 16.04 LTS OS
    2. Python 2.7
    3. MIVisionX 1.7.0
    4. AMD OpenVX 0.9.9
    5. GCC 5.4

Credit

  • MIVisionX Team

References

  1. yoloV2 paper
  2. Tiny Yolo aka Darknet reference network
  3. MiVisionX Setup
  4. AMD OpenVX
  5. Optimization with OpenVX Graphs
  6. Measuring Traffic Speed With Deep Learning Object Detection

trafficvision's People

Contributors

srohit0 avatar hansely123 avatar kiritigowda avatar

Watchers

James Cloos 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.