-
Notifications
You must be signed in to change notification settings - Fork 7k
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
Remove empty boxes before NMS in detection models #1019
Merged
Merged
Conversation
This file contains 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
Codecov Report
@@ Coverage Diff @@
## master #1019 +/- ##
==========================================
+ Coverage 63.27% 63.28% +0.01%
==========================================
Files 65 65
Lines 5149 5151 +2
Branches 772 772
==========================================
+ Hits 3258 3260 +2
Misses 1667 1667
Partials 224 224
Continue to review full report at Codecov.
|
sprt
added a commit
to sprt/vision
that referenced
this pull request
Dec 11, 2019
pytorch#1019 introduced a change that removes empty boxes in postprocessing on the basis that, previously, empty boxes would actually reach this postprocessing step, and that the model could therefore output empty boxes (even though NMS would've most likely filtered them out). It's essentially a safety check that'd be seldom needed. However, that filtering causes dynamicity on the TPU (because the number of empty boxes, if any, would be unknown). And in any case, we recently introduced a change in PR pytorch#4 that purposefully pads the boxes tensor with empty boxes, to avoid dynamicity. Therefore there's no point trying to remove boxes that we use as padding, we'll just filter those out of the output on the CPU.
sprt
added a commit
to sprt/vision
that referenced
this pull request
Dec 11, 2019
pytorch#1019 introduced a change that removes empty boxes in postprocessing on the basis that, previously, empty boxes would actually reach this postprocessing step, and that the model could therefore output empty boxes (even though NMS would've most likely filtered them out). It's essentially a safety check that'd be seldom needed. However, that filtering causes dynamicity on the TPU (because the number of empty boxes, if any, would be unknown). And in any case, we recently introduced a change in PR pytorch#4 that purposefully pads the boxes tensor with empty boxes, to avoid dynamicity. Therefore there's no point trying to remove boxes that we use as padding, we'll just filter those out of the output on the CPU.
sprt
added a commit
to sprt/vision
that referenced
this pull request
Dec 11, 2019
pytorch#1019 introduced a change that removes empty boxes in postprocessing on the basis that, previously, empty boxes would actually reach this postprocessing step, and that the model could therefore output empty boxes (even though NMS would've most likely filtered them out). It's essentially a safety check that'd be seldom needed. However, that filtering causes dynamicity on the TPU (because the number of empty boxes, if any, would be unknown). And in any case, we recently introduced a change in PR pytorch#4 that purposefully pads the boxes tensor with empty boxes, to avoid dynamicity. Therefore there's no point trying to remove boxes that we use as padding, we'll just filter those out of the output on the CPU.
sprt
added a commit
to jysohn23/vision
that referenced
this pull request
Dec 14, 2019
pytorch#1019 introduced a change that removes empty boxes in postprocessing on the basis that, previously, empty boxes would actually reach this postprocessing step, and that the model could therefore output empty boxes (even though NMS would've most likely filtered them out). It's essentially a safety check that'd be seldom needed. However, that filtering causes dynamicity on the TPU (because the number of empty boxes, if any, would be unknown). And in any case, we recently introduced a change in PR #4 that purposefully pads the boxes tensor with empty boxes, to avoid dynamicity. Therefore there's no point trying to remove boxes that we use as padding, we'll just filter those out of the output on the CPU.
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.
Prior to this PR, we would pass (and return) empty boxes to the NMS.
This means that those boxes could be returned by the model (even though they might have very low scores and get filtered afterwards).
This is more of a safety check, and additionally avoid potential divisions by zero in the NMS.