Skip to content

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

License

Notifications You must be signed in to change notification settings

AlexeyAB/Yolo_mark

Repository files navigation

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
  1. To use for labeling your custom images:
  1. To training for your custom objects, you should change 2 lines in file x64/Release/yolo-obj.cfg:

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

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