All Projects → AlturosDestinations → Alturos.yolo

AlturosDestinations / Alturos.yolo

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

Programming Languages

csharp
926 projects

Projects that are alternatives of or similar to Alturos.yolo

Pytorch Yolo V3
A PyTorch implementation of the YOLO v3 object detection algorithm
Stars: ✭ 3,148 (+922.08%)
Mutual labels:  object-detection, yolo, yolov3
Yolo v3 tutorial from scratch
Accompanying code for Paperspace tutorial series "How to Implement YOLO v3 Object Detector from Scratch"
Stars: ✭ 2,192 (+611.69%)
Mutual labels:  object-detection, yolo, yolov3
Yolo V3 Iou
YOLO3 动漫人脸检测 (Based on keras and tensorflow) 2019-1-19
Stars: ✭ 116 (-62.34%)
Mutual labels:  object-detection, yolo, yolov3
live-cctv
To detect any reasonable change in a live cctv to avoid large storage of data. Once, we notice a change, our goal would be track that object or person causing it. We would be using Computer vision concepts. Our major focus will be on Deep Learning and will try to add as many features in the process.
Stars: ✭ 23 (-92.53%)
Mutual labels:  yolo, image-classification, yolov3
Pine
🌲 Aimbot powered by real-time object detection with neural networks, GPU accelerated with Nvidia. Optimized for use with CS:GO.
Stars: ✭ 202 (-34.42%)
Mutual labels:  object-detection, yolo, yolov3
Mobilenet Yolo
MobileNetV2-YoloV3-Nano: 0.5BFlops 3MB HUAWEI P40: 6ms/img, YoloFace-500k:0.1Bflops 420KB🔥🔥🔥
Stars: ✭ 1,566 (+408.44%)
Mutual labels:  object-detection, yolo, yolov3
Bmw Labeltool Lite
This repository provides you with a easy to use labeling tool for State-of-the-art Deep Learning training purposes.
Stars: ✭ 145 (-52.92%)
Mutual labels:  object-detection, yolo, yolov3
Yolo Vehicle Counter
This project aims to count every vehicle (motorcycle, bus, car, cycle, truck, train) detected in the input video using YOLOv3 object-detection algorithm.
Stars: ✭ 28 (-90.91%)
Mutual labels:  object-detection, yolo, yolov3
Yolo Tf
TensorFlow implementation of the YOLO (You Only Look Once)
Stars: ✭ 200 (-35.06%)
Mutual labels:  object-detection, yolo, yolo2
Yolov3 Tf2
YoloV3 Implemented in Tensorflow 2.0
Stars: ✭ 2,327 (+655.52%)
Mutual labels:  object-detection, yolo, yolov3
Yolov5
YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite
Stars: ✭ 19,914 (+6365.58%)
Mutual labels:  object-detection, yolo, yolov3
Mxnet Yolo
YOLO: You only look once real-time object detector
Stars: ✭ 240 (-22.08%)
Mutual labels:  object-detection, yolo, yolo2
Tensorflow2.0 Examples
🙄 Difficult algorithm, Simple code.
Stars: ✭ 1,397 (+353.57%)
Mutual labels:  object-detection, image-classification, yolov3
Satellite Image Object Detection
YOLO/YOLOv2 inspired deep network for object detection on satellite images (Tensorflow, Numpy, Pandas).
Stars: ✭ 115 (-62.66%)
Mutual labels:  object-detection, yolo, yolo2
Tensornets
High level network definitions with pre-trained weights in TensorFlow
Stars: ✭ 982 (+218.83%)
Mutual labels:  object-detection, yolo, yolov3
Yolo label
GUI for marking bounded boxes of objects in images for training neural network Yolo v3 and v2 https://github.com/AlexeyAB/darknet, https://github.com/pjreddie/darknet
Stars: ✭ 128 (-58.44%)
Mutual labels:  object-detection, yolo, yolov3
Tensorflow Yolo V3
Implementation of YOLO v3 object detector in Tensorflow (TF-Slim)
Stars: ✭ 862 (+179.87%)
Mutual labels:  object-detection, yolo, yolov3
Yolov3
YOLOv3 in PyTorch > ONNX > CoreML > TFLite
Stars: ✭ 8,159 (+2549.03%)
Mutual labels:  object-detection, yolo, yolov3
Object Detection Api
Yolov3 Object Detection implemented as APIs, using TensorFlow and Flask
Stars: ✭ 177 (-42.53%)
Mutual labels:  object-detection, yolo, yolov3
Yolodet Pytorch
reproduce the YOLO series of papers in pytorch, including YOLOv4, PP-YOLO, YOLOv5,YOLOv3, etc.
Stars: ✭ 206 (-33.12%)
Mutual labels:  object-detection, yolo, yolov3

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. This library supports YoloV3 and YoloV2 Pre-Trained Datasets

