Fix simultaneous label remapping in mean_iou - #810
Open
feng1201 wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
label_mapcurrently runs before converting decoded images to NumPy arrays. Consequently,MeanIoU.computeraisesTypeError: 'PngImageFile' object does not support item assignmentfor non-empty mappings. When the helper receives a NumPy array directly, successive assignments instead cascade and modify the caller's labels:{0: 1, 1: 0}turns[[0, 1]]into[[0, 0]]instead of swapping the classes.Convert inputs to independent arrays first, then match every mapping against an unchanged copy of the original labels. Document the simultaneous mapping behavior. Label reduction and ignored-pixel handling remain in their existing order.
Reproduction from the repository root:
Validation on Python 3.11.15, Datasets 2.21.0, NumPy 1.26.4 and Pillow 12.3.0:
python -m pytest tests/test_mean_iou.py tests/test_metric_common.py -k mean_iou -q --tb=short: 23 passed, 1 remote test skipped by the repository's default settings.make quality: passed across the repository.The regressions cover public
load(...).compute(...)calls with NumPy/PIL inputs, binary swaps, three-class cycles, mapping order, read-only arrays, caller input preservation, and label reduction/ignored pixels. Other framework-dependent metrics and remote tests were not run. Prepared with Codex assistance; the reported commands were executed locally.