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
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
|
|
|