Use Sequence for parameters type checking in transforms.RandomErase
🚀 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
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.
created PR https://github.com/pytorch/vision/pull/8615
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!