[Fix] Fix Visualizer that built vis_backends will not be used when save_dir is None (#1275)

pull/1283/head
Xinyu Yang 2023-07-31 15:29:44 +08:00 committed by GitHub
parent 2df93eb51f
commit 4fdab5e9cb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 22 deletions

View File

@ -6,8 +6,6 @@ from typing import TYPE_CHECKING, Dict, List, Optional, Sequence, Tuple, Union
if TYPE_CHECKING:
from matplotlib.font_manager import FontProperties
import logging
import cv2
import numpy as np
import torch
@ -15,7 +13,6 @@ import torch.nn.functional as F
from mmengine.config import Config
from mmengine.dist import master_only
from mmengine.logging import print_log
from mmengine.registry import VISBACKENDS, VISUALIZERS
from mmengine.structures import BaseDataElement
from mmengine.utils import ManagerMixin
@ -165,17 +162,9 @@ class Visualizer(ManagerMixin):
self._dataset_meta: Optional[dict] = None
self._vis_backends: Union[Dict, Dict[str, 'BaseVisBackend']] = dict()
if save_dir is None:
print_log(
'`Visualizer` backend is not initialized '
'because save_dir is None.',
logger='current',
level=logging.WARNING)
elif vis_backends is not None:
if vis_backends is not None:
assert len(vis_backends) > 0, 'empty list'
names = [
vis_backend.get('name', None) for vis_backend in vis_backends
]
names = [vis_backend.get('name') for vis_backend in vis_backends]
if None in names:
if len(set(names)) > 1:
raise RuntimeError(
@ -194,8 +183,8 @@ class Visualizer(ManagerMixin):
if None not in names and len(set(names)) != len(names):
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:
name = vis_backend.pop('name', vis_backend['type'])
vis_backend.setdefault('save_dir', save_dir)

View File

@ -11,7 +11,6 @@ import torch
import torch.nn as nn
from mmengine import VISBACKENDS, Config
from mmengine.logging import MMLogger
from mmengine.visualization import Visualizer
@ -69,14 +68,9 @@ class TestVisualizer(TestCase):
visualizer = Visualizer(image=self.image)
visualizer.get_image()
# test save_dir
# Warning should be raised since no backend is initialized.
with self.assertLogs(MMLogger.get_current_instance(), level='WARNING'):
Visualizer()
# build visualizer without `save_dir`
visualizer = Visualizer(
vis_backends=copy.deepcopy(self.vis_backend_cfg))
assert visualizer.get_backend('mock1') is None
visualizer = Visualizer(
vis_backends=copy.deepcopy(self.vis_backend_cfg),