-
Notifications
You must be signed in to change notification settings - Fork 1
Support for UltralyticsParser. #367
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #367 +/- ##
========================================
Coverage 95.29% 95.30%
========================================
Files 104 105 +1
Lines 6401 6540 +139
========================================
+ Hits 6100 6233 +133
- Misses 301 307 +6 ☔ View full report in Codecov by Sentry. |
klemen1999
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Inital integration looks good, left some comments.
Other comments:
- Add tests
- Add parser to the README and
docs.luxonisafter merge
|
Tests are added (3 datasets for obj. det, kpt. det., and inst. seg.), README updated, I moved the Ultralytics format up, right after COCO format because its probably very popular |
Purpose
A lot of customers are using YOLOv8 or Ultralytics format for datasets. We need a parser for that.
Specification
YOLOv8 dataset format structure is like:
while Ultralytics (Hub) format is like:
For example you can download coco8 from Ultralytics Github to get the Ultralytics format, or download any dataset from Roboflow Universe in YOLOv8 format.
This PR introduces all-in-one
Ultralyticsparser for parsing both formats and following tasks:How we figure out the task? Object Detection is simple because all 3 tasks have at least 5 elements in each row of an annotation file. All 3 tasks have
class_ix, x, y, w, hwhile the instance segmentation and keypoints have additional ones. If the dataset is keypoints-based then we look into theyamlfile that is present in all ultralytics/yolov8 datasets and look for fieldkpt_shapewhich tells us the number and dimensionality of the keypoints (can be 2D or 3D). If it is 2D then we add visibility (3rd dim) to2(full visible). 3D kpts have 3rd dim alreadyLiteral[0,1,2]. So:len(elements) == 5len(elements) > 5 and kpt_shape present in yaml fileDependencies & Potential Impact
None / not applicable
Deployment Plan
None / not applicable
Testing & Validation
Tested on: