trafficVision
trafficVision copied to clipboard
MIVisionX toolkit is a comprehensive computer vision and machine intelligence libraries, utilities and applications bundled into a single toolkit.
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.
Features
- Vehicle detection with bounding box
- Vehicle direction ((upward, downward) detection
- Vehicle speed estimation
- 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
- ./main.py --video
/vid.mp4
traffic cam ip
- ./main.py --cam_ip 'http://166.149.104.112:8082/snap.jpg'
Installation
Prerequisites
- GPU: Radeon Instinct or Vega Family of Products with ROCm and OpenCL development kit
- Install AMD's MIVisionX toolkit : AMD's MIVisionX toolkit is a comprehensive computer vision and machine intelligence libraries, utilities
- CMake, Caffe
- 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
- Hardware
- AMD Ryzen Threadripper 1900X 8-Core Processor
- Accelerator = Radeon Instinct MI25 Accelerator
- Software
- Ubuntu 16.04 LTS OS
- Python 2.7
- MIVisionX 1.7.0
- AMD OpenVX 0.9.9
- GCC 5.4
Credit
- MIVisionX Team