vision icon indicating copy to clipboard operation
vision copied to clipboard

Use Sequence for parameters type checking in transforms.RandomErase

Open lqrhy3 opened this issue 1 year ago • 1 comments

🚀 The feature

Use typing.Sequence to check types of sample and ratio arguments instead of (list, tuple) in transforms.RandomErase class.

Motivation, pitch

As I see all other transforms use typing.Sequence to ensure that sequences were passed where needed (e.g. Normalize, transforms.RandomResizedCrop and so on). However isinstance(scale, (tuple, list)) (and same for ratio) is used in RandomErase. This, for example, leads to impossibility of instantiating this transform from config using hydra.instantiate, because scale then has OmegaConf.ListConfig type which is a Sequence, but not tuple or float and causes TypeError.

Alternatives

No response

Additional context

No response

lqrhy3 avatar Jul 29 '24 12:07 lqrhy3

Thanks for the proposal @lqrhy3, happy to consider a PR. Sometimes, we have to use weird / wrong type check and annotation because of torchscript support. Not sure if that applies here, but that could be a reason why it was done this way in the first place. Also note that we should mostly just update transforms.v2.RandomErasing instead of transforms.RandomErasing. We can update the latter if it doesn't take too much effort, but the old "v1" namespace is discouraged in favor of v2 now.

NicolasHug avatar Jul 29 '24 13:07 NicolasHug

created PR https://github.com/pytorch/vision/pull/8615

venkatram-dev avatar Aug 29 '24 00:08 venkatram-dev

Looks like this can be closed now that https://github.com/pytorch/vision/pull/8615 is merged. Thanks @lqrhy3 for the issue and @venkatram-dev for the PR!

NicolasHug avatar Aug 30 '24 15:08 NicolasHug