PyQt5 based annotation tool for yolov4 datasets, providing fast and easy ways of annotating.
Project description
Ayolo
PyQt5 based annotation tool for yolov4 datasets, providing fast and easy ways of annotating.
Wait what, reinventing the wheel ? Well ... technically yes, but if it has improvements or features that others don't, then why not ?
If you like the tool, a star to this repository would be nice.
Bugs
For bugs (e.g. RuntimeError: cuda runtime error (59) : device-side assert triggered
) you can go over to this repo's issue tracker, specially on the closed ones, to see if it's been resolved or its workaround. If you are sure that the bug is not reported, feel free to open a new issue for that.
Installation
- Requires Python 3.7 (or whatever is supported by PyQt5)
- No executables, build it from source if you need one.
- For global access, install it outside of virtual environments.
pip install ayolo
Usage
- Call
annotate
with the dataset path, either relative or absolute.
ayolo annotate <dir_path>
Dataset Structure
<dir_path>
├── img_1.png
├── img_2.png
├── img_3.png
├── classes.txt
└── annotations.txt
- Supported image extensions:
.png
,.jpg
- Supported annotations format:
.txt
- Supported classnames format:
.txt
Interfaces
This module provides a PyQt5 window for making annotations on yolov4 datasets. The annotator window consists of 3 interfaces:
Image Browser (Left)
- Filters for annotated and unannotated images.
- Keyboard and mouse shortcuts for faster navigation.
- Annotations are saved every time an image it's navigated away from.
Annotator (Center)
- Twice left click for annotating to avoid wrist damage.
- Cross lines for better accurary.
- Realtime coordinate location.
- Window resize persistent.
- Image scaled to fit container.
- Instant colors for class distinction.
- Right click to undo selection.
Control Panel (Right)
- Realtime current annotations listing.
- Buttons with global shotcuts for managing annotations/images.
- Search feature for class names.
- Ability to create new classes on the go.
- Keyboard and mouse shortcuts for navigating class names search results.
Buttons
Available buttons in annotator window:
Button | Action |
---|---|
Prev |
Navigate previous Image |
Next |
Navigate next Image |
Save |
Save current annotations |
Null |
Mark image as Null |
Undo |
Undo last annotation |
Delete |
Delete/Discard current Image |
Clear |
Clear all current annotations |
Keyboard Shortcuts
Available keyboard shortcuts in annotator window / interfaces:
Key/KeySequence | Interface | Action |
---|---|---|
PgUp |
Global | Navigate previous Image |
PgDn |
Global | Navigate next Image |
Ctrl + S |
Global | Save current annotations |
Ctrl + N |
Global | Mark image as Null |
Ctrl + Z |
Global | Undo last annotation |
Ctrl + D |
Global | Delete/Discard current Image |
Ctrl + X |
Global | Clear all current annotations |
ArrowUp |
Control Panel | Select previous class |
ArrowDn |
Control Panel | Select next class |
Mouse Shortcuts
Available mouse events in annotator interface:
Key/KeySequence | Interface | Action |
---|---|---|
Left |
Annotator | Start/Finish rectangle annotation |
Right |
Annotator | Undo last annotation |
ScrollUp |
Annotator | Select previous class |
ScrollDn |
Annotator | Select next class |
Back |
Annotator | Navigate previous Image |
Forward |
Annotator | Navigate next Image |
Back
andForward
buttons are not available in some mice, they are typically only available on gaming mice
Contribute
Contributions are welcomed, as long as it doesn't cause any harm to users.
Possibly implemented features ?
I am a normal hooman who has a daily job, thus not a lot time available, but ... let's put some expectations ... soon :tm:.
- Augmentation of datasets: brightness, rotations, contrast, etc.
- Preprocessing of datasets: cropping, resizing, etc.
- Choose output format: yolov4 txt, coco, xml, etc.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file ayolo-0.2.1.tar.gz
.
File metadata
- Download URL: ayolo-0.2.1.tar.gz
- Upload date:
- Size: 13.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 359f1d322917b8400b0ace4e202009736bf3135d260d73c9b71e4ff72d3c6d78 |
|
MD5 | 1d8ee111590153920186f93c336009c9 |
|
BLAKE2b-256 | 6b2eb26fbffa001ca4e812026577d1c7e27a4c264ea794dab7dd7e08883df332 |
File details
Details for the file ayolo-0.2.1-py3-none-any.whl
.
File metadata
- Download URL: ayolo-0.2.1-py3-none-any.whl
- Upload date:
- Size: 12.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a62d02b4dfd6dc372a27c97e2dc177e36c8def33e5ac3c539d66131f66495d14 |
|
MD5 | 52c51b0eb1f1178929f4346b631ff457 |
|
BLAKE2b-256 | f1097882f352058db6d81e6a327e982dc6d5719c7b63c41922cb0f920b0390ee |