https://github.com/srohit0/trafficvision
MIVisionX toolkit is a comprehensive computer vision and machine intelligence libraries, utilities and applications bundled into a single toolkit.
https://github.com/srohit0/trafficvision
amd-gpu amd-modules amd-opencl amd-openvx artificial-intelligence artificial-neural-networks convolutional-neural-networks machine-intelligence machine-learning mivision mivisionx object-detection opencl openvx openvx-nn-extension rocm tiny-yolo tiny-yolo-network yolov2
Last synced: 29 days ago
JSON representation
MIVisionX toolkit is a comprehensive computer vision and machine intelligence libraries, utilities and applications bundled into a single toolkit.
- Host: GitHub
- URL: https://github.com/srohit0/trafficvision
- Owner: srohit0
- License: mit
- Created: 2019-01-09T21:57:22.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2019-06-26T22:54:55.000Z (almost 7 years ago)
- Last Synced: 2025-04-15T17:56:23.206Z (12 months ago)
- Topics: amd-gpu, amd-modules, amd-opencl, amd-openvx, artificial-intelligence, artificial-neural-networks, convolutional-neural-networks, machine-intelligence, machine-learning, mivision, mivisionx, object-detection, opencl, openvx, openvx-nn-extension, rocm, tiny-yolo, tiny-yolo-network, yolov2
- Language: C++
- Homepage: https://gpuopen-professionalcompute-libraries.github.io/MIVisionX/
- Size: 15.2 MB
- Stars: 67
- Watchers: 8
- Forks: 22
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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](https://pjreddie.com/darknet/yolov2). The model used in the app is optimized for inferencing performnce on AMD-GPUs using [MIVisionX toolkit](https://gpuopen-professionalcompute-libraries.github.io/MIVisionX/).
[](https://youtu.be/YASOovwds_A)
## Features
1. Vehicle detection with bounding box
1. Vehicle direction ((upward, downward) detection
1. Vehicle speed estimation
1. 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/](./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](https://youtu.be/YASOovwds_A) detecting cars, bounding boxes, car speed, and confidence scores.
### Other Examples
**recorded video**
> 1. ./main.py --video /vid.mp4
**traffic cam ip**
> 2. ./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](https://rocm.github.io/ROCmInstall.html) and OpenCL development kit
1. [Install AMD's MIVisionX toolkit](https://gpuopen-professionalcompute-libraries.github.io/MIVisionX/) : AMD's MIVisionX toolkit is a comprehensive computer vision and machine intelligence libraries, utilities
1. [CMake](http://cmake.org/download/), [Caffe](http://caffe.berkeleyvision.org/installation.html)
1. [Google's Protobuf](https://github.com/google/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](http://caffe.berkeleyvision.org/installation.html)) of the model conversion in the [models/](./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](https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo.md), [caffe](http://caffe.berkeleyvision.org/model_zoo.html) or [pytorch](https://pytorch.org/).
### 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
1. Accelerator = Radeon Instinct™ MI25 Accelerator
1. Software
1. Ubuntu 16.04 LTS OS
1. Python 2.7
1. MIVisionX 1.7.0
1. AMD OpenVX 0.9.9
1. GCC 5.4
## Credit
* MIVisionX Team
## References
1. [yoloV2 paper](https://arxiv.org/pdf/1612.08242.pdf)
1. [Tiny Yolo aka Darknet reference network](https://pjreddie.com/darknet/imagenet/#reference)
1. [MiVisionX Setup](https://github.com/kiritigowda/MIVisionX-setup)
1. [AMD OpenVX](https://gpuopen.com/compute-product/amd-openvx/)
1. [Optimization with OpenVX Graphs](http://openaccess.thecvf.com/content_cvpr_workshops_2014/W17/papers/Rainey_Addressing_System-Level_Optimization_2014_CVPR_paper.pdf)
1. [Measuring Traffic Speed With Deep Learning Object Detection](https://medium.com/datadriveninvestor/measuring-traffic-speed-with-deep-learning-object-detection-efc0bb9a3c57)