mirror of
https://github.com/huggingface/pytorch-image-models.git
synced 2025-06-03 15:01:08 +08:00
Rename cs2->cs3 for darknets. Fix features_only for cs3 darknets.
This commit is contained in:
parent
d765305821
commit
d0c5bd5722
@ -58,13 +58,13 @@ default_cfgs = {
|
|||||||
),
|
),
|
||||||
'darknetaa53': _cfg(url=''),
|
'darknetaa53': _cfg(url=''),
|
||||||
|
|
||||||
'cs2darknet_m': _cfg(
|
'cs3darknet_m': _cfg(
|
||||||
url=''),
|
url=''),
|
||||||
'cs2darknet_l': _cfg(
|
'cs3darknet_l': _cfg(
|
||||||
url=''),
|
url=''),
|
||||||
'cs2darknet_f_m': _cfg(
|
'cs3darknet_focus_m': _cfg(
|
||||||
url=''),
|
url=''),
|
||||||
'cs2darknet_f_l': _cfg(
|
'cs3darknet_focus_l': _cfg(
|
||||||
url=''),
|
url=''),
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -185,7 +185,7 @@ model_cfgs = dict(
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
cs2darknet_m=dict(
|
cs3darknet_m=dict(
|
||||||
stem=dict(out_chs=(24, 48), kernel_size=3, stride=2, pool=''),
|
stem=dict(out_chs=(24, 48), kernel_size=3, stride=2, pool=''),
|
||||||
stage=dict(
|
stage=dict(
|
||||||
out_chs=(96, 192, 384, 768),
|
out_chs=(96, 192, 384, 768),
|
||||||
@ -196,20 +196,7 @@ model_cfgs = dict(
|
|||||||
avg_down=False,
|
avg_down=False,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
cs3darknet_l=dict(
|
||||||
cs2darknet_f_m=dict(
|
|
||||||
stem=dict(out_chs=48, kernel_size=6, stride=2, padding=2, pool=''),
|
|
||||||
stage=dict(
|
|
||||||
out_chs=(96, 192, 384, 768),
|
|
||||||
depth=(2, 4, 6, 2),
|
|
||||||
stride=(2,) * 4,
|
|
||||||
bottle_ratio=(1.,) * 4,
|
|
||||||
block_ratio=(0.5,) * 4,
|
|
||||||
avg_down=False,
|
|
||||||
),
|
|
||||||
),
|
|
||||||
|
|
||||||
cs2darknet_l=dict(
|
|
||||||
stem=dict(out_chs=(32, 64), kernel_size=3, stride=2, pool=''),
|
stem=dict(out_chs=(32, 64), kernel_size=3, stride=2, pool=''),
|
||||||
stage=dict(
|
stage=dict(
|
||||||
out_chs=(128, 256, 512, 1024),
|
out_chs=(128, 256, 512, 1024),
|
||||||
@ -221,7 +208,18 @@ model_cfgs = dict(
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
||||||
cs2darknet_f_l=dict(
|
cs3darknet_focus_m=dict(
|
||||||
|
stem=dict(out_chs=48, kernel_size=6, stride=2, padding=2, pool=''),
|
||||||
|
stage=dict(
|
||||||
|
out_chs=(96, 192, 384, 768),
|
||||||
|
depth=(2, 4, 6, 2),
|
||||||
|
stride=(2,) * 4,
|
||||||
|
bottle_ratio=(1.,) * 4,
|
||||||
|
block_ratio=(0.5,) * 4,
|
||||||
|
avg_down=False,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
cs3darknet_focus_l=dict(
|
||||||
stem=dict(out_chs=64, kernel_size=6, stride=2, padding=2, pool=''),
|
stem=dict(out_chs=64, kernel_size=6, stride=2, padding=2, pool=''),
|
||||||
stage=dict(
|
stage=dict(
|
||||||
out_chs=(128, 256, 512, 1024),
|
out_chs=(128, 256, 512, 1024),
|
||||||
@ -438,9 +436,9 @@ class CrossStage(nn.Module):
|
|||||||
return out
|
return out
|
||||||
|
|
||||||
|
|
||||||
class CrossStage2(nn.Module):
|
class CrossStage3(nn.Module):
|
||||||
"""Cross Stage v2.
|
"""Cross Stage 3.
|
||||||
Similar to CrossStage, but with one transition conv for the concat output.
|
Similar to CrossStage, but with only one transition conv for the output.
|
||||||
"""
|
"""
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
@ -461,7 +459,7 @@ class CrossStage2(nn.Module):
|
|||||||
block_fn=ResBottleneck,
|
block_fn=ResBottleneck,
|
||||||
**block_kwargs
|
**block_kwargs
|
||||||
):
|
):
|
||||||
super(CrossStage2, self).__init__()
|
super(CrossStage3, self).__init__()
|
||||||
first_dilation = first_dilation or dilation
|
first_dilation = first_dilation or dilation
|
||||||
down_chs = out_chs if down_growth else in_chs # grow downsample channels to output channels
|
down_chs = out_chs if down_growth else in_chs # grow downsample channels to output channels
|
||||||
self.exp_chs = exp_chs = int(round(out_chs * exp_ratio))
|
self.exp_chs = exp_chs = int(round(out_chs * exp_ratio))
|
||||||
@ -696,8 +694,12 @@ def _init_weights(module, name, zero_init_last=False):
|
|||||||
|
|
||||||
|
|
||||||
def _create_cspnet(variant, pretrained=False, **kwargs):
|
def _create_cspnet(variant, pretrained=False, **kwargs):
|
||||||
# NOTE: DarkNet is one of few models with stride==1 features w/ 6 out_indices [0..5]
|
if variant.startswith('darknet') or variant.startswith('cspdarknet'):
|
||||||
out_indices = kwargs.pop('out_indices', (0, 1, 2, 3, 4, 5) if 'darknet' in variant else (0, 1, 2, 3, 4))
|
# NOTE: DarkNet is one of few models with stride==1 features w/ 6 out_indices [0..5]
|
||||||
|
default_out_indices = (0, 1, 2, 3, 4, 5)
|
||||||
|
else:
|
||||||
|
default_out_indices = (0, 1, 2, 3, 4)
|
||||||
|
out_indices = kwargs.pop('out_indices', default_out_indices)
|
||||||
return build_model_with_cfg(
|
return build_model_with_cfg(
|
||||||
CspNet, variant, pretrained,
|
CspNet, variant, pretrained,
|
||||||
model_cfg=model_cfgs[variant],
|
model_cfg=model_cfgs[variant],
|
||||||
@ -757,24 +759,24 @@ def darknetaa53(pretrained=False, **kwargs):
|
|||||||
|
|
||||||
|
|
||||||
@register_model
|
@register_model
|
||||||
def cs2darknet_m(pretrained=False, **kwargs):
|
def cs3darknet_m(pretrained=False, **kwargs):
|
||||||
return _create_cspnet(
|
return _create_cspnet(
|
||||||
'cs2darknet_m', pretrained=pretrained, block_fn=DarkBlock, stage_fn=CrossStage2, act_layer='silu', **kwargs)
|
'cs3darknet_m', pretrained=pretrained, block_fn=DarkBlock, stage_fn=CrossStage3, act_layer='silu', **kwargs)
|
||||||
|
|
||||||
|
|
||||||
@register_model
|
@register_model
|
||||||
def cs2darknet_l(pretrained=False, **kwargs):
|
def cs3darknet_l(pretrained=False, **kwargs):
|
||||||
return _create_cspnet(
|
return _create_cspnet(
|
||||||
'cs2darknet_l', pretrained=pretrained, block_fn=DarkBlock, stage_fn=CrossStage2, act_layer='silu', **kwargs)
|
'cs3darknet_l', pretrained=pretrained, block_fn=DarkBlock, stage_fn=CrossStage3, act_layer='silu', **kwargs)
|
||||||
|
|
||||||
|
|
||||||
@register_model
|
@register_model
|
||||||
def cs2darknet_f_m(pretrained=False, **kwargs):
|
def cs3darknet_focus_m(pretrained=False, **kwargs):
|
||||||
return _create_cspnet(
|
return _create_cspnet(
|
||||||
'cs2darknet_f_m', pretrained=pretrained, block_fn=DarkBlock, stage_fn=CrossStage2, act_layer='silu', **kwargs)
|
'cs3darknet_focus_m', pretrained=pretrained, block_fn=DarkBlock, stage_fn=CrossStage3, act_layer='silu', **kwargs)
|
||||||
|
|
||||||
|
|
||||||
@register_model
|
@register_model
|
||||||
def cs2darknet_f_l(pretrained=False, **kwargs):
|
def cs3darknet_focus_l(pretrained=False, **kwargs):
|
||||||
return _create_cspnet(
|
return _create_cspnet(
|
||||||
'cs2darknet_f_l', pretrained=pretrained, block_fn=DarkBlock, stage_fn=CrossStage2, act_layer='silu', **kwargs)
|
'cs3darknet_focus_l', pretrained=pretrained, block_fn=DarkBlock, stage_fn=CrossStage3, act_layer='silu', **kwargs)
|
Loading…
x
Reference in New Issue
Block a user