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.slnin MSVS2013/2015, compile it x64 & Release and run the file:x64/Release/yolo_mark.cmd. Change paths inyolo_mark.slnto 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
- To test, simply run
 
- on Windows: 
x64/Release/yolo_mark.cmd - on Linux: 
./linux_mark.sh 
- To use for labeling your custom images:
 
- delete all files from directory 
x64/Release/data/img - put your 
.jpg-images to this directoryx64/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 
- 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 
 - For Yolov2 
 
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.namestrain_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.23yolo-obj.cfg- example of yoloV3-neural-network for 2 object
 - 
/x64/Release/data/
obj.names- example of list with object namesobj.data- example with configuration for training Yolo v3train.txt- example with list of image filenames for training Yolo v3
 - 
/x64/Release/data/img/
air4.txt- example with coordinates of objects on imageair4.jpgwith 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 |