OpenMMLab Detection Toolbox and Benchmark https://mmdetection.readthedocs.io/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

43 lines
1.5 KiB

# Copyright (c) OpenMMLab. All rights reserved.
try:
from mmcv.cnn import RFSearchHook
except ImportError:
RFSearchHook = None
def rfnext_init_model(detector, cfg):
"""Rcecptive field search via dilation rates.
Please refer to `RF-Next: Efficient Receptive Field
Search for Convolutional Neural Networks
<https://arxiv.org/abs/2206.06637>`_ for more details.
Args:
detector (nn.Module): The detector before initializing RF-Next.
cfg (mmcv.Config): The config for RF-Next.
If the RFSearchHook is defined in the cfg.custom_hooks,
the detector will be initialized for RF-Next.
"""
if cfg.get('custom_hooks', None) is None:
return
custom_hook_types = [hook['type'] for hook in cfg.custom_hooks]
if 'RFSearchHook' not in custom_hook_types:
return
index = custom_hook_types.index('RFSearchHook')
rfsearch_cfg = cfg.custom_hooks[index]
assert rfsearch_cfg['type'] == 'RFSearchHook'
assert RFSearchHook is not None, 'Please install mmcv > 1.7.0'
# initlize a RFSearchHook
rfsearch_warp = RFSearchHook(
mode=rfsearch_cfg.get('mode', 'search'),
config=rfsearch_cfg.get('config', None),
rfstructure_file=rfsearch_cfg.get('rfstructure_file', None),
by_epoch=rfsearch_cfg.get('by_epoch', True),
verbose=rfsearch_cfg.get('verbose', True),
)
rfsearch_warp.init_model(detector)
rfsearch_cfg['rfstructure_file'] = None