[Fix] Fix Visualizer that built vis_backends will not be used when save_dir is None (#1275)
parent
2df93eb51f
commit
4fdab5e9cb
|
@ -6,8 +6,6 @@ from typing import TYPE_CHECKING, Dict, List, Optional, Sequence, Tuple, Union
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from matplotlib.font_manager import FontProperties
|
from matplotlib.font_manager import FontProperties
|
||||||
|
|
||||||
import logging
|
|
||||||
|
|
||||||
import cv2
|
import cv2
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import torch
|
import torch
|
||||||
|
@ -15,7 +13,6 @@ import torch.nn.functional as F
|
||||||
|
|
||||||
from mmengine.config import Config
|
from mmengine.config import Config
|
||||||
from mmengine.dist import master_only
|
from mmengine.dist import master_only
|
||||||
from mmengine.logging import print_log
|
|
||||||
from mmengine.registry import VISBACKENDS, VISUALIZERS
|
from mmengine.registry import VISBACKENDS, VISUALIZERS
|
||||||
from mmengine.structures import BaseDataElement
|
from mmengine.structures import BaseDataElement
|
||||||
from mmengine.utils import ManagerMixin
|
from mmengine.utils import ManagerMixin
|
||||||
|
@ -165,17 +162,9 @@ class Visualizer(ManagerMixin):
|
||||||
self._dataset_meta: Optional[dict] = None
|
self._dataset_meta: Optional[dict] = None
|
||||||
self._vis_backends: Union[Dict, Dict[str, 'BaseVisBackend']] = dict()
|
self._vis_backends: Union[Dict, Dict[str, 'BaseVisBackend']] = dict()
|
||||||
|
|
||||||
if save_dir is None:
|
if vis_backends is not None:
|
||||||
print_log(
|
|
||||||
'`Visualizer` backend is not initialized '
|
|
||||||
'because save_dir is None.',
|
|
||||||
logger='current',
|
|
||||||
level=logging.WARNING)
|
|
||||||
elif vis_backends is not None:
|
|
||||||
assert len(vis_backends) > 0, 'empty list'
|
assert len(vis_backends) > 0, 'empty list'
|
||||||
names = [
|
names = [vis_backend.get('name') for vis_backend in vis_backends]
|
||||||
vis_backend.get('name', None) for vis_backend in vis_backends
|
|
||||||
]
|
|
||||||
if None in names:
|
if None in names:
|
||||||
if len(set(names)) > 1:
|
if len(set(names)) > 1:
|
||||||
raise RuntimeError(
|
raise RuntimeError(
|
||||||
|
@ -194,8 +183,8 @@ class Visualizer(ManagerMixin):
|
||||||
if None not in names and len(set(names)) != len(names):
|
if None not in names and len(set(names)) != len(names):
|
||||||
raise RuntimeError('The name fields cannot be the same')
|
raise RuntimeError('The name fields cannot be the same')
|
||||||
|
|
||||||
save_dir = osp.join(save_dir, 'vis_data')
|
if save_dir is not None:
|
||||||
|
save_dir = osp.join(save_dir, 'vis_data')
|
||||||
for vis_backend in vis_backends:
|
for vis_backend in vis_backends:
|
||||||
name = vis_backend.pop('name', vis_backend['type'])
|
name = vis_backend.pop('name', vis_backend['type'])
|
||||||
vis_backend.setdefault('save_dir', save_dir)
|
vis_backend.setdefault('save_dir', save_dir)
|
||||||
|
|
|
@ -11,7 +11,6 @@ import torch
|
||||||
import torch.nn as nn
|
import torch.nn as nn
|
||||||
|
|
||||||
from mmengine import VISBACKENDS, Config
|
from mmengine import VISBACKENDS, Config
|
||||||
from mmengine.logging import MMLogger
|
|
||||||
from mmengine.visualization import Visualizer
|
from mmengine.visualization import Visualizer
|
||||||
|
|
||||||
|
|
||||||
|
@ -69,14 +68,9 @@ class TestVisualizer(TestCase):
|
||||||
visualizer = Visualizer(image=self.image)
|
visualizer = Visualizer(image=self.image)
|
||||||
visualizer.get_image()
|
visualizer.get_image()
|
||||||
|
|
||||||
# test save_dir
|
# build visualizer without `save_dir`
|
||||||
# Warning should be raised since no backend is initialized.
|
|
||||||
with self.assertLogs(MMLogger.get_current_instance(), level='WARNING'):
|
|
||||||
Visualizer()
|
|
||||||
|
|
||||||
visualizer = Visualizer(
|
visualizer = Visualizer(
|
||||||
vis_backends=copy.deepcopy(self.vis_backend_cfg))
|
vis_backends=copy.deepcopy(self.vis_backend_cfg))
|
||||||
assert visualizer.get_backend('mock1') is None
|
|
||||||
|
|
||||||
visualizer = Visualizer(
|
visualizer = Visualizer(
|
||||||
vis_backends=copy.deepcopy(self.vis_backend_cfg),
|
vis_backends=copy.deepcopy(self.vis_backend_cfg),
|
||||||
|
|
Loading…
Reference in New Issue