Skip to content

terryll/Alturos.Yolo

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Alturos.Yolo

Alturos.Yolo

A state of the art real-time object detection system for C# (Visual Studio). This project has CPU and GPU support, with GPU the detection works much faster. The primary goal of this project is an easy use of yolo, this package is available on nuget and you must only install two packages to start detection. In the background we are use the Windows Yolo version of AlexeyAB/darknet. Send an image path or the byte array to yolo and receive the position of the detected objects. Our project is meant to return the object-type and -position as processable data.

nuget

Quick install Alturos.Yolo over nuget

PM> install-package Alturos.Yolo (c# wrapper and c++ dlls 22MB)
PM> install-package Alturos.YoloV2TinyVocData (Pre-Trained Dataset 56MB)

Object Detection

object detection result

Example code

Detect the type and the position of an image

var configurationDetector = new ConfigurationDetector();
var config = configurationDetector.Detect();
//using (var yoloWrapper = new YoloWrapper("yolov2-tiny-voc.cfg", "yolov2-tiny-voc.weights", "voc.names"))
using (var yoloWrapper = new YoloWrapper(config))
{
	var items = yoloWrapper.Detect(@"image.jpg");
	//items[0].Type -> "Person, Car, ..."
	//items[0].Confidence -> 0.0 (low) -> 1.0 (high)
	//items[0].X -> bounding box
	//items[0].Y -> bounding box
	//items[0].Width -> bounding box
	//items[0].Height -> bounding box
}

System requirements

GPU requirements (optional)

  1. Install Nvidia CUDA Toolkit 9.2 (must be installed add a hardware driver for cuda support)
  2. Download Nvidia cuDNN v7.1.4 for CUDA 9.2 (DLL cudnn64_7.dll required for gpu processing)

Build requirements

  • Visual Studio 2017

Benchmark / Performance

Average processing speed of test images bird1.png, bird2.png, car1.png, motorbike1.png

CPU

Processor YOLOv2-tiny YOLOv3 yolo9000
Intel i7 3770 290 ms 2380 ms -
Intel Xeon E5-1620 v3 207 ms 4327 ms -
Intel Xeon E3-1240 v6 182 ms 3213 ms -

GPU

Graphic card Single precision Memory Slot YOLOv2-tiny YOLOv3 yolo9000
NVIDIA Quadro K420 300 GFLOPS 2 GB Single - - -
NVIDIA Quadro K620 768 GFLOPS 2 GB Single - - -
NVIDIA Quadro K1200 1151 GFLOPS 4 GB Single - - -
NVIDIA Quadro P400 599 GFLOPS 2 GB Single - - -
NVIDIA Quadro P600 1117 GFLOPS 2 GB Single - - -
NVIDIA Quadro P620 1386 GFLOPS 2 GB Single - - -
NVIDIA Quadro P1000 1862 GFLOPS 4 GB Single - - -
NVIDIA Quadro P2000 3011 GFLOPS 5 GB Single - - -
NVIDIA Quadro P4000 5304 GFLOPS 8 GB Single - - -
NVIDIA Quadro P5000 8873 GFLOPS 16 GB Dual - - -
NVIDIA GeForce GT 710 366 GFLOPS 2 GB Single - - -
NVIDIA GeForce GT 730 693 GFLOPS 2-4 GB Single - - -
NVIDIA GeForce GT 1030 1098 GFLOPS 2 GB Single 40 ms 170 ms -
NVIDIA GeForce GTX 1060 4372 GFLOPS 6 GB Dual 25 ms 100 ms -

Pre-Trained Dataset

Model Processing Resolution Cfg Weights Names
YOLOv3 608x608 yolov3.cfg yolov3.weights coco.names
YOLOv3-tiny 416x416 yolov3-tiny.cfg yolov3.weights coco.names
YOLOv2 608x608 yolov2.cfg yolov2.weights coco.names
YOLOv2-tiny 416x416 yolov2-tiny.cfg yolov2-tiny.weights voc.names
yolo9000 448x448 darknet9000.cfg yolo9000.weights 9k.names

Annotation Tool

To marking bounded boxes of objects in images for training neural network you can use VoTT

Debuging Gpu Tool

Check graphic device usage "%PROGRAMFILES%\NVIDIA Corporation\NVSMI\nvidia-smi.exe"

Dataset of tagged images

http://cocodataset.org/

Directory Structure

.
├── Alturos.Yolo.dll              # C# yolo wrapper
├── x64/
│   ├── yolo_cpp_dll_cpu.dll      # yolo runtime for cpu
│   ├── yolo_cpp_dll_gpu.dll      # yolo runtime fot gpu
│   ├── cudnn64_7.dll             # required by yolo_cpp_dll_gpu (optional only required for gpu processig)
│   ├── opencv_world340.dll       # required by yolo_cpp_dll_xxx (process image as byte data detect_mat)
│   ├── pthreadGC2.dll            # required by yolo_cpp_dll_xxx (POSIX Threads)
│   ├── pthreadVC2.dll            # required by yolo_cpp_dll_xxx (POSIX Threads)
│   ├── msvcr100.dll              # required by pthread (POSIX Threads)

About

C# Yolo Darknet Wrapper (real-time object detection)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 100.0%