You Only Show Once
YOSO is a GUI application providing a means of creating training data set for YOLO, a state-of-the-art, real-time object detection system. It can be useful for other computer vision systems, because I believe that YOLO's label file format is quite a good and flexible choice.
Requirements
- Python 3
- PyQt5
Data Directory Structure
YOSO should be pointed to a data directory having this structure:
data |\_ classes | \_ "0 - roy.jpg" | \_ "1 - poli.jpg" | \_ ... |\_ images | |\_ poli | | \_ poli-001.jpg | | \_ ... | | \_ poli-009.jpg | | \_ ... | |\_ roy | | \_ roy-1.jpg | | \_ ... | | \_ roy-99.jpg | | \_ ... | \_ ... \_ labels |\_ poli | \_ poli-001.jpg.txt | \_ ... | \_ poli-009.jpg.txt | \_ ... |\_ roy | \_ roy-1.jpg.txt | \_ ... | \_ roy-99.jpg.txt | \_ ... \_ ...
data/classes must contain JPEG files describing object classes in format: <class number> - <short description>.jpg
data/images has arbitrary structure and contains JPEG or PNG images (*.jpg, or *.jpeg, *.png). This is a training set of hundreds or thousands of images.
data/labels is managed by YOSO and has the same structure as data/images. All missed subdirectories will be created automatically. Note that label files create by YOSO have different naming scheme, so you might have to update Darknet sources.
Controls
- To add a bounding box select a region with the mouse pointer. Newly added bounding box will have object class currently selected in the list on the right.
- To delete a bounding box double click on it.
- To change object class drag an item from the list on the right and drop it into existing bounding box.
Whenever a bounding box is added, deleted or changed, the result is automatically saved.