Commit d48cce3a authored by Yuxin Wu's avatar Yuxin Wu

Delay the error about duplicated layer registry until it's used (#1125).

parent 5a209dbd
...@@ -44,8 +44,9 @@ def print_class_histogram(roidbs): ...@@ -44,8 +44,9 @@ def print_class_histogram(roidbs):
gt_classes = entry['class'][gt_inds] gt_classes = entry['class'][gt_inds]
gt_hist += np.histogram(gt_classes, bins=hist_bins)[0] gt_hist += np.histogram(gt_classes, bins=hist_bins)[0]
data = [[dataset.class_names[i], v] for i, v in enumerate(gt_hist)] data = [[dataset.class_names[i], v] for i, v in enumerate(gt_hist)]
data.append(['total', sum([x[1] for x in data])]) data.append(['total', sum(x[1] for x in data)])
table = tabulate(data, headers=['class', '#box'], tablefmt='pipe') # the first line is BG
table = tabulate(data[1:], headers=['class', '#box'], tablefmt='pipe')
logger.info("Ground-Truth Boxes:\n" + colored(table, 'cyan')) logger.info("Ground-Truth Boxes:\n" + colored(table, 'cyan'))
......
...@@ -20,9 +20,13 @@ _LAYER_REGISTRY = {} ...@@ -20,9 +20,13 @@ _LAYER_REGISTRY = {}
__all__ = ['layer_register'] __all__ = ['layer_register']
_NameConflict = "LAYER_NAME_CONFLICT!!"
def _register(name, func): def _register(name, func):
if name in _LAYER_REGISTRY: if name in _LAYER_REGISTRY:
raise ValueError("Layer named {} is already registered!".format(name)) _LAYER_REGISTRY[name] = _NameConflict
return
if name in ['tf']: if name in ['tf']:
raise ValueError(logger.error("A layer cannot be named {}".format(name))) raise ValueError(logger.error("A layer cannot be named {}".format(name)))
_LAYER_REGISTRY[name] = func _LAYER_REGISTRY[name] = func
...@@ -39,7 +43,10 @@ def get_registered_layer(name): ...@@ -39,7 +43,10 @@ def get_registered_layer(name):
Returns: Returns:
the wrapped layer function, or None if not registered. the wrapped layer function, or None if not registered.
""" """
return _LAYER_REGISTRY.get(name, None) ret = _LAYER_REGISTRY.get(name, None)
if ret == _NameConflict:
raise KeyError("Layer named '{}' is registered with `@layer_register` more than once!".format(name))
return ret
def disable_layer_logging(): def disable_layer_logging():
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment