pytorch / vision

Datasets, Transforms and Models specific to Computer Vision
https://pytorch.org/vision
BSD 3-Clause "New" or "Revised" License
15.98k stars 6.92k forks source link

Use Sequence for parameters type checking in transforms.RandomErase #8549

Closed lqrhy3 closed 2 weeks ago

lqrhy3 commented 1 month ago

🚀 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

NicolasHug commented 1 month ago

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.

venkatram-dev commented 2 weeks ago

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

NicolasHug commented 2 weeks ago

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!