3
3
A flexible network w/ dataclass based config for stacking NN blocks including
4
4
self-attention (or similar) layers.
5
5
6
- Currently used to implement experimential variants of:
6
+ Currently used to implement experimental variants of:
7
7
* Bottleneck Transformers
8
8
* Lambda ResNets
9
9
* HaloNets
23
23
def _cfg (url = '' , ** kwargs ):
24
24
return {
25
25
'url' : url , 'num_classes' : 1000 , 'input_size' : (3 , 224 , 224 ), 'pool_size' : (7 , 7 ),
26
- 'crop_pct' : 0.875 , 'interpolation' : 'bicubic' ,
26
+ 'crop_pct' : 0.95 , 'interpolation' : 'bicubic' ,
27
27
'mean' : IMAGENET_DEFAULT_MEAN , 'std' : IMAGENET_DEFAULT_STD ,
28
28
'first_conv' : 'stem.conv1.conv' , 'classifier' : 'head.fc' ,
29
29
'fixed_input_size' : False , 'min_input_size' : (3 , 224 , 224 ),
@@ -34,7 +34,7 @@ def _cfg(url='', **kwargs):
34
34
default_cfgs = {
35
35
# GPU-Efficient (ResNet) weights
36
36
'botnet26t_256' : _cfg (
37
- url = '' ,
37
+ url = 'https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-attn-weights/botnet26t_c1_256-167a0e9f.pth ' ,
38
38
fixed_input_size = True , input_size = (3 , 256 , 256 ), pool_size = (8 , 8 )),
39
39
'botnet50ts_256' : _cfg (
40
40
url = '' ,
@@ -46,19 +46,26 @@ def _cfg(url='', **kwargs):
46
46
'halonet_h1' : _cfg (url = '' , input_size = (3 , 256 , 256 ), pool_size = (8 , 8 ), min_input_size = (3 , 256 , 256 )),
47
47
'halonet26t' : _cfg (
48
48
url = 'https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-attn-weights/halonet26t_256-9b4bf0b3.pth' ,
49
- input_size = (3 , 256 , 256 ), pool_size = (8 , 8 ), min_input_size = (3 , 256 , 256 )),
49
+ input_size = (3 , 256 , 256 ), pool_size = (8 , 8 ), min_input_size = (3 , 256 , 256 ), crop_pct = 0.94 ),
50
50
'sehalonet33ts' : _cfg (
51
51
url = 'https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-attn-weights/sehalonet33ts_256-87e053f9.pth' ,
52
52
input_size = (3 , 256 , 256 ), pool_size = (8 , 8 ), min_input_size = (3 , 256 , 256 ), crop_pct = 0.94 ),
53
53
'halonet50ts' : _cfg (
54
- url = '' , input_size = (3 , 256 , 256 ), pool_size = (8 , 8 ), min_input_size = (3 , 256 , 256 )),
54
+ url = 'https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-attn-weights/halonet50ts_256_ra3-f07eab9f.pth' ,
55
+ input_size = (3 , 256 , 256 ), pool_size = (8 , 8 ), min_input_size = (3 , 256 , 256 ), crop_pct = 0.94 ),
55
56
'eca_halonext26ts' : _cfg (
56
57
url = 'https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-attn-weights/eca_halonext26ts_256-1e55880b.pth' ,
57
- input_size = (3 , 256 , 256 ), pool_size = (8 , 8 ), min_input_size = (3 , 256 , 256 )),
58
+ input_size = (3 , 256 , 256 ), pool_size = (8 , 8 ), min_input_size = (3 , 256 , 256 ), crop_pct = 0.94 ),
58
59
59
60
'lambda_resnet26t' : _cfg (
60
- url = 'https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-attn-weights/lambda_resnet26t_256-b040fce6.pth' ,
61
+ url = 'https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-attn-weights/lambda_resnet26t_a2h_256-25ded63d.pth' ,
62
+ min_input_size = (3 , 128 , 128 ), input_size = (3 , 256 , 256 ), pool_size = (8 , 8 )),
63
+ 'lambda_resnet50ts' : _cfg (
64
+ url = '' ,
61
65
min_input_size = (3 , 128 , 128 ), input_size = (3 , 256 , 256 ), pool_size = (8 , 8 )),
66
+ 'lambda_resnet26rpt_256' : _cfg (
67
+ url = 'https://github.com/rwightman/pytorch-image-models/releases/download/v0.1-attn-weights/lambda_resnet26rpt_a2h_256-482adad8.pth' ,
68
+ fixed_input_size = True , input_size = (3 , 256 , 256 ), pool_size = (8 , 8 )),
62
69
}
63
70
64
71
@@ -198,6 +205,33 @@ def _cfg(url='', **kwargs):
198
205
self_attn_layer = 'lambda' ,
199
206
self_attn_kwargs = dict (r = 9 )
200
207
),
208
+ lambda_resnet50ts = ByoModelCfg (
209
+ blocks = (
210
+ ByoBlockCfg (type = 'bottle' , d = 3 , c = 256 , s = 1 , gs = 0 , br = 0.25 ),
211
+ interleave_blocks (types = ('bottle' , 'self_attn' ), every = 4 , d = 4 , c = 512 , s = 2 , gs = 0 , br = 0.25 ),
212
+ interleave_blocks (types = ('bottle' , 'self_attn' ), d = 6 , c = 1024 , s = 2 , gs = 0 , br = 0.25 ),
213
+ interleave_blocks (types = ('bottle' , 'self_attn' ), d = 3 , c = 2048 , s = 2 , gs = 0 , br = 0.25 ),
214
+ ),
215
+ stem_chs = 64 ,
216
+ stem_type = 'tiered' ,
217
+ stem_pool = 'maxpool' ,
218
+ act_layer = 'silu' ,
219
+ self_attn_layer = 'lambda' ,
220
+ self_attn_kwargs = dict (r = 9 )
221
+ ),
222
+ lambda_resnet26rpt_256 = ByoModelCfg (
223
+ blocks = (
224
+ ByoBlockCfg (type = 'bottle' , d = 2 , c = 256 , s = 1 , gs = 0 , br = 0.25 ),
225
+ ByoBlockCfg (type = 'bottle' , d = 2 , c = 512 , s = 2 , gs = 0 , br = 0.25 ),
226
+ interleave_blocks (types = ('bottle' , 'self_attn' ), d = 2 , c = 1024 , s = 2 , gs = 0 , br = 0.25 ),
227
+ ByoBlockCfg (type = 'self_attn' , d = 2 , c = 2048 , s = 2 , gs = 0 , br = 0.25 ),
228
+ ),
229
+ stem_chs = 64 ,
230
+ stem_type = 'tiered' ,
231
+ stem_pool = 'maxpool' ,
232
+ self_attn_layer = 'lambda' ,
233
+ self_attn_kwargs = dict (r = None )
234
+ ),
201
235
)
202
236
203
237
@@ -275,6 +309,21 @@ def eca_halonext26ts(pretrained=False, **kwargs):
275
309
276
310
@register_model
277
311
def lambda_resnet26t (pretrained = False , ** kwargs ):
278
- """ Lambda-ResNet-26T . Lambda layers in last two stages.
312
+ """ Lambda-ResNet-26-T . Lambda layers w/ conv pos in last two stages.
279
313
"""
280
314
return _create_byoanet ('lambda_resnet26t' , pretrained = pretrained , ** kwargs )
315
+
316
+
317
+ @register_model
318
+ def lambda_resnet50ts (pretrained = False , ** kwargs ):
319
+ """ Lambda-ResNet-50-TS. SiLU act. Lambda layers w/ conv pos in last two stages.
320
+ """
321
+ return _create_byoanet ('lambda_resnet50ts' , pretrained = pretrained , ** kwargs )
322
+
323
+
324
+ @register_model
325
+ def lambda_resnet26rpt_256 (pretrained = False , ** kwargs ):
326
+ """ Lambda-ResNet-26-R-T. Lambda layers w/ rel pos embed in last two stages.
327
+ """
328
+ kwargs .setdefault ('img_size' , 256 )
329
+ return _create_byoanet ('lambda_resnet26rpt_256' , pretrained = pretrained , ** kwargs )
0 commit comments