fix: support case-insensitive images/labels folders in YOLO datasets #421
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Fix case-sensitive matching issue in YOLO dataset folder parsing. The current implementation only supports lowercase
images
andlabels
folders, causing annotation matching to fail when using capitalized folder names likeImages
andLabels
.Changes
_describe_file()
inroboflow/util/folderparser.py
to use case-insensitive regex replacement instead of hardcoded lowercase string matchingimages
,Images
,IMAGES
,labels
,Labels
,LABELS
, etc.Problem
When uploading YOLO format datasets with capitalized folder names (e.g.,
Train/Images
andTrain/Labels
), the annotation files were not being matched to their corresponding images. This is because thefullkey2
generation used case-sensitive string replacement:For a path like
/Train/Images/image.jpg
, the replacement would not match, causingfullkey2
to remain as/train/images/image
instead of the expected/train/image
.Solution
Use
re.sub()
withre.IGNORECASE
flag:Testing
Verified that:
Images
/Labels
) are now correctly matchedannotations = OK
for all imagesRelated Issues
Fixes the issue where YOLO datasets with non-lowercase folder names fail to upload annotations.