# Yolo_mark
**Repository Path**: Python_Ai_Road/Yolo_mark
## Basic Information
- **Project Name**: Yolo_mark
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Unlicense
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2020-11-12
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## 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)

### 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 |