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
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
-
/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)
| Button | Description |
|---|---|
| Left | Draw box |
| Right | Move box |
| 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 |