keras-hub-nightly 0.21.0.dev202505060405__py3-none-any.whl → 0.21.0.dev202505080407__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- keras_hub/src/models/cspnet/cspnet_backbone.py +51 -26
- keras_hub/src/models/cspnet/cspnet_presets.py +38 -3
- keras_hub/src/models/segformer/segformer_image_segmenter_preprocessor.py +0 -18
- keras_hub/src/models/segformer/segformer_presets.py +12 -12
- keras_hub/src/utils/timm/convert_cspnet.py +94 -23
- keras_hub/src/utils/timm/preset_loader.py +6 -6
- keras_hub/src/utils/transformers/convert_mixtral.py +3 -3
- keras_hub/src/utils/transformers/convert_qwen_moe.py +6 -6
- keras_hub/src/version.py +1 -1
- {keras_hub_nightly-0.21.0.dev202505060405.dist-info → keras_hub_nightly-0.21.0.dev202505080407.dist-info}/METADATA +1 -1
- {keras_hub_nightly-0.21.0.dev202505060405.dist-info → keras_hub_nightly-0.21.0.dev202505080407.dist-info}/RECORD +13 -13
- {keras_hub_nightly-0.21.0.dev202505060405.dist-info → keras_hub_nightly-0.21.0.dev202505080407.dist-info}/WHEEL +0 -0
- {keras_hub_nightly-0.21.0.dev202505060405.dist-info → keras_hub_nightly-0.21.0.dev202505080407.dist-info}/top_level.txt +0 -0
@@ -81,7 +81,7 @@ class CSPNetBackbone(FeaturePyramidBackbone):
|
|
81
81
|
|
82
82
|
# Pretrained backbone
|
83
83
|
model = keras_hub.models.CSPNetBackbone.from_preset(
|
84
|
-
"
|
84
|
+
"csp_darknet_53_ra_imagenet"
|
85
85
|
)
|
86
86
|
model(input_data)
|
87
87
|
|
@@ -357,18 +357,6 @@ def bottleneck_block(
|
|
357
357
|
dtype=dtype,
|
358
358
|
name=f"{name}_bottleneck_block_bn_3",
|
359
359
|
)(x)
|
360
|
-
if activation == "leaky_relu":
|
361
|
-
x = layers.LeakyReLU(
|
362
|
-
negative_slope=0.01,
|
363
|
-
dtype=dtype,
|
364
|
-
name=f"{name}_bottleneck_block_activation_3",
|
365
|
-
)(x)
|
366
|
-
else:
|
367
|
-
x = layers.Activation(
|
368
|
-
activation,
|
369
|
-
dtype=dtype,
|
370
|
-
name=f"{name}_bottleneck_block_activation_3",
|
371
|
-
)(x)
|
372
360
|
|
373
361
|
x = layers.add(
|
374
362
|
[x, shortcut], dtype=dtype, name=f"{name}_bottleneck_block_add"
|
@@ -673,6 +661,13 @@ def cross_stage(
|
|
673
661
|
name=f"{name}_csp_activation_1",
|
674
662
|
)(x)
|
675
663
|
else:
|
664
|
+
if strides > 1:
|
665
|
+
x = layers.ZeroPadding2D(
|
666
|
+
1,
|
667
|
+
data_format=data_format,
|
668
|
+
dtype=dtype,
|
669
|
+
name=f"{name}_csp_conv_pad_1",
|
670
|
+
)(x)
|
676
671
|
x = layers.Conv2D(
|
677
672
|
filters=down_chs,
|
678
673
|
kernel_size=3,
|
@@ -882,6 +877,13 @@ def cross_stage3(
|
|
882
877
|
name=f"{name}_cs3_activation_1",
|
883
878
|
)(x)
|
884
879
|
else:
|
880
|
+
if strides > 1:
|
881
|
+
x = layers.ZeroPadding2D(
|
882
|
+
1,
|
883
|
+
data_format=data_format,
|
884
|
+
dtype=dtype,
|
885
|
+
name=f"{name}_cs3_conv_pad_1",
|
886
|
+
)(x)
|
885
887
|
x = layers.Conv2D(
|
886
888
|
filters=down_chs,
|
887
889
|
kernel_size=3,
|
@@ -1062,6 +1064,13 @@ def dark_stage(
|
|
1062
1064
|
name=f"{name}_dark_activation_1",
|
1063
1065
|
)(x)
|
1064
1066
|
else:
|
1067
|
+
if strides > 1:
|
1068
|
+
x = layers.ZeroPadding2D(
|
1069
|
+
1,
|
1070
|
+
data_format=data_format,
|
1071
|
+
dtype=dtype,
|
1072
|
+
name=f"{name}_dark_conv_pad_1",
|
1073
|
+
)(x)
|
1065
1074
|
x = layers.Conv2D(
|
1066
1075
|
filters=filters,
|
1067
1076
|
kernel_size=3,
|
@@ -1091,18 +1100,18 @@ def dark_stage(
|
|
1091
1100
|
dtype=dtype,
|
1092
1101
|
name=f"{name}_dark_activation_1",
|
1093
1102
|
)(x)
|
1094
|
-
|
1095
|
-
|
1096
|
-
|
1097
|
-
|
1098
|
-
|
1099
|
-
|
1100
|
-
|
1101
|
-
|
1102
|
-
|
1103
|
-
|
1104
|
-
|
1105
|
-
|
1103
|
+
for i in range(depth):
|
1104
|
+
x = block_fn(
|
1105
|
+
filters=block_channels,
|
1106
|
+
dilation=dilation,
|
1107
|
+
bottle_ratio=bottle_ratio,
|
1108
|
+
groups=groups,
|
1109
|
+
activation=activation,
|
1110
|
+
data_format=data_format,
|
1111
|
+
channel_axis=channel_axis,
|
1112
|
+
dtype=dtype,
|
1113
|
+
name=f"{name}_block_{i}",
|
1114
|
+
)(x)
|
1106
1115
|
return x
|
1107
1116
|
|
1108
1117
|
return apply
|
@@ -1135,6 +1144,13 @@ def create_csp_stem(
|
|
1135
1144
|
or (i == last_idx and strides > 2 and not pooling)
|
1136
1145
|
else 1
|
1137
1146
|
)
|
1147
|
+
if conv_strides > 1:
|
1148
|
+
x = layers.ZeroPadding2D(
|
1149
|
+
(kernel_size - 1) // 2,
|
1150
|
+
data_format=data_format,
|
1151
|
+
dtype=dtype,
|
1152
|
+
name=f"csp_stem_pad_{i}",
|
1153
|
+
)(x)
|
1138
1154
|
x = layers.Conv2D(
|
1139
1155
|
filters=chs,
|
1140
1156
|
kernel_size=kernel_size,
|
@@ -1167,10 +1183,19 @@ def create_csp_stem(
|
|
1167
1183
|
|
1168
1184
|
if pooling == "max":
|
1169
1185
|
assert strides > 2
|
1186
|
+
# Use manual padding to handle edge case scenario to ignore zero's
|
1187
|
+
# as max value instead consider negative values from Leaky Relu type
|
1188
|
+
# of activations.
|
1189
|
+
pad_width = [[1, 1], [1, 1]]
|
1190
|
+
if data_format == "channels_last":
|
1191
|
+
pad_width += [[0, 0]]
|
1192
|
+
else:
|
1193
|
+
pad_width = [[0, 0]] + pad_width
|
1194
|
+
pad_width = [[0, 0]] + pad_width
|
1195
|
+
x = ops.pad(x, pad_width=pad_width, constant_values=float("-inf"))
|
1170
1196
|
x = layers.MaxPooling2D(
|
1171
1197
|
pool_size=3,
|
1172
1198
|
strides=2,
|
1173
|
-
padding="same",
|
1174
1199
|
data_format=data_format,
|
1175
1200
|
dtype=dtype,
|
1176
1201
|
name="csp_stem_pool",
|
@@ -6,11 +6,46 @@ backbone_presets = {
|
|
6
6
|
"description": (
|
7
7
|
"A CSP-DarkNet (Cross-Stage-Partial) image classification model"
|
8
8
|
" pre-trained on the Randomly Augmented ImageNet 1k dataset at "
|
9
|
-
"a
|
9
|
+
"a 256x256 resolution."
|
10
10
|
),
|
11
|
-
"params":
|
11
|
+
"params": 27642184,
|
12
12
|
"path": "cspnet",
|
13
13
|
},
|
14
|
-
"kaggle_handle": "kaggle://keras/cspdarknet/keras/csp_darknet_53_ra_imagenet/
|
14
|
+
"kaggle_handle": "kaggle://keras/cspdarknet/keras/csp_darknet_53_ra_imagenet/2",
|
15
|
+
},
|
16
|
+
"csp_resnext_50_ra_imagenet": {
|
17
|
+
"metadata": {
|
18
|
+
"description": (
|
19
|
+
"A CSP-ResNeXt (Cross-Stage-Partial) image classification model"
|
20
|
+
" pre-trained on the Randomly Augmented ImageNet 1k dataset at "
|
21
|
+
"a 256x256 resolution."
|
22
|
+
),
|
23
|
+
"params": 20569896,
|
24
|
+
"path": "cspnet",
|
25
|
+
},
|
26
|
+
"kaggle_handle": "kaggle://keras/cspdarknet/keras/csp_resnext_50_ra_imagenet/1",
|
27
|
+
},
|
28
|
+
"csp_resnet_50_ra_imagenet": {
|
29
|
+
"metadata": {
|
30
|
+
"description": (
|
31
|
+
"A CSP-ResNet (Cross-Stage-Partial) image classification model"
|
32
|
+
" pre-trained on the Randomly Augmented ImageNet 1k dataset at "
|
33
|
+
"a 256x256 resolution."
|
34
|
+
),
|
35
|
+
"params": 21616168,
|
36
|
+
"path": "cspnet",
|
37
|
+
},
|
38
|
+
"kaggle_handle": "kaggle://keras/cspdarknet/keras/csp_resnet_50_ra_imagenet/1",
|
39
|
+
},
|
40
|
+
"darknet_53_imagenet": {
|
41
|
+
"metadata": {
|
42
|
+
"description": (
|
43
|
+
"A DarkNet image classification model pre-trained on the"
|
44
|
+
"ImageNet 1k dataset at a 256x256 resolution."
|
45
|
+
),
|
46
|
+
"params": 41609928,
|
47
|
+
"path": "cspnet",
|
48
|
+
},
|
49
|
+
"kaggle_handle": "kaggle://keras/cspdarknet/keras/darknet_53_imagenet/1",
|
15
50
|
},
|
16
51
|
}
|
@@ -1,5 +1,3 @@
|
|
1
|
-
import keras
|
2
|
-
|
3
1
|
from keras_hub.src.api_export import keras_hub_export
|
4
2
|
from keras_hub.src.models.image_segmenter_preprocessor import (
|
5
3
|
ImageSegmenterPreprocessor,
|
@@ -8,25 +6,9 @@ from keras_hub.src.models.segformer.segformer_backbone import SegFormerBackbone
|
|
8
6
|
from keras_hub.src.models.segformer.segformer_image_converter import (
|
9
7
|
SegFormerImageConverter,
|
10
8
|
)
|
11
|
-
from keras_hub.src.utils.tensor_utils import preprocessing_function
|
12
|
-
|
13
|
-
IMAGENET_DEFAULT_MEAN = [0.485, 0.456, 0.406]
|
14
|
-
IMAGENET_DEFAULT_STD = [0.229, 0.224, 0.225]
|
15
9
|
|
16
10
|
|
17
11
|
@keras_hub_export("keras_hub.models.SegFormerImageSegmenterPreprocessor")
|
18
12
|
class SegFormerImageSegmenterPreprocessor(ImageSegmenterPreprocessor):
|
19
13
|
backbone_cls = SegFormerBackbone
|
20
14
|
image_converter_cls = SegFormerImageConverter
|
21
|
-
|
22
|
-
@preprocessing_function
|
23
|
-
def call(self, x, y=None, sample_weight=None):
|
24
|
-
if self.image_converter:
|
25
|
-
x = self.image_converter(x)
|
26
|
-
if y is not None:
|
27
|
-
y = self.image_converter(y)
|
28
|
-
|
29
|
-
x = x / 255
|
30
|
-
x = (x - IMAGENET_DEFAULT_MEAN) / IMAGENET_DEFAULT_STD
|
31
|
-
|
32
|
-
return keras.utils.pack_x_y_sample_weight(x, y, sample_weight)
|
@@ -10,7 +10,7 @@ presets = {
|
|
10
10
|
"params": 3719027,
|
11
11
|
"path": "segformer_b0",
|
12
12
|
},
|
13
|
-
"kaggle_handle": "kaggle://keras/segformer/keras/segformer_b0_ade20k_512/
|
13
|
+
"kaggle_handle": "kaggle://keras/segformer/keras/segformer_b0_ade20k_512/3",
|
14
14
|
},
|
15
15
|
"segformer_b1_ade20k_512": {
|
16
16
|
"metadata": {
|
@@ -21,7 +21,7 @@ presets = {
|
|
21
21
|
"params": 13682643,
|
22
22
|
"path": "segformer_b1",
|
23
23
|
},
|
24
|
-
"kaggle_handle": "kaggle://keras/segformer/keras/segformer_b1_ade20k_512/
|
24
|
+
"kaggle_handle": "kaggle://keras/segformer/keras/segformer_b1_ade20k_512/5",
|
25
25
|
},
|
26
26
|
"segformer_b2_ade20k_512": {
|
27
27
|
"metadata": {
|
@@ -32,7 +32,7 @@ presets = {
|
|
32
32
|
"params": 24727507,
|
33
33
|
"path": "segformer_b2",
|
34
34
|
},
|
35
|
-
"kaggle_handle": "kaggle://keras/segformer/keras/segformer_b2_ade20k_512/
|
35
|
+
"kaggle_handle": "kaggle://keras/segformer/keras/segformer_b2_ade20k_512/3",
|
36
36
|
},
|
37
37
|
"segformer_b3_ade20k_512": {
|
38
38
|
"metadata": {
|
@@ -43,7 +43,7 @@ presets = {
|
|
43
43
|
"params": 44603347,
|
44
44
|
"path": "segformer_b3",
|
45
45
|
},
|
46
|
-
"kaggle_handle": "kaggle://keras/segformer/keras/segformer_b3_ade20k_512/
|
46
|
+
"kaggle_handle": "kaggle://keras/segformer/keras/segformer_b3_ade20k_512/3",
|
47
47
|
},
|
48
48
|
"segformer_b4_ade20k_512": {
|
49
49
|
"metadata": {
|
@@ -54,7 +54,7 @@ presets = {
|
|
54
54
|
"params": 61373907,
|
55
55
|
"path": "segformer_b4",
|
56
56
|
},
|
57
|
-
"kaggle_handle": "kaggle://keras/segformer/keras/segformer_b4_ade20k_512/
|
57
|
+
"kaggle_handle": "kaggle://keras/segformer/keras/segformer_b4_ade20k_512/3",
|
58
58
|
},
|
59
59
|
"segformer_b5_ade20k_640": {
|
60
60
|
"metadata": {
|
@@ -65,7 +65,7 @@ presets = {
|
|
65
65
|
"params": 81974227,
|
66
66
|
"path": "segformer_b5",
|
67
67
|
},
|
68
|
-
"kaggle_handle": "kaggle://keras/segformer/keras/segformer_b5_ade20k_640/
|
68
|
+
"kaggle_handle": "kaggle://keras/segformer/keras/segformer_b5_ade20k_640/3",
|
69
69
|
},
|
70
70
|
"segformer_b0_cityscapes_1024": {
|
71
71
|
"metadata": {
|
@@ -76,7 +76,7 @@ presets = {
|
|
76
76
|
"params": 3719027,
|
77
77
|
"path": "segformer_b0",
|
78
78
|
},
|
79
|
-
"kaggle_handle": "kaggle://keras/segformer/keras/segformer_b0_cityscapes_1024/
|
79
|
+
"kaggle_handle": "kaggle://keras/segformer/keras/segformer_b0_cityscapes_1024/3",
|
80
80
|
},
|
81
81
|
"segformer_b1_cityscapes_1024": {
|
82
82
|
"metadata": {
|
@@ -87,7 +87,7 @@ presets = {
|
|
87
87
|
"params": 13682643,
|
88
88
|
"path": "segformer_b1",
|
89
89
|
},
|
90
|
-
"kaggle_handle": "kaggle://keras/segformer/keras/segformer_b1_ade20k_512/
|
90
|
+
"kaggle_handle": "kaggle://keras/segformer/keras/segformer_b1_ade20k_512/1",
|
91
91
|
},
|
92
92
|
"segformer_b2_cityscapes_1024": {
|
93
93
|
"metadata": {
|
@@ -98,7 +98,7 @@ presets = {
|
|
98
98
|
"params": 24727507,
|
99
99
|
"path": "segformer_b2",
|
100
100
|
},
|
101
|
-
"kaggle_handle": "kaggle://keras/segformer/keras/segformer_b2_cityscapes_1024/
|
101
|
+
"kaggle_handle": "kaggle://keras/segformer/keras/segformer_b2_cityscapes_1024/3",
|
102
102
|
},
|
103
103
|
"segformer_b3_cityscapes_1024": {
|
104
104
|
"metadata": {
|
@@ -109,7 +109,7 @@ presets = {
|
|
109
109
|
"params": 44603347,
|
110
110
|
"path": "segformer_b3",
|
111
111
|
},
|
112
|
-
"kaggle_handle": "kaggle://keras/segformer/keras/segformer_b3_cityscapes_1024/
|
112
|
+
"kaggle_handle": "kaggle://keras/segformer/keras/segformer_b3_cityscapes_1024/3",
|
113
113
|
},
|
114
114
|
"segformer_b4_cityscapes_1024": {
|
115
115
|
"metadata": {
|
@@ -120,7 +120,7 @@ presets = {
|
|
120
120
|
"params": 61373907,
|
121
121
|
"path": "segformer_b4",
|
122
122
|
},
|
123
|
-
"kaggle_handle": "kaggle://keras/segformer/keras/segformer_b4_cityscapes_1024/
|
123
|
+
"kaggle_handle": "kaggle://keras/segformer/keras/segformer_b4_cityscapes_1024/3",
|
124
124
|
},
|
125
125
|
"segformer_b5_cityscapes_1024": {
|
126
126
|
"metadata": {
|
@@ -131,6 +131,6 @@ presets = {
|
|
131
131
|
"params": 81974227,
|
132
132
|
"path": "segformer_b5",
|
133
133
|
},
|
134
|
-
"kaggle_handle": "kaggle://keras/segformer/keras/segformer_b5_cityscapes_1024/
|
134
|
+
"kaggle_handle": "kaggle://keras/segformer/keras/segformer_b5_cityscapes_1024/3",
|
135
135
|
},
|
136
136
|
}
|
@@ -17,10 +17,69 @@ def convert_backbone_config(timm_config):
|
|
17
17
|
bottle_ratio = (0.5,) + (1.0,)
|
18
18
|
block_ratio = (1.0,) + (0.5,)
|
19
19
|
expand_ratio = (2.0,) + (1.0,)
|
20
|
+
stem_padding = "same"
|
21
|
+
stem_pooling = None
|
20
22
|
stage_type = "csp"
|
23
|
+
groups = 1
|
21
24
|
block_type = "dark_block"
|
22
25
|
down_growth = True
|
23
|
-
stackwise_strides = 2
|
26
|
+
stackwise_strides = [2, 2, 2, 2, 2]
|
27
|
+
avg_down = False
|
28
|
+
cross_linear = False
|
29
|
+
elif timm_architecture == "cspresnet50":
|
30
|
+
stem_filters = 64
|
31
|
+
stem_kernel_size = 7
|
32
|
+
stem_strides = 4
|
33
|
+
stackwise_depth = [3, 3, 5, 2]
|
34
|
+
stackwise_strides = [1, 2, 2, 2]
|
35
|
+
stackwise_num_filters = [128, 256, 512, 1024]
|
36
|
+
block_type = "bottleneck_block"
|
37
|
+
stage_type = "csp"
|
38
|
+
bottle_ratio = [0.5]
|
39
|
+
block_ratio = [1.0]
|
40
|
+
expand_ratio = [2.0]
|
41
|
+
stem_padding = "valid"
|
42
|
+
stem_pooling = "max"
|
43
|
+
avg_down = False
|
44
|
+
groups = 1
|
45
|
+
down_growth = False
|
46
|
+
cross_linear = True
|
47
|
+
elif timm_architecture == "cspresnext50":
|
48
|
+
stem_filters = 64
|
49
|
+
stem_kernel_size = 7
|
50
|
+
stem_strides = 4
|
51
|
+
stackwise_depth = [3, 3, 5, 2]
|
52
|
+
stackwise_num_filters = [256, 512, 1024, 2048]
|
53
|
+
bottle_ratio = [1.0]
|
54
|
+
block_ratio = [0.5]
|
55
|
+
expand_ratio = [1.0]
|
56
|
+
stage_type = "csp"
|
57
|
+
block_type = "bottleneck_block"
|
58
|
+
stem_pooling = "max"
|
59
|
+
stackwise_strides = [1, 2, 2, 2]
|
60
|
+
groups = 32
|
61
|
+
stem_padding = "valid"
|
62
|
+
avg_down = False
|
63
|
+
down_growth = False
|
64
|
+
cross_linear = True
|
65
|
+
elif timm_architecture == "darknet53":
|
66
|
+
stem_filters = 32
|
67
|
+
stem_kernel_size = 3
|
68
|
+
stem_strides = 1
|
69
|
+
stackwise_depth = [1, 2, 8, 8, 4]
|
70
|
+
stackwise_num_filters = [64, 128, 256, 512, 1024]
|
71
|
+
bottle_ratio = [0.5]
|
72
|
+
block_ratio = [1.0]
|
73
|
+
groups = 1
|
74
|
+
expand_ratio = [1.0]
|
75
|
+
stage_type = "dark"
|
76
|
+
block_type = "dark_block"
|
77
|
+
stem_pooling = None
|
78
|
+
stackwise_strides = [2, 2, 2, 2, 2]
|
79
|
+
stem_padding = "same"
|
80
|
+
avg_down = False
|
81
|
+
down_growth = False
|
82
|
+
cross_linear = False
|
24
83
|
else:
|
25
84
|
raise ValueError(
|
26
85
|
f"Currently, the architecture {timm_architecture} is not supported."
|
@@ -38,6 +97,11 @@ def convert_backbone_config(timm_config):
|
|
38
97
|
block_type=block_type,
|
39
98
|
stackwise_strides=stackwise_strides,
|
40
99
|
down_growth=down_growth,
|
100
|
+
stem_pooling=stem_pooling,
|
101
|
+
stem_padding=stem_padding,
|
102
|
+
avg_down=avg_down,
|
103
|
+
cross_linear=cross_linear,
|
104
|
+
groups=groups,
|
41
105
|
)
|
42
106
|
|
43
107
|
|
@@ -81,21 +145,36 @@ def convert_weights(backbone, loader, timm_config):
|
|
81
145
|
stackwise_depth = backbone.stackwise_depth
|
82
146
|
stage_type = backbone.stage_type
|
83
147
|
block_type = backbone.block_type
|
148
|
+
strides = backbone.stackwise_strides
|
84
149
|
|
85
150
|
for idx, block in enumerate(stackwise_depth):
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
151
|
+
if strides[idx] != 1 or stage_type == "dark":
|
152
|
+
if strides[idx] == 2 and backbone.avg_down:
|
153
|
+
port_conv2d(
|
154
|
+
f"stages.{idx}.conv_down.1.conv",
|
155
|
+
f"stage_{idx}_{stage_type}_conv_down_1",
|
156
|
+
)
|
157
|
+
port_batch_normalization(
|
158
|
+
f"stages.{idx}.conv_down.1.bn",
|
159
|
+
f"stage_{idx}_{stage_type}_bn_1",
|
160
|
+
)
|
161
|
+
else:
|
162
|
+
port_conv2d(
|
163
|
+
f"stages.{idx}.conv_down.conv",
|
164
|
+
f"stage_{idx}_{stage_type}_conv_down_1",
|
165
|
+
)
|
166
|
+
port_batch_normalization(
|
167
|
+
f"stages.{idx}.conv_down.bn",
|
168
|
+
f"stage_{idx}_{stage_type}_bn_1",
|
169
|
+
)
|
170
|
+
if stage_type != "dark":
|
171
|
+
port_conv2d(
|
172
|
+
f"stages.{idx}.conv_exp.conv",
|
173
|
+
f"stage_{idx}_{stage_type}_conv_exp",
|
174
|
+
)
|
175
|
+
port_batch_normalization(
|
176
|
+
f"stages.{idx}.conv_exp.bn", f"stage_{idx}_{stage_type}_bn_2"
|
177
|
+
)
|
99
178
|
|
100
179
|
for i in range(block):
|
101
180
|
port_conv2d(
|
@@ -133,16 +212,8 @@ def convert_weights(backbone, loader, timm_config):
|
|
133
212
|
f"stages.{idx}.conv_transition_b.bn",
|
134
213
|
f"stage_{idx}_{stage_type}_transition_b_bn",
|
135
214
|
)
|
136
|
-
port_conv2d(
|
137
|
-
f"stages.{idx}.conv_transition.conv",
|
138
|
-
f"stage_{idx}_{stage_type}_conv_transition",
|
139
|
-
)
|
140
|
-
port_batch_normalization(
|
141
|
-
f"stages.{idx}.conv_transition.bn",
|
142
|
-
f"stage_{idx}_{stage_type}_transition_bn",
|
143
|
-
)
|
144
215
|
|
145
|
-
|
216
|
+
if stage_type != "dark":
|
146
217
|
port_conv2d(
|
147
218
|
f"stages.{idx}.conv_transition.conv",
|
148
219
|
f"stage_{idx}_{stage_type}_conv_transition",
|
@@ -16,17 +16,17 @@ class TimmPresetLoader(PresetLoader):
|
|
16
16
|
def __init__(self, preset, config):
|
17
17
|
super().__init__(preset, config)
|
18
18
|
architecture = self.config["architecture"]
|
19
|
-
if "resnet"
|
19
|
+
if architecture.startswith("resnet"):
|
20
20
|
self.converter = convert_resnet
|
21
|
-
elif "csp"
|
21
|
+
elif architecture.startswith(("csp", "dark")):
|
22
22
|
self.converter = convert_cspnet
|
23
|
-
elif "densenet"
|
23
|
+
elif architecture.startswith("densenet"):
|
24
24
|
self.converter = convert_densenet
|
25
|
-
elif "mobilenet"
|
25
|
+
elif architecture.startswith("mobilenet"):
|
26
26
|
self.converter = convert_mobilenet
|
27
|
-
elif "vgg"
|
27
|
+
elif architecture.startswith("vgg"):
|
28
28
|
self.converter = convert_vgg
|
29
|
-
elif "efficientnet"
|
29
|
+
elif architecture.startswith("efficientnet"):
|
30
30
|
self.converter = convert_efficientnet
|
31
31
|
else:
|
32
32
|
raise ValueError(
|
@@ -50,19 +50,19 @@ def convert_weights(backbone, loader, transformers_config):
|
|
50
50
|
# Attention layers
|
51
51
|
## Query
|
52
52
|
loader.port_weight(
|
53
|
-
keras_variable=decoder_layer._self_attention_layer.
|
53
|
+
keras_variable=decoder_layer._self_attention_layer.query_dense.kernel,
|
54
54
|
hf_weight_key=f"model.layers.{i}.self_attn.q_proj.weight",
|
55
55
|
hook_fn=transpose_and_reshape,
|
56
56
|
)
|
57
57
|
## Key
|
58
58
|
loader.port_weight(
|
59
|
-
keras_variable=decoder_layer._self_attention_layer.
|
59
|
+
keras_variable=decoder_layer._self_attention_layer.key_dense.kernel,
|
60
60
|
hf_weight_key=f"model.layers.{i}.self_attn.k_proj.weight",
|
61
61
|
hook_fn=transpose_and_reshape,
|
62
62
|
)
|
63
63
|
## Value
|
64
64
|
loader.port_weight(
|
65
|
-
keras_variable=decoder_layer._self_attention_layer.
|
65
|
+
keras_variable=decoder_layer._self_attention_layer.value_dense.kernel,
|
66
66
|
hf_weight_key=f"model.layers.{i}.self_attn.v_proj.weight",
|
67
67
|
hook_fn=transpose_and_reshape,
|
68
68
|
)
|
@@ -64,34 +64,34 @@ def convert_weights(backbone, loader, transformers_config):
|
|
64
64
|
|
65
65
|
## Query
|
66
66
|
loader.port_weight(
|
67
|
-
keras_variable=decoder_layer._self_attention_layer.
|
67
|
+
keras_variable=decoder_layer._self_attention_layer.query_dense.kernel,
|
68
68
|
hf_weight_key=f"model.layers.{i}.self_attn.q_proj.weight",
|
69
69
|
hook_fn=transpose_and_reshape,
|
70
70
|
)
|
71
71
|
loader.port_weight(
|
72
|
-
keras_variable=decoder_layer._self_attention_layer.
|
72
|
+
keras_variable=decoder_layer._self_attention_layer.query_dense.bias,
|
73
73
|
hf_weight_key=f"model.layers.{i}.self_attn.q_proj.bias",
|
74
74
|
hook_fn=transpose_and_reshape,
|
75
75
|
)
|
76
76
|
## Key
|
77
77
|
loader.port_weight(
|
78
|
-
keras_variable=decoder_layer._self_attention_layer.
|
78
|
+
keras_variable=decoder_layer._self_attention_layer.key_dense.kernel,
|
79
79
|
hf_weight_key=f"model.layers.{i}.self_attn.k_proj.weight",
|
80
80
|
hook_fn=transpose_and_reshape,
|
81
81
|
)
|
82
82
|
loader.port_weight(
|
83
|
-
keras_variable=decoder_layer._self_attention_layer.
|
83
|
+
keras_variable=decoder_layer._self_attention_layer.key_dense.bias,
|
84
84
|
hf_weight_key=f"model.layers.{i}.self_attn.k_proj.bias",
|
85
85
|
hook_fn=transpose_and_reshape,
|
86
86
|
)
|
87
87
|
## Value
|
88
88
|
loader.port_weight(
|
89
|
-
keras_variable=decoder_layer._self_attention_layer.
|
89
|
+
keras_variable=decoder_layer._self_attention_layer.value_dense.kernel,
|
90
90
|
hf_weight_key=f"model.layers.{i}.self_attn.v_proj.weight",
|
91
91
|
hook_fn=transpose_and_reshape,
|
92
92
|
)
|
93
93
|
loader.port_weight(
|
94
|
-
keras_variable=decoder_layer._self_attention_layer.
|
94
|
+
keras_variable=decoder_layer._self_attention_layer.value_dense.bias,
|
95
95
|
hf_weight_key=f"model.layers.{i}.self_attn.v_proj.bias",
|
96
96
|
hook_fn=transpose_and_reshape,
|
97
97
|
)
|
keras_hub/src/version.py
CHANGED
@@ -5,7 +5,7 @@ keras_hub/models/__init__.py,sha256=kFWNpjemQ8FLzDlFfMdAOOXJKtxuVHFxyZm7-1mH4Gc,
|
|
5
5
|
keras_hub/samplers/__init__.py,sha256=aFQIkiqbZpi8vjrPp2MVII4QUfE-eQjra5fMeHsoy7k,886
|
6
6
|
keras_hub/src/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
7
7
|
keras_hub/src/api_export.py,sha256=9pQZK27JObxWZ96QPLBp1OBsjWigh1iuV6RglPGMRk0,1499
|
8
|
-
keras_hub/src/version.py,sha256=
|
8
|
+
keras_hub/src/version.py,sha256=rBTUFDM2BdW6kVkflfCUyRLvhQnE6YbD5CLSFM9OCyk,222
|
9
9
|
keras_hub/src/layers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
10
|
keras_hub/src/layers/modeling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
11
11
|
keras_hub/src/layers/modeling/alibi_bias.py,sha256=1XBTHI52L_iJDhN_w5ydu_iMhCuTgQAxEPwcLA6BPuk,4411
|
@@ -110,11 +110,11 @@ keras_hub/src/models/clip/clip_tokenizer.py,sha256=6gIm_LWRbCeBQUI9M2gA8-OXb4tXG
|
|
110
110
|
keras_hub/src/models/clip/clip_vision_embedding.py,sha256=6_qC7T1dqKd-39EreGmHZj-YfjOLEDDKjWnEKcKIyuY,3667
|
111
111
|
keras_hub/src/models/clip/clip_vision_encoder.py,sha256=q62MXySZN38uCsjqq8cttfBxD7P5abaKQV2i8_u4N6E,6385
|
112
112
|
keras_hub/src/models/cspnet/__init__.py,sha256=TOpvk2cfOVv1bPA1BOGZj0mhmhc6E98zZmW9e0PIvhk,257
|
113
|
-
keras_hub/src/models/cspnet/cspnet_backbone.py,sha256=
|
113
|
+
keras_hub/src/models/cspnet/cspnet_backbone.py,sha256=meHzxubG_9vHQHSelDfrROaQERkDiWkjTtk_gKaWsDc,42457
|
114
114
|
keras_hub/src/models/cspnet/cspnet_image_classifier.py,sha256=JqfBHIBTFxaLOyAWx6TdXs0aAOMbcCx1oo47RoQnytc,510
|
115
115
|
keras_hub/src/models/cspnet/cspnet_image_classifier_preprocessor.py,sha256=ACRnOhjslk2ZZhpPfJioW4um4RLYa-Suk59z9wa5vfo,543
|
116
116
|
keras_hub/src/models/cspnet/cspnet_image_converter.py,sha256=f-ICTY2T-RlCykU6qOHDxg0fY7ECfZ_xpSJzIVmbvpc,342
|
117
|
-
keras_hub/src/models/cspnet/cspnet_presets.py,sha256=
|
117
|
+
keras_hub/src/models/cspnet/cspnet_presets.py,sha256=n01_7DTvbmaA_qs2GWiNLkBXNrrEvigPXSGc2NDTot8,1870
|
118
118
|
keras_hub/src/models/deberta_v3/__init__.py,sha256=6E-QtAD1uvTBobrn5bUoyB1qtaCJU-t73TtbAEH6i9g,288
|
119
119
|
keras_hub/src/models/deberta_v3/deberta_v3_backbone.py,sha256=oXdV7naTiMowuU3GsXEUo5K0GXiKbPKxdo27o5fXWjc,7258
|
120
120
|
keras_hub/src/models/deberta_v3/deberta_v3_masked_lm.py,sha256=ADBktf1DdiP9T6LCaMhdFiZ_mUbBRKMekY5mGwAeJIo,4186
|
@@ -353,8 +353,8 @@ keras_hub/src/models/segformer/__init__.py,sha256=ERgxA8tyeG2l4G6ywHisn6Oo0Iu7_9
|
|
353
353
|
keras_hub/src/models/segformer/segformer_backbone.py,sha256=T61WQ50T6IwSeiK1NfUKJu3eqbj_m5gz9cpUPtqMfcc,5666
|
354
354
|
keras_hub/src/models/segformer/segformer_image_converter.py,sha256=zePZ1cYZl-2TaEF82lj3y7kXjDao5Hgw8c7qfKI2Jd8,360
|
355
355
|
keras_hub/src/models/segformer/segformer_image_segmenter.py,sha256=JzX8oJASWdkw8wbm8cohjPnumIvBvj7GGEpbK7ex-6w,5926
|
356
|
-
keras_hub/src/models/segformer/segformer_image_segmenter_preprocessor.py,sha256=
|
357
|
-
keras_hub/src/models/segformer/segformer_presets.py,sha256=
|
356
|
+
keras_hub/src/models/segformer/segformer_image_segmenter_preprocessor.py,sha256=Jlsy41n7IymjvU3ENKQJtsQ4xkJEGRtxEm-defz2Nbc,568
|
357
|
+
keras_hub/src/models/segformer/segformer_presets.py,sha256=4fPkGTP_jjd3Qcd1KbWYZ7-ze0wdJskMwKG4GZ-UwEg,4793
|
358
358
|
keras_hub/src/models/siglip/__init__.py,sha256=uImQYl06pioLwla6c_tiF2PSJKHtq0aSxDPsynQbXcA,257
|
359
359
|
keras_hub/src/models/siglip/siglip_backbone.py,sha256=dXp7BU7mqKWthl70KFZ2AMILjNIu5A6itQFu6XD22Qs,8372
|
360
360
|
keras_hub/src/models/siglip/siglip_image_converter.py,sha256=yjYc0XOyL37WLlr-X6V4QXI1FCyiKngbHXrZK0hNB1U,342
|
@@ -461,13 +461,13 @@ keras_hub/src/utils/coco/coco_utils.py,sha256=x_QnUUvZ92zoFzMJugiInHORc4NrMdWVBk
|
|
461
461
|
keras_hub/src/utils/imagenet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
462
462
|
keras_hub/src/utils/imagenet/imagenet_utils.py,sha256=07ilM5feeD7Ut6YSbVj99RXAZOQONSC1IeKa3I9U6UQ,40161
|
463
463
|
keras_hub/src/utils/timm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
464
|
-
keras_hub/src/utils/timm/convert_cspnet.py,sha256=
|
464
|
+
keras_hub/src/utils/timm/convert_cspnet.py,sha256=9p1IF0B4UPbDTruQQXR6mJEUdhvQvHx9E0SKNn_Lbw4,8047
|
465
465
|
keras_hub/src/utils/timm/convert_densenet.py,sha256=fu8HBIQis5o3ib2tyI2qnmYScVrVIQySok8vTfa1qJ8,3393
|
466
466
|
keras_hub/src/utils/timm/convert_efficientnet.py,sha256=SgEIlyyinS04qoQpEgh3WazHq544zNUCCpfmWh3EjSs,17100
|
467
467
|
keras_hub/src/utils/timm/convert_mobilenet.py,sha256=XTqHOK4nJwigKefsw7ktWJtOgRpEVMO9MtRhuP5qP_k,9219
|
468
468
|
keras_hub/src/utils/timm/convert_resnet.py,sha256=8JFkVtdpy5z9h83LJ97rD-a8FRejXPZvMNksNuStqjM,5834
|
469
469
|
keras_hub/src/utils/timm/convert_vgg.py,sha256=MT5jGnLrzenPpe66Af_Lp1IdR9KGtsSrcmn6_UPqHvQ,2419
|
470
|
-
keras_hub/src/utils/timm/preset_loader.py,sha256=
|
470
|
+
keras_hub/src/utils/timm/preset_loader.py,sha256=4hULdq2K2hgPYTZR71PGV4YNDHLG1zcoxF9TXpg6fGE,3905
|
471
471
|
keras_hub/src/utils/transformers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
472
472
|
keras_hub/src/utils/transformers/convert_albert.py,sha256=VdKclZpCxtDWq3UbUUQZf4fR9DJK_JYZ73B4O_G9skg,7695
|
473
473
|
keras_hub/src/utils/transformers/convert_bart.py,sha256=Tk4h9Md9rwN5wjQbGIVrC7qzDpF8kI8qm-FKL8HlUok,14411
|
@@ -477,16 +477,16 @@ keras_hub/src/utils/transformers/convert_gemma.py,sha256=ElCgwBpSN5Q7rV5PJawTsoy
|
|
477
477
|
keras_hub/src/utils/transformers/convert_gpt2.py,sha256=HCeHN_-GiQJRxLCM9OCJJ1watPVpIBF8ujS8pGbBOWc,5703
|
478
478
|
keras_hub/src/utils/transformers/convert_llama3.py,sha256=c5phNl-QayQ_BS0s-lenbu6oHxqfwDShKJoh9DluxUU,6146
|
479
479
|
keras_hub/src/utils/transformers/convert_mistral.py,sha256=kVhN9h1ZFVhwkNW8p3wnS7eANJUXIsNy1RxWXy20Gqw,4760
|
480
|
-
keras_hub/src/utils/transformers/convert_mixtral.py,sha256=
|
480
|
+
keras_hub/src/utils/transformers/convert_mixtral.py,sha256=_esUzVRYABR5pHHSALqUieSuAeBg4te1JnlGQENqECU,5509
|
481
481
|
keras_hub/src/utils/transformers/convert_pali_gemma.py,sha256=B1leeDw96Yvu81hYumf66hIid07k5NLqoeWAJgPnaLs,10649
|
482
482
|
keras_hub/src/utils/transformers/convert_qwen.py,sha256=WUxMAEFVqRs7TRw7QU5TH3_ev4yf02R1xFVliMvTQqg,5886
|
483
|
-
keras_hub/src/utils/transformers/convert_qwen_moe.py,sha256=
|
483
|
+
keras_hub/src/utils/transformers/convert_qwen_moe.py,sha256=a7R28aln-PdAcNuKAXdrtzvslho2Co6GypChxLMKPpc,10618
|
484
484
|
keras_hub/src/utils/transformers/convert_vit.py,sha256=9SUZ9utNJhW_5cj3acMn9cRy47u2eIcDsrhmzj77o9k,5187
|
485
485
|
keras_hub/src/utils/transformers/preset_loader.py,sha256=1nfS5xVsl-JROGXJXltTqV1fQdcUlZbGGcbf-n79pXM,4225
|
486
486
|
keras_hub/src/utils/transformers/safetensor_utils.py,sha256=CYUHyA4y-B61r7NDnCsFb4t_UmSwZ1k9L-8gzEd6KRg,3339
|
487
487
|
keras_hub/tokenizers/__init__.py,sha256=4etC--bzhczJrRcvCmxZmOC9hJJcIVOUCgmqMLB3bp0,4051
|
488
488
|
keras_hub/utils/__init__.py,sha256=jXPqVGBpJr_PpYmqD8aDG-fRMlxH-ulqCR2SZMn288Y,646
|
489
|
-
keras_hub_nightly-0.21.0.
|
490
|
-
keras_hub_nightly-0.21.0.
|
491
|
-
keras_hub_nightly-0.21.0.
|
492
|
-
keras_hub_nightly-0.21.0.
|
489
|
+
keras_hub_nightly-0.21.0.dev202505080407.dist-info/METADATA,sha256=KW4fkkzlPY8ODeA5TKmEUQZen2irnGeLn9N7CSxQxcQ,7393
|
490
|
+
keras_hub_nightly-0.21.0.dev202505080407.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
|
491
|
+
keras_hub_nightly-0.21.0.dev202505080407.dist-info/top_level.txt,sha256=N4J6piIWBKa38A4uV-CnIopnOEf8mHAbkNXafXm_CuA,10
|
492
|
+
keras_hub_nightly-0.21.0.dev202505080407.dist-info/RECORD,,
|
File without changes
|