Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/AlexeyAB/Yolo_mark

GUI for marking bounded boxes of objects in images for training neural network Yolo v3 and v2
https://github.com/AlexeyAB/Yolo_mark

darknet dnn labeling marking-bounded-boxes object-detection training-yolo yolo

Last synced: 3 months ago
JSON representation

GUI for marking bounded boxes of objects in images for training neural network Yolo v3 and v2

Lists

README

        

# Yolo_mark
**Windows** & **Linux** GUI for marking bounded boxes of objects in images for training Yolo v3 and v2

* To compile on **Windows** open `yolo_mark.sln` in MSVS2013/2015, compile it **x64 & Release** and run the file: `x64/Release/yolo_mark.cmd`. Change paths in `yolo_mark.sln` to the OpenCV 2.x/3.x installed on your computer:

* (right click on project) -> properties -> C/C++ -> General -> Additional Include Directories: `C:\opencv_3.0\opencv\build\include;`

* (right click on project) -> properties -> Linker -> General -> Additional Library Directories: `C:\opencv_3.0\opencv\build\x64\vc14\lib;`

* To compile on **Linux** type in console 3 commands:
```
cmake .
make
./linux_mark.sh
```

Supported both: OpenCV 2.x and OpenCV 3.x

--------

1. To test, simply run
* **on Windows:** `x64/Release/yolo_mark.cmd`
* **on Linux:** `./linux_mark.sh`

2. To use for labeling your custom images:

* delete all files from directory `x64/Release/data/img`
* put your `.jpg`-images to this directory `x64/Release/data/img`
* change numer of classes (objects for detection) in file `x64/Release/data/obj.data`: https://github.com/AlexeyAB/Yolo_mark/blob/master/x64/Release/data/obj.data#L1
* put names of objects, one for each line in file `x64/Release/data/obj.names`: https://github.com/AlexeyAB/Yolo_mark/blob/master/x64/Release/data/obj.names
* run file: `x64\Release\yolo_mark.cmd`

3. To training for your custom objects, you should change 2 lines in file `x64/Release/yolo-obj.cfg`:

* set number of classes (objects): https://github.com/AlexeyAB/Yolo_mark/blob/master/x64/Release/yolo-obj.cfg#L230
* set `filter`-value
* For Yolov2 `(classes + 5)*5`: https://github.com/AlexeyAB/Yolo_mark/blob/master/x64/Release/yolo-obj.cfg#L224
* For Yolov3 `(classes + 5)*3`

3.1 Download pre-trained weights for the convolutional layers (76 MB): http://pjreddie.com/media/files/darknet19_448.conv.23

3.2 Put files: `yolo-obj.cfg`, `data/train.txt`, `data/obj.names`, `data/obj.data`, `darknet19_448.conv.23` and directory `data/img` near with executable `darknet`-file, and start training: `darknet detector train data/obj.data yolo-obj.cfg darknet19_448.conv.23`

For a detailed description, see: https://github.com/AlexeyAB/darknet#how-to-train-to-detect-your-custom-objects

----

#### How to get frames from videofile:

To get frames from videofile (save each N frame, in example N=10), you can use this command:
* on Windows: `yolo_mark.exe data/img cap_video test.mp4 10`
* on Linux: `./yolo_mark x64/Release/data/img cap_video test.mp4 10`

Directory `data/img` should be created before this. Also on Windows, the file `opencv_ffmpeg340_64.dll` from `opencv\build\bin` should be placed near with `yolo_mark.exe`.

As a result, many frames will be collected in the directory `data/img`. Then you can label them manually using such command:
* on Windows: `yolo_mark.exe data/img data/train.txt data/obj.names`
* on Linux: `./yolo_mark x64/Release/data/img x64/Release/data/train.txt x64/Release/data/obj.names`

----

#### Here are:

* /x64/Release/
* `yolo_mark.cmd` - example hot to use yolo mark: `yolo_mark.exe data/img data/train.txt data/obj.names`
* `train_obj.cmd` - example how to train yolo for your custom objects (put this file near with darknet.exe): `darknet.exe detector train data/obj.data yolo-obj.cfg darknet19_448.conv.23`
* `yolo-obj.cfg` - example of yoloV3-neural-network for 2 object
* /x64/Release/data/
* `obj.names` - example of list with object names
* `obj.data` - example with configuration for training Yolo v3
* `train.txt` - example with list of image filenames for training Yolo v3

* /x64/Release/data/img/`air4.txt` - example with coordinates of objects on image `air4.jpg` with aircrafts (class=0)

![Image of Yolo_mark](https://habrastorage.org/files/229/f06/277/229f06277fcc49279342b7edfabbb47a.jpg)

### Instruction manual

#### Mouse control

Button | Description |
--- | --- |
Left | Draw box
Right | Move box

#### Keyboard Shortcuts

Shortcut | Description |
--- | --- |
| Next image |
| Previous image |
r | Delete selected box (mouse hovered) |
c | Clear all marks on the current image |
p | Copy previous mark |
o | Track objects |
ESC | Close application |
n | One object per image |
0-9 | Object id |
m | Show coords |
w | Line width |
k | Hide object name |
h | Help |