Fix SSIMULACRA2 weight indexing for small images #4491
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
This PR fixes what seems to be an indexing bug for small images. When calculating the average values, the loop breaks if the image has been downsampled to a point where either dimension is smaller than 8. This happens when at least one of the original dimensions is smaller than 256. If the loop breaks in this way,
Msssim::scaleshas fewer values thankNumScales. Because the channel is the outer dimension of the loop that calculates the final weighted value and the index is incremented in the loop body, different weights are used for the same scale and channel than for large images. As far as I can tell from the README of https://github.com/cloudinary/ssimulacra2, no dataset with images that small are used in the training process, so this behavior is not taken into account when tuning.Pull Request Checklist
./ci.sh lintfor automatic code formatting.Please review the full contributing guidelines for more details.