From d09b987b0f2e16ac3e84e81611e2f6b1cce63c84 Mon Sep 17 00:00:00 2001 From: AlexeyAB <alexeyab84@gmail.com> Date: Thu, 16 Mar 2017 10:21:49 +0000 Subject: [PATCH] Fix in bbox_t coords from (float) to (unsigned int) --- README.md | 30 +++++++++++++++++++++++++++++- 1 files changed, 29 insertions(+), 1 deletions(-) diff --git a/README.md b/README.md index a5811c8..69a622f 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,9 @@ 3. [How to train (Pascal VOC Data)](#how-to-train-pascal-voc-data) 4. [How to train (to detect your custom objects)](#how-to-train-to-detect-your-custom-objects) 5. [When should I stop training](#when-should-i-stop-training) -6. [How to mark bounded boxes of objects and create annotation files](#how-to-mark-bounded-boxes-of-objects-and-create-annotation-files) +6. [How to improve object detection](#how-to-improve-object-detection) +7. [How to mark bounded boxes of objects and create annotation files](#how-to-mark-bounded-boxes-of-objects-and-create-annotation-files) +8. [How to use Yolo as DLL](#how-to-use-yolo-as-dll) |  |  https://arxiv.org/abs/1612.08242 | |---|---| @@ -294,8 +296,34 @@ |  |  | |---|---| +## How to improve object detection: + +1. Before training: + * set flag `random=1` in your `.cfg`-file - it will increase precision by training Yolo for different resolutions: [link](https://github.com/AlexeyAB/darknet/blob/47409529d0eb935fa7bafbe2b3484431117269f5/cfg/yolo-voc.cfg#L244) + +2. After training - for detection: + + * Increase network-resolution by set in your `.cfg`-file (`height=608` and `width=608`) or (`height=832` and `width=832`) or (any value multiple of 32) - this increases the precision and makes it possible to detect small objects: [link](https://github.com/AlexeyAB/darknet/blob/47409529d0eb935fa7bafbe2b3484431117269f5/cfg/yolo-voc.cfg#L4) + + * you do not need to train the network again, just use `.weights`-file already trained for 416x416 resolution + * if error `Out of memory` occurs then in `.cfg`-file you should increase `subdivisions=16`, 32 or 64: [link](https://github.com/AlexeyAB/darknet/blob/47409529d0eb935fa7bafbe2b3484431117269f5/cfg/yolo-voc.cfg#L3) + ## How to mark bounded boxes of objects and create annotation files: Here you can find repository with GUI-software for marking bounded boxes of objects and generating annotation files for Yolo v2: https://github.com/AlexeyAB/Yolo_mark With example of: `train.txt`, `obj.names`, `obj.data`, `yolo-obj.cfg`, `air`1-6`.txt`, `bird`1-4`.txt` for 2 classes of objects (air, bird) and `train_obj.cmd` with example how to train this image-set with Yolo v2 + +## How to use Yolo as DLL + +1. To compile Yolo as C++ DLL-file `yolo_cpp_dll.dll` - open in MSVS2015 file `build\darknet\yolo_cpp_dll.sln`, set **x64** and **Release**, and do the: Build -> Build yolo_cpp_dll + * You should have installed **CUDA 8.0** + * To use cuDNN do: (right click on project) -> properties -> C/C++ -> Preprocessor -> Preprocessor Definitions, and add at the beginning of line: `CUDNN;` + +2. To use Yolo as DLL-file in your C++ console application - open in MSVS2015 file `build\darknet\yolo_console_dll.sln`, set **x64** and **Release**, and do the: Build -> Build yolo_console_dll + + * you can run your console application from Windows Explorer `build\darknet\x64\yolo_console_dll.exe` + * or you can run from MSVS2015 (before this - you should copy 2 files `yolo-voc.cfg` and `yolo-voc.weights` to the directory `build\darknet\` ) + * after launching your console application and entering the image file name - you will see info for each object: + `<obj_id> <left_x> <top_y> <width> <height> <probability>` + * to use simple OpenCV-GUI you should uncomment line `//#define OPENCV` in `yolo_console_dll.cpp`-file: [link](https://github.com/AlexeyAB/darknet/blob/a6cbaeecde40f91ddc3ea09aa26a03ab5bbf8ba8/src/yolo_console_dll.cpp#L5) -- Gitblit v1.10.0