NuGet

Quick install Alturos.Yolo over NuGet

PM> install-package Alturos.Yolo (C# wrapper and C++ dlls 28MB)
PM> install-package Alturos.YoloV2TinyVocData (YOLOv2-tiny Pre-Trained Dataset 56MB)

Object Detection

object detection result

Example code

Detect the type and the position of an image (Automatic configuration)

var configurationDetector = new ConfigurationDetector();
var config = configurationDetector.Detect();
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
}

Detect the type and the position of an image (Manual configuration)

using (var yoloWrapper = new YoloWrapper("yolov2-tiny-voc.cfg", "yolov2-tiny-voc.weights", "voc.names"))
{
	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
}

Performance

It is important to use GPU mode for fast object detection. It is also important not to instantiate the wrapper over and over again. A further optimization is to transfer the images as byte stream instead of passing a file path. GPU detection is usually 10 times faster!

System requirements

GPU requirements (optional)

It is important to use the mentioned version 10.2

  1. Install the latest Nvidia driver for your graphic device
  2. Install Nvidia CUDA Toolkit 10.2 (must be installed add a hardware driver for cuda support)
  3. Download Nvidia cuDNN v7.6.5 for CUDA 10.2
  4. Copy the cudnn64_7.dll from the output directory of point 2. into the project folder.

Build requirements

  • Visual Studio 2019

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 260 ms 2200 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 160 ms -
NVIDIA GeForce GTX 1060 4372 GFLOPS 6 GB Dual 25 ms 100 ms -

Pre-Trained Dataset

A Pre-Trained Dataset contains the Informations about the recognizable objects. A higher Processing Resolution detects object also if they are smaller but this increases the processing time. The Alturos.YoloV2TinyVocData package is the same as YOLOv2-tiny. You can download the datasets manually or integrate them automatically into the code.

//The download takes some time depending on the internet connection.
var repository = new YoloPreTrainedDatasetRepository();
await repository.DownloadDatasetAsync("YOLOv3", ".");
Model Processing Resolution Cfg Weights Names
YOLOv3 608x608 yolov3.cfg yolov3.weights coco.names
YOLOv3-tiny 416x416 yolov3-tiny.cfg yolov3-tiny.weights coco.names
YOLOv2 608x608 yolov2.cfg yolov2.weights coco.names
YOLOv2-tiny 416x416 yolov2-tiny.cfg yolov2-tiny.weights voc.names
yolo9000 448x448 yolo9000.cfg yolo9000.weights 9k.names

yolo9000 require a data directory with this two files coco9k.map and 9k.tree. Merge files with this command type xaa xab > yolo9000.weights

Troubleshooting

If you have some error like DllNotFoundException use Dependencies to check all references are available for yolo_cpp_dll_gpu.dll

If you have some error like NotSupportedException check if you use the latest Nvidia driver

Debugging Tool for Nvidia Gpu

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

Directory Structure

You should have this files in your program directory.

.
├── Alturos.Yolo.dll              # C# yolo wrapper
├── yolo_cpp_dll_cpu.dll      # yolo runtime for cpu
├── yolo_cpp_dll_gpu.dll      # yolo runtime for 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)

Annotation Tool

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

Dataset of tagged images

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].