From c66a2f01c7b6d01d871a95c9808548a7ffee4e26 Mon Sep 17 00:00:00 2001 From: Haobo Yuan Date: Thu, 7 Sep 2023 13:52:48 +0800 Subject: [PATCH 1/3] bugfix #2926 --- mmcv/transforms/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mmcv/transforms/utils.py b/mmcv/transforms/utils.py index 370580dcf4..e1bd32f901 100644 --- a/mmcv/transforms/utils.py +++ b/mmcv/transforms/utils.py @@ -1,5 +1,6 @@ # Copyright (c) OpenMMLab. All rights reserved. +import copy import functools import inspect import weakref @@ -80,7 +81,7 @@ def __call__(self, *args, **kwargs): def __get__(self, obj, cls): self.instance_ref = weakref.ref(obj) - return self + return copy.deepcopy(self) def avoid_cache_randomness(cls): From 021afc92720bbeee208e1697a7a5a0eda7c3d04f Mon Sep 17 00:00:00 2001 From: Haobo Yuan Date: Thu, 7 Sep 2023 14:45:00 +0800 Subject: [PATCH 2/3] deepcopy -> copy --- mmcv/transforms/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mmcv/transforms/utils.py b/mmcv/transforms/utils.py index e1bd32f901..cc42591beb 100644 --- a/mmcv/transforms/utils.py +++ b/mmcv/transforms/utils.py @@ -81,7 +81,7 @@ def __call__(self, *args, **kwargs): def __get__(self, obj, cls): self.instance_ref = weakref.ref(obj) - return copy.deepcopy(self) + return copy.copy(self) def avoid_cache_randomness(cls): From 6f7a8710790c1c8a516671c996e3b5e1926f033b Mon Sep 17 00:00:00 2001 From: Yining Li Date: Thu, 7 Sep 2023 15:17:01 +0800 Subject: [PATCH 3/3] Update mmcv/transforms/utils.py --- mmcv/transforms/utils.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mmcv/transforms/utils.py b/mmcv/transforms/utils.py index cc42591beb..feb2396bf8 100644 --- a/mmcv/transforms/utils.py +++ b/mmcv/transforms/utils.py @@ -81,6 +81,9 @@ def __call__(self, *args, **kwargs): def __get__(self, obj, cls): self.instance_ref = weakref.ref(obj) + # Return a copy to avoid multiple transform instances sharing + # one `cache_randomness` instance, which may cause data races + # in multithreading cases. return copy.copy(self)