Awesome
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 inyolo_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
- 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.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 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.jpg
with aircrafts (class=0)
Instruction manual
Mouse control
Button | Description |
---|---|
Left | Draw box |
Right | Move box |
Keyboard Shortcuts
Shortcut | Description |
---|---|
<kbd>→</kbd> | Next image |
<kbd>←</kbd> | Previous image |
<kbd>r</kbd> | Delete selected box (mouse hovered) |
<kbd>c</kbd> | Clear all marks on the current image |
<kbd>p</kbd> | Copy previous mark |
<kbd>o</kbd> | Track objects |
<kbd>ESC</kbd> | Close application |
<kbd>n</kbd> | One object per image |
<kbd>0-9</kbd> | Object id |
<kbd>m</kbd> | Show coords |
<kbd>w</kbd> | Line width |
<kbd>k</kbd> | Hide object name |
<kbd>h</kbd> | Help |