henriquequeirozcunha commited on
Commit
b8dc1cc
·
verified ·
1 Parent(s): b3d291f

Upload MicroViT-S2 as proper HF model (trust_remote_code)

Browse files
Files changed (5) hide show
  1. README.md +38 -2
  2. config.json +2055 -0
  3. microvit_hf.py +96 -0
  4. model.safetensors +3 -0
  5. shvit.py +230 -0
README.md CHANGED
@@ -1,3 +1,39 @@
 
 
 
 
 
 
 
 
 
1
  # MicroViT-S2
2
- ImageNet-1K pretrained weights. 10.0M params, 74.6% Top-1.
3
- Source: https://github.com/novendrastywn/MicroViT
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ tags:
4
+ - image-classification
5
+ - vision-transformer
6
+ - microvit
7
+ library_name: transformers
8
+ ---
9
+
10
  # MicroViT-S2
11
+
12
+ ImageNet-1K pretrained MicroViT-S2 (10.0M params, 74.6% Top-1 accuracy).
13
+
14
+ **Architecture:** SHViT (Single-Head Vision Transformer) backbone.
15
+ **Source paper:** https://arxiv.org/abs/2502.05800
16
+ **Official repo:** https://github.com/novendrastywn/MicroViT
17
+
18
+ ## Usage
19
+
20
+ ```python
21
+ from transformers import AutoModelForImageClassification, AutoImageProcessor
22
+
23
+ # Load ImageNet pretrained (1000 classes)
24
+ model = AutoModelForImageClassification.from_pretrained(
25
+ "henriquequeirozcunha/microvit-s2",
26
+ trust_remote_code=True,
27
+ )
28
+
29
+ # Fine-tune for binary classification
30
+ model = AutoModelForImageClassification.from_pretrained(
31
+ "henriquequeirozcunha/microvit-s2",
32
+ num_labels=2,
33
+ ignore_mismatched_sizes=True,
34
+ trust_remote_code=True,
35
+ )
36
+ ```
37
+
38
+ **Preprocessing:** 224×224, ImageNet normalization
39
+ (mean=[0.485,0.456,0.406], std=[0.229,0.224,0.225]).
config.json ADDED
@@ -0,0 +1,2055 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "architectures": [
3
+ "MicroViTForImageClassification"
4
+ ],
5
+ "depth": [
6
+ 2,
7
+ 4,
8
+ 5
9
+ ],
10
+ "down_ops": [
11
+ [
12
+ "subsample",
13
+ 2
14
+ ],
15
+ [
16
+ "subsample",
17
+ 2
18
+ ],
19
+ [
20
+ ""
21
+ ]
22
+ ],
23
+ "dtype": "float32",
24
+ "embed_dim": [
25
+ 128,
26
+ 308,
27
+ 448
28
+ ],
29
+ "id2label": {
30
+ "0": "LABEL_0",
31
+ "1": "LABEL_1",
32
+ "2": "LABEL_2",
33
+ "3": "LABEL_3",
34
+ "4": "LABEL_4",
35
+ "5": "LABEL_5",
36
+ "6": "LABEL_6",
37
+ "7": "LABEL_7",
38
+ "8": "LABEL_8",
39
+ "9": "LABEL_9",
40
+ "10": "LABEL_10",
41
+ "11": "LABEL_11",
42
+ "12": "LABEL_12",
43
+ "13": "LABEL_13",
44
+ "14": "LABEL_14",
45
+ "15": "LABEL_15",
46
+ "16": "LABEL_16",
47
+ "17": "LABEL_17",
48
+ "18": "LABEL_18",
49
+ "19": "LABEL_19",
50
+ "20": "LABEL_20",
51
+ "21": "LABEL_21",
52
+ "22": "LABEL_22",
53
+ "23": "LABEL_23",
54
+ "24": "LABEL_24",
55
+ "25": "LABEL_25",
56
+ "26": "LABEL_26",
57
+ "27": "LABEL_27",
58
+ "28": "LABEL_28",
59
+ "29": "LABEL_29",
60
+ "30": "LABEL_30",
61
+ "31": "LABEL_31",
62
+ "32": "LABEL_32",
63
+ "33": "LABEL_33",
64
+ "34": "LABEL_34",
65
+ "35": "LABEL_35",
66
+ "36": "LABEL_36",
67
+ "37": "LABEL_37",
68
+ "38": "LABEL_38",
69
+ "39": "LABEL_39",
70
+ "40": "LABEL_40",
71
+ "41": "LABEL_41",
72
+ "42": "LABEL_42",
73
+ "43": "LABEL_43",
74
+ "44": "LABEL_44",
75
+ "45": "LABEL_45",
76
+ "46": "LABEL_46",
77
+ "47": "LABEL_47",
78
+ "48": "LABEL_48",
79
+ "49": "LABEL_49",
80
+ "50": "LABEL_50",
81
+ "51": "LABEL_51",
82
+ "52": "LABEL_52",
83
+ "53": "LABEL_53",
84
+ "54": "LABEL_54",
85
+ "55": "LABEL_55",
86
+ "56": "LABEL_56",
87
+ "57": "LABEL_57",
88
+ "58": "LABEL_58",
89
+ "59": "LABEL_59",
90
+ "60": "LABEL_60",
91
+ "61": "LABEL_61",
92
+ "62": "LABEL_62",
93
+ "63": "LABEL_63",
94
+ "64": "LABEL_64",
95
+ "65": "LABEL_65",
96
+ "66": "LABEL_66",
97
+ "67": "LABEL_67",
98
+ "68": "LABEL_68",
99
+ "69": "LABEL_69",
100
+ "70": "LABEL_70",
101
+ "71": "LABEL_71",
102
+ "72": "LABEL_72",
103
+ "73": "LABEL_73",
104
+ "74": "LABEL_74",
105
+ "75": "LABEL_75",
106
+ "76": "LABEL_76",
107
+ "77": "LABEL_77",
108
+ "78": "LABEL_78",
109
+ "79": "LABEL_79",
110
+ "80": "LABEL_80",
111
+ "81": "LABEL_81",
112
+ "82": "LABEL_82",
113
+ "83": "LABEL_83",
114
+ "84": "LABEL_84",
115
+ "85": "LABEL_85",
116
+ "86": "LABEL_86",
117
+ "87": "LABEL_87",
118
+ "88": "LABEL_88",
119
+ "89": "LABEL_89",
120
+ "90": "LABEL_90",
121
+ "91": "LABEL_91",
122
+ "92": "LABEL_92",
123
+ "93": "LABEL_93",
124
+ "94": "LABEL_94",
125
+ "95": "LABEL_95",
126
+ "96": "LABEL_96",
127
+ "97": "LABEL_97",
128
+ "98": "LABEL_98",
129
+ "99": "LABEL_99",
130
+ "100": "LABEL_100",
131
+ "101": "LABEL_101",
132
+ "102": "LABEL_102",
133
+ "103": "LABEL_103",
134
+ "104": "LABEL_104",
135
+ "105": "LABEL_105",
136
+ "106": "LABEL_106",
137
+ "107": "LABEL_107",
138
+ "108": "LABEL_108",
139
+ "109": "LABEL_109",
140
+ "110": "LABEL_110",
141
+ "111": "LABEL_111",
142
+ "112": "LABEL_112",
143
+ "113": "LABEL_113",
144
+ "114": "LABEL_114",
145
+ "115": "LABEL_115",
146
+ "116": "LABEL_116",
147
+ "117": "LABEL_117",
148
+ "118": "LABEL_118",
149
+ "119": "LABEL_119",
150
+ "120": "LABEL_120",
151
+ "121": "LABEL_121",
152
+ "122": "LABEL_122",
153
+ "123": "LABEL_123",
154
+ "124": "LABEL_124",
155
+ "125": "LABEL_125",
156
+ "126": "LABEL_126",
157
+ "127": "LABEL_127",
158
+ "128": "LABEL_128",
159
+ "129": "LABEL_129",
160
+ "130": "LABEL_130",
161
+ "131": "LABEL_131",
162
+ "132": "LABEL_132",
163
+ "133": "LABEL_133",
164
+ "134": "LABEL_134",
165
+ "135": "LABEL_135",
166
+ "136": "LABEL_136",
167
+ "137": "LABEL_137",
168
+ "138": "LABEL_138",
169
+ "139": "LABEL_139",
170
+ "140": "LABEL_140",
171
+ "141": "LABEL_141",
172
+ "142": "LABEL_142",
173
+ "143": "LABEL_143",
174
+ "144": "LABEL_144",
175
+ "145": "LABEL_145",
176
+ "146": "LABEL_146",
177
+ "147": "LABEL_147",
178
+ "148": "LABEL_148",
179
+ "149": "LABEL_149",
180
+ "150": "LABEL_150",
181
+ "151": "LABEL_151",
182
+ "152": "LABEL_152",
183
+ "153": "LABEL_153",
184
+ "154": "LABEL_154",
185
+ "155": "LABEL_155",
186
+ "156": "LABEL_156",
187
+ "157": "LABEL_157",
188
+ "158": "LABEL_158",
189
+ "159": "LABEL_159",
190
+ "160": "LABEL_160",
191
+ "161": "LABEL_161",
192
+ "162": "LABEL_162",
193
+ "163": "LABEL_163",
194
+ "164": "LABEL_164",
195
+ "165": "LABEL_165",
196
+ "166": "LABEL_166",
197
+ "167": "LABEL_167",
198
+ "168": "LABEL_168",
199
+ "169": "LABEL_169",
200
+ "170": "LABEL_170",
201
+ "171": "LABEL_171",
202
+ "172": "LABEL_172",
203
+ "173": "LABEL_173",
204
+ "174": "LABEL_174",
205
+ "175": "LABEL_175",
206
+ "176": "LABEL_176",
207
+ "177": "LABEL_177",
208
+ "178": "LABEL_178",
209
+ "179": "LABEL_179",
210
+ "180": "LABEL_180",
211
+ "181": "LABEL_181",
212
+ "182": "LABEL_182",
213
+ "183": "LABEL_183",
214
+ "184": "LABEL_184",
215
+ "185": "LABEL_185",
216
+ "186": "LABEL_186",
217
+ "187": "LABEL_187",
218
+ "188": "LABEL_188",
219
+ "189": "LABEL_189",
220
+ "190": "LABEL_190",
221
+ "191": "LABEL_191",
222
+ "192": "LABEL_192",
223
+ "193": "LABEL_193",
224
+ "194": "LABEL_194",
225
+ "195": "LABEL_195",
226
+ "196": "LABEL_196",
227
+ "197": "LABEL_197",
228
+ "198": "LABEL_198",
229
+ "199": "LABEL_199",
230
+ "200": "LABEL_200",
231
+ "201": "LABEL_201",
232
+ "202": "LABEL_202",
233
+ "203": "LABEL_203",
234
+ "204": "LABEL_204",
235
+ "205": "LABEL_205",
236
+ "206": "LABEL_206",
237
+ "207": "LABEL_207",
238
+ "208": "LABEL_208",
239
+ "209": "LABEL_209",
240
+ "210": "LABEL_210",
241
+ "211": "LABEL_211",
242
+ "212": "LABEL_212",
243
+ "213": "LABEL_213",
244
+ "214": "LABEL_214",
245
+ "215": "LABEL_215",
246
+ "216": "LABEL_216",
247
+ "217": "LABEL_217",
248
+ "218": "LABEL_218",
249
+ "219": "LABEL_219",
250
+ "220": "LABEL_220",
251
+ "221": "LABEL_221",
252
+ "222": "LABEL_222",
253
+ "223": "LABEL_223",
254
+ "224": "LABEL_224",
255
+ "225": "LABEL_225",
256
+ "226": "LABEL_226",
257
+ "227": "LABEL_227",
258
+ "228": "LABEL_228",
259
+ "229": "LABEL_229",
260
+ "230": "LABEL_230",
261
+ "231": "LABEL_231",
262
+ "232": "LABEL_232",
263
+ "233": "LABEL_233",
264
+ "234": "LABEL_234",
265
+ "235": "LABEL_235",
266
+ "236": "LABEL_236",
267
+ "237": "LABEL_237",
268
+ "238": "LABEL_238",
269
+ "239": "LABEL_239",
270
+ "240": "LABEL_240",
271
+ "241": "LABEL_241",
272
+ "242": "LABEL_242",
273
+ "243": "LABEL_243",
274
+ "244": "LABEL_244",
275
+ "245": "LABEL_245",
276
+ "246": "LABEL_246",
277
+ "247": "LABEL_247",
278
+ "248": "LABEL_248",
279
+ "249": "LABEL_249",
280
+ "250": "LABEL_250",
281
+ "251": "LABEL_251",
282
+ "252": "LABEL_252",
283
+ "253": "LABEL_253",
284
+ "254": "LABEL_254",
285
+ "255": "LABEL_255",
286
+ "256": "LABEL_256",
287
+ "257": "LABEL_257",
288
+ "258": "LABEL_258",
289
+ "259": "LABEL_259",
290
+ "260": "LABEL_260",
291
+ "261": "LABEL_261",
292
+ "262": "LABEL_262",
293
+ "263": "LABEL_263",
294
+ "264": "LABEL_264",
295
+ "265": "LABEL_265",
296
+ "266": "LABEL_266",
297
+ "267": "LABEL_267",
298
+ "268": "LABEL_268",
299
+ "269": "LABEL_269",
300
+ "270": "LABEL_270",
301
+ "271": "LABEL_271",
302
+ "272": "LABEL_272",
303
+ "273": "LABEL_273",
304
+ "274": "LABEL_274",
305
+ "275": "LABEL_275",
306
+ "276": "LABEL_276",
307
+ "277": "LABEL_277",
308
+ "278": "LABEL_278",
309
+ "279": "LABEL_279",
310
+ "280": "LABEL_280",
311
+ "281": "LABEL_281",
312
+ "282": "LABEL_282",
313
+ "283": "LABEL_283",
314
+ "284": "LABEL_284",
315
+ "285": "LABEL_285",
316
+ "286": "LABEL_286",
317
+ "287": "LABEL_287",
318
+ "288": "LABEL_288",
319
+ "289": "LABEL_289",
320
+ "290": "LABEL_290",
321
+ "291": "LABEL_291",
322
+ "292": "LABEL_292",
323
+ "293": "LABEL_293",
324
+ "294": "LABEL_294",
325
+ "295": "LABEL_295",
326
+ "296": "LABEL_296",
327
+ "297": "LABEL_297",
328
+ "298": "LABEL_298",
329
+ "299": "LABEL_299",
330
+ "300": "LABEL_300",
331
+ "301": "LABEL_301",
332
+ "302": "LABEL_302",
333
+ "303": "LABEL_303",
334
+ "304": "LABEL_304",
335
+ "305": "LABEL_305",
336
+ "306": "LABEL_306",
337
+ "307": "LABEL_307",
338
+ "308": "LABEL_308",
339
+ "309": "LABEL_309",
340
+ "310": "LABEL_310",
341
+ "311": "LABEL_311",
342
+ "312": "LABEL_312",
343
+ "313": "LABEL_313",
344
+ "314": "LABEL_314",
345
+ "315": "LABEL_315",
346
+ "316": "LABEL_316",
347
+ "317": "LABEL_317",
348
+ "318": "LABEL_318",
349
+ "319": "LABEL_319",
350
+ "320": "LABEL_320",
351
+ "321": "LABEL_321",
352
+ "322": "LABEL_322",
353
+ "323": "LABEL_323",
354
+ "324": "LABEL_324",
355
+ "325": "LABEL_325",
356
+ "326": "LABEL_326",
357
+ "327": "LABEL_327",
358
+ "328": "LABEL_328",
359
+ "329": "LABEL_329",
360
+ "330": "LABEL_330",
361
+ "331": "LABEL_331",
362
+ "332": "LABEL_332",
363
+ "333": "LABEL_333",
364
+ "334": "LABEL_334",
365
+ "335": "LABEL_335",
366
+ "336": "LABEL_336",
367
+ "337": "LABEL_337",
368
+ "338": "LABEL_338",
369
+ "339": "LABEL_339",
370
+ "340": "LABEL_340",
371
+ "341": "LABEL_341",
372
+ "342": "LABEL_342",
373
+ "343": "LABEL_343",
374
+ "344": "LABEL_344",
375
+ "345": "LABEL_345",
376
+ "346": "LABEL_346",
377
+ "347": "LABEL_347",
378
+ "348": "LABEL_348",
379
+ "349": "LABEL_349",
380
+ "350": "LABEL_350",
381
+ "351": "LABEL_351",
382
+ "352": "LABEL_352",
383
+ "353": "LABEL_353",
384
+ "354": "LABEL_354",
385
+ "355": "LABEL_355",
386
+ "356": "LABEL_356",
387
+ "357": "LABEL_357",
388
+ "358": "LABEL_358",
389
+ "359": "LABEL_359",
390
+ "360": "LABEL_360",
391
+ "361": "LABEL_361",
392
+ "362": "LABEL_362",
393
+ "363": "LABEL_363",
394
+ "364": "LABEL_364",
395
+ "365": "LABEL_365",
396
+ "366": "LABEL_366",
397
+ "367": "LABEL_367",
398
+ "368": "LABEL_368",
399
+ "369": "LABEL_369",
400
+ "370": "LABEL_370",
401
+ "371": "LABEL_371",
402
+ "372": "LABEL_372",
403
+ "373": "LABEL_373",
404
+ "374": "LABEL_374",
405
+ "375": "LABEL_375",
406
+ "376": "LABEL_376",
407
+ "377": "LABEL_377",
408
+ "378": "LABEL_378",
409
+ "379": "LABEL_379",
410
+ "380": "LABEL_380",
411
+ "381": "LABEL_381",
412
+ "382": "LABEL_382",
413
+ "383": "LABEL_383",
414
+ "384": "LABEL_384",
415
+ "385": "LABEL_385",
416
+ "386": "LABEL_386",
417
+ "387": "LABEL_387",
418
+ "388": "LABEL_388",
419
+ "389": "LABEL_389",
420
+ "390": "LABEL_390",
421
+ "391": "LABEL_391",
422
+ "392": "LABEL_392",
423
+ "393": "LABEL_393",
424
+ "394": "LABEL_394",
425
+ "395": "LABEL_395",
426
+ "396": "LABEL_396",
427
+ "397": "LABEL_397",
428
+ "398": "LABEL_398",
429
+ "399": "LABEL_399",
430
+ "400": "LABEL_400",
431
+ "401": "LABEL_401",
432
+ "402": "LABEL_402",
433
+ "403": "LABEL_403",
434
+ "404": "LABEL_404",
435
+ "405": "LABEL_405",
436
+ "406": "LABEL_406",
437
+ "407": "LABEL_407",
438
+ "408": "LABEL_408",
439
+ "409": "LABEL_409",
440
+ "410": "LABEL_410",
441
+ "411": "LABEL_411",
442
+ "412": "LABEL_412",
443
+ "413": "LABEL_413",
444
+ "414": "LABEL_414",
445
+ "415": "LABEL_415",
446
+ "416": "LABEL_416",
447
+ "417": "LABEL_417",
448
+ "418": "LABEL_418",
449
+ "419": "LABEL_419",
450
+ "420": "LABEL_420",
451
+ "421": "LABEL_421",
452
+ "422": "LABEL_422",
453
+ "423": "LABEL_423",
454
+ "424": "LABEL_424",
455
+ "425": "LABEL_425",
456
+ "426": "LABEL_426",
457
+ "427": "LABEL_427",
458
+ "428": "LABEL_428",
459
+ "429": "LABEL_429",
460
+ "430": "LABEL_430",
461
+ "431": "LABEL_431",
462
+ "432": "LABEL_432",
463
+ "433": "LABEL_433",
464
+ "434": "LABEL_434",
465
+ "435": "LABEL_435",
466
+ "436": "LABEL_436",
467
+ "437": "LABEL_437",
468
+ "438": "LABEL_438",
469
+ "439": "LABEL_439",
470
+ "440": "LABEL_440",
471
+ "441": "LABEL_441",
472
+ "442": "LABEL_442",
473
+ "443": "LABEL_443",
474
+ "444": "LABEL_444",
475
+ "445": "LABEL_445",
476
+ "446": "LABEL_446",
477
+ "447": "LABEL_447",
478
+ "448": "LABEL_448",
479
+ "449": "LABEL_449",
480
+ "450": "LABEL_450",
481
+ "451": "LABEL_451",
482
+ "452": "LABEL_452",
483
+ "453": "LABEL_453",
484
+ "454": "LABEL_454",
485
+ "455": "LABEL_455",
486
+ "456": "LABEL_456",
487
+ "457": "LABEL_457",
488
+ "458": "LABEL_458",
489
+ "459": "LABEL_459",
490
+ "460": "LABEL_460",
491
+ "461": "LABEL_461",
492
+ "462": "LABEL_462",
493
+ "463": "LABEL_463",
494
+ "464": "LABEL_464",
495
+ "465": "LABEL_465",
496
+ "466": "LABEL_466",
497
+ "467": "LABEL_467",
498
+ "468": "LABEL_468",
499
+ "469": "LABEL_469",
500
+ "470": "LABEL_470",
501
+ "471": "LABEL_471",
502
+ "472": "LABEL_472",
503
+ "473": "LABEL_473",
504
+ "474": "LABEL_474",
505
+ "475": "LABEL_475",
506
+ "476": "LABEL_476",
507
+ "477": "LABEL_477",
508
+ "478": "LABEL_478",
509
+ "479": "LABEL_479",
510
+ "480": "LABEL_480",
511
+ "481": "LABEL_481",
512
+ "482": "LABEL_482",
513
+ "483": "LABEL_483",
514
+ "484": "LABEL_484",
515
+ "485": "LABEL_485",
516
+ "486": "LABEL_486",
517
+ "487": "LABEL_487",
518
+ "488": "LABEL_488",
519
+ "489": "LABEL_489",
520
+ "490": "LABEL_490",
521
+ "491": "LABEL_491",
522
+ "492": "LABEL_492",
523
+ "493": "LABEL_493",
524
+ "494": "LABEL_494",
525
+ "495": "LABEL_495",
526
+ "496": "LABEL_496",
527
+ "497": "LABEL_497",
528
+ "498": "LABEL_498",
529
+ "499": "LABEL_499",
530
+ "500": "LABEL_500",
531
+ "501": "LABEL_501",
532
+ "502": "LABEL_502",
533
+ "503": "LABEL_503",
534
+ "504": "LABEL_504",
535
+ "505": "LABEL_505",
536
+ "506": "LABEL_506",
537
+ "507": "LABEL_507",
538
+ "508": "LABEL_508",
539
+ "509": "LABEL_509",
540
+ "510": "LABEL_510",
541
+ "511": "LABEL_511",
542
+ "512": "LABEL_512",
543
+ "513": "LABEL_513",
544
+ "514": "LABEL_514",
545
+ "515": "LABEL_515",
546
+ "516": "LABEL_516",
547
+ "517": "LABEL_517",
548
+ "518": "LABEL_518",
549
+ "519": "LABEL_519",
550
+ "520": "LABEL_520",
551
+ "521": "LABEL_521",
552
+ "522": "LABEL_522",
553
+ "523": "LABEL_523",
554
+ "524": "LABEL_524",
555
+ "525": "LABEL_525",
556
+ "526": "LABEL_526",
557
+ "527": "LABEL_527",
558
+ "528": "LABEL_528",
559
+ "529": "LABEL_529",
560
+ "530": "LABEL_530",
561
+ "531": "LABEL_531",
562
+ "532": "LABEL_532",
563
+ "533": "LABEL_533",
564
+ "534": "LABEL_534",
565
+ "535": "LABEL_535",
566
+ "536": "LABEL_536",
567
+ "537": "LABEL_537",
568
+ "538": "LABEL_538",
569
+ "539": "LABEL_539",
570
+ "540": "LABEL_540",
571
+ "541": "LABEL_541",
572
+ "542": "LABEL_542",
573
+ "543": "LABEL_543",
574
+ "544": "LABEL_544",
575
+ "545": "LABEL_545",
576
+ "546": "LABEL_546",
577
+ "547": "LABEL_547",
578
+ "548": "LABEL_548",
579
+ "549": "LABEL_549",
580
+ "550": "LABEL_550",
581
+ "551": "LABEL_551",
582
+ "552": "LABEL_552",
583
+ "553": "LABEL_553",
584
+ "554": "LABEL_554",
585
+ "555": "LABEL_555",
586
+ "556": "LABEL_556",
587
+ "557": "LABEL_557",
588
+ "558": "LABEL_558",
589
+ "559": "LABEL_559",
590
+ "560": "LABEL_560",
591
+ "561": "LABEL_561",
592
+ "562": "LABEL_562",
593
+ "563": "LABEL_563",
594
+ "564": "LABEL_564",
595
+ "565": "LABEL_565",
596
+ "566": "LABEL_566",
597
+ "567": "LABEL_567",
598
+ "568": "LABEL_568",
599
+ "569": "LABEL_569",
600
+ "570": "LABEL_570",
601
+ "571": "LABEL_571",
602
+ "572": "LABEL_572",
603
+ "573": "LABEL_573",
604
+ "574": "LABEL_574",
605
+ "575": "LABEL_575",
606
+ "576": "LABEL_576",
607
+ "577": "LABEL_577",
608
+ "578": "LABEL_578",
609
+ "579": "LABEL_579",
610
+ "580": "LABEL_580",
611
+ "581": "LABEL_581",
612
+ "582": "LABEL_582",
613
+ "583": "LABEL_583",
614
+ "584": "LABEL_584",
615
+ "585": "LABEL_585",
616
+ "586": "LABEL_586",
617
+ "587": "LABEL_587",
618
+ "588": "LABEL_588",
619
+ "589": "LABEL_589",
620
+ "590": "LABEL_590",
621
+ "591": "LABEL_591",
622
+ "592": "LABEL_592",
623
+ "593": "LABEL_593",
624
+ "594": "LABEL_594",
625
+ "595": "LABEL_595",
626
+ "596": "LABEL_596",
627
+ "597": "LABEL_597",
628
+ "598": "LABEL_598",
629
+ "599": "LABEL_599",
630
+ "600": "LABEL_600",
631
+ "601": "LABEL_601",
632
+ "602": "LABEL_602",
633
+ "603": "LABEL_603",
634
+ "604": "LABEL_604",
635
+ "605": "LABEL_605",
636
+ "606": "LABEL_606",
637
+ "607": "LABEL_607",
638
+ "608": "LABEL_608",
639
+ "609": "LABEL_609",
640
+ "610": "LABEL_610",
641
+ "611": "LABEL_611",
642
+ "612": "LABEL_612",
643
+ "613": "LABEL_613",
644
+ "614": "LABEL_614",
645
+ "615": "LABEL_615",
646
+ "616": "LABEL_616",
647
+ "617": "LABEL_617",
648
+ "618": "LABEL_618",
649
+ "619": "LABEL_619",
650
+ "620": "LABEL_620",
651
+ "621": "LABEL_621",
652
+ "622": "LABEL_622",
653
+ "623": "LABEL_623",
654
+ "624": "LABEL_624",
655
+ "625": "LABEL_625",
656
+ "626": "LABEL_626",
657
+ "627": "LABEL_627",
658
+ "628": "LABEL_628",
659
+ "629": "LABEL_629",
660
+ "630": "LABEL_630",
661
+ "631": "LABEL_631",
662
+ "632": "LABEL_632",
663
+ "633": "LABEL_633",
664
+ "634": "LABEL_634",
665
+ "635": "LABEL_635",
666
+ "636": "LABEL_636",
667
+ "637": "LABEL_637",
668
+ "638": "LABEL_638",
669
+ "639": "LABEL_639",
670
+ "640": "LABEL_640",
671
+ "641": "LABEL_641",
672
+ "642": "LABEL_642",
673
+ "643": "LABEL_643",
674
+ "644": "LABEL_644",
675
+ "645": "LABEL_645",
676
+ "646": "LABEL_646",
677
+ "647": "LABEL_647",
678
+ "648": "LABEL_648",
679
+ "649": "LABEL_649",
680
+ "650": "LABEL_650",
681
+ "651": "LABEL_651",
682
+ "652": "LABEL_652",
683
+ "653": "LABEL_653",
684
+ "654": "LABEL_654",
685
+ "655": "LABEL_655",
686
+ "656": "LABEL_656",
687
+ "657": "LABEL_657",
688
+ "658": "LABEL_658",
689
+ "659": "LABEL_659",
690
+ "660": "LABEL_660",
691
+ "661": "LABEL_661",
692
+ "662": "LABEL_662",
693
+ "663": "LABEL_663",
694
+ "664": "LABEL_664",
695
+ "665": "LABEL_665",
696
+ "666": "LABEL_666",
697
+ "667": "LABEL_667",
698
+ "668": "LABEL_668",
699
+ "669": "LABEL_669",
700
+ "670": "LABEL_670",
701
+ "671": "LABEL_671",
702
+ "672": "LABEL_672",
703
+ "673": "LABEL_673",
704
+ "674": "LABEL_674",
705
+ "675": "LABEL_675",
706
+ "676": "LABEL_676",
707
+ "677": "LABEL_677",
708
+ "678": "LABEL_678",
709
+ "679": "LABEL_679",
710
+ "680": "LABEL_680",
711
+ "681": "LABEL_681",
712
+ "682": "LABEL_682",
713
+ "683": "LABEL_683",
714
+ "684": "LABEL_684",
715
+ "685": "LABEL_685",
716
+ "686": "LABEL_686",
717
+ "687": "LABEL_687",
718
+ "688": "LABEL_688",
719
+ "689": "LABEL_689",
720
+ "690": "LABEL_690",
721
+ "691": "LABEL_691",
722
+ "692": "LABEL_692",
723
+ "693": "LABEL_693",
724
+ "694": "LABEL_694",
725
+ "695": "LABEL_695",
726
+ "696": "LABEL_696",
727
+ "697": "LABEL_697",
728
+ "698": "LABEL_698",
729
+ "699": "LABEL_699",
730
+ "700": "LABEL_700",
731
+ "701": "LABEL_701",
732
+ "702": "LABEL_702",
733
+ "703": "LABEL_703",
734
+ "704": "LABEL_704",
735
+ "705": "LABEL_705",
736
+ "706": "LABEL_706",
737
+ "707": "LABEL_707",
738
+ "708": "LABEL_708",
739
+ "709": "LABEL_709",
740
+ "710": "LABEL_710",
741
+ "711": "LABEL_711",
742
+ "712": "LABEL_712",
743
+ "713": "LABEL_713",
744
+ "714": "LABEL_714",
745
+ "715": "LABEL_715",
746
+ "716": "LABEL_716",
747
+ "717": "LABEL_717",
748
+ "718": "LABEL_718",
749
+ "719": "LABEL_719",
750
+ "720": "LABEL_720",
751
+ "721": "LABEL_721",
752
+ "722": "LABEL_722",
753
+ "723": "LABEL_723",
754
+ "724": "LABEL_724",
755
+ "725": "LABEL_725",
756
+ "726": "LABEL_726",
757
+ "727": "LABEL_727",
758
+ "728": "LABEL_728",
759
+ "729": "LABEL_729",
760
+ "730": "LABEL_730",
761
+ "731": "LABEL_731",
762
+ "732": "LABEL_732",
763
+ "733": "LABEL_733",
764
+ "734": "LABEL_734",
765
+ "735": "LABEL_735",
766
+ "736": "LABEL_736",
767
+ "737": "LABEL_737",
768
+ "738": "LABEL_738",
769
+ "739": "LABEL_739",
770
+ "740": "LABEL_740",
771
+ "741": "LABEL_741",
772
+ "742": "LABEL_742",
773
+ "743": "LABEL_743",
774
+ "744": "LABEL_744",
775
+ "745": "LABEL_745",
776
+ "746": "LABEL_746",
777
+ "747": "LABEL_747",
778
+ "748": "LABEL_748",
779
+ "749": "LABEL_749",
780
+ "750": "LABEL_750",
781
+ "751": "LABEL_751",
782
+ "752": "LABEL_752",
783
+ "753": "LABEL_753",
784
+ "754": "LABEL_754",
785
+ "755": "LABEL_755",
786
+ "756": "LABEL_756",
787
+ "757": "LABEL_757",
788
+ "758": "LABEL_758",
789
+ "759": "LABEL_759",
790
+ "760": "LABEL_760",
791
+ "761": "LABEL_761",
792
+ "762": "LABEL_762",
793
+ "763": "LABEL_763",
794
+ "764": "LABEL_764",
795
+ "765": "LABEL_765",
796
+ "766": "LABEL_766",
797
+ "767": "LABEL_767",
798
+ "768": "LABEL_768",
799
+ "769": "LABEL_769",
800
+ "770": "LABEL_770",
801
+ "771": "LABEL_771",
802
+ "772": "LABEL_772",
803
+ "773": "LABEL_773",
804
+ "774": "LABEL_774",
805
+ "775": "LABEL_775",
806
+ "776": "LABEL_776",
807
+ "777": "LABEL_777",
808
+ "778": "LABEL_778",
809
+ "779": "LABEL_779",
810
+ "780": "LABEL_780",
811
+ "781": "LABEL_781",
812
+ "782": "LABEL_782",
813
+ "783": "LABEL_783",
814
+ "784": "LABEL_784",
815
+ "785": "LABEL_785",
816
+ "786": "LABEL_786",
817
+ "787": "LABEL_787",
818
+ "788": "LABEL_788",
819
+ "789": "LABEL_789",
820
+ "790": "LABEL_790",
821
+ "791": "LABEL_791",
822
+ "792": "LABEL_792",
823
+ "793": "LABEL_793",
824
+ "794": "LABEL_794",
825
+ "795": "LABEL_795",
826
+ "796": "LABEL_796",
827
+ "797": "LABEL_797",
828
+ "798": "LABEL_798",
829
+ "799": "LABEL_799",
830
+ "800": "LABEL_800",
831
+ "801": "LABEL_801",
832
+ "802": "LABEL_802",
833
+ "803": "LABEL_803",
834
+ "804": "LABEL_804",
835
+ "805": "LABEL_805",
836
+ "806": "LABEL_806",
837
+ "807": "LABEL_807",
838
+ "808": "LABEL_808",
839
+ "809": "LABEL_809",
840
+ "810": "LABEL_810",
841
+ "811": "LABEL_811",
842
+ "812": "LABEL_812",
843
+ "813": "LABEL_813",
844
+ "814": "LABEL_814",
845
+ "815": "LABEL_815",
846
+ "816": "LABEL_816",
847
+ "817": "LABEL_817",
848
+ "818": "LABEL_818",
849
+ "819": "LABEL_819",
850
+ "820": "LABEL_820",
851
+ "821": "LABEL_821",
852
+ "822": "LABEL_822",
853
+ "823": "LABEL_823",
854
+ "824": "LABEL_824",
855
+ "825": "LABEL_825",
856
+ "826": "LABEL_826",
857
+ "827": "LABEL_827",
858
+ "828": "LABEL_828",
859
+ "829": "LABEL_829",
860
+ "830": "LABEL_830",
861
+ "831": "LABEL_831",
862
+ "832": "LABEL_832",
863
+ "833": "LABEL_833",
864
+ "834": "LABEL_834",
865
+ "835": "LABEL_835",
866
+ "836": "LABEL_836",
867
+ "837": "LABEL_837",
868
+ "838": "LABEL_838",
869
+ "839": "LABEL_839",
870
+ "840": "LABEL_840",
871
+ "841": "LABEL_841",
872
+ "842": "LABEL_842",
873
+ "843": "LABEL_843",
874
+ "844": "LABEL_844",
875
+ "845": "LABEL_845",
876
+ "846": "LABEL_846",
877
+ "847": "LABEL_847",
878
+ "848": "LABEL_848",
879
+ "849": "LABEL_849",
880
+ "850": "LABEL_850",
881
+ "851": "LABEL_851",
882
+ "852": "LABEL_852",
883
+ "853": "LABEL_853",
884
+ "854": "LABEL_854",
885
+ "855": "LABEL_855",
886
+ "856": "LABEL_856",
887
+ "857": "LABEL_857",
888
+ "858": "LABEL_858",
889
+ "859": "LABEL_859",
890
+ "860": "LABEL_860",
891
+ "861": "LABEL_861",
892
+ "862": "LABEL_862",
893
+ "863": "LABEL_863",
894
+ "864": "LABEL_864",
895
+ "865": "LABEL_865",
896
+ "866": "LABEL_866",
897
+ "867": "LABEL_867",
898
+ "868": "LABEL_868",
899
+ "869": "LABEL_869",
900
+ "870": "LABEL_870",
901
+ "871": "LABEL_871",
902
+ "872": "LABEL_872",
903
+ "873": "LABEL_873",
904
+ "874": "LABEL_874",
905
+ "875": "LABEL_875",
906
+ "876": "LABEL_876",
907
+ "877": "LABEL_877",
908
+ "878": "LABEL_878",
909
+ "879": "LABEL_879",
910
+ "880": "LABEL_880",
911
+ "881": "LABEL_881",
912
+ "882": "LABEL_882",
913
+ "883": "LABEL_883",
914
+ "884": "LABEL_884",
915
+ "885": "LABEL_885",
916
+ "886": "LABEL_886",
917
+ "887": "LABEL_887",
918
+ "888": "LABEL_888",
919
+ "889": "LABEL_889",
920
+ "890": "LABEL_890",
921
+ "891": "LABEL_891",
922
+ "892": "LABEL_892",
923
+ "893": "LABEL_893",
924
+ "894": "LABEL_894",
925
+ "895": "LABEL_895",
926
+ "896": "LABEL_896",
927
+ "897": "LABEL_897",
928
+ "898": "LABEL_898",
929
+ "899": "LABEL_899",
930
+ "900": "LABEL_900",
931
+ "901": "LABEL_901",
932
+ "902": "LABEL_902",
933
+ "903": "LABEL_903",
934
+ "904": "LABEL_904",
935
+ "905": "LABEL_905",
936
+ "906": "LABEL_906",
937
+ "907": "LABEL_907",
938
+ "908": "LABEL_908",
939
+ "909": "LABEL_909",
940
+ "910": "LABEL_910",
941
+ "911": "LABEL_911",
942
+ "912": "LABEL_912",
943
+ "913": "LABEL_913",
944
+ "914": "LABEL_914",
945
+ "915": "LABEL_915",
946
+ "916": "LABEL_916",
947
+ "917": "LABEL_917",
948
+ "918": "LABEL_918",
949
+ "919": "LABEL_919",
950
+ "920": "LABEL_920",
951
+ "921": "LABEL_921",
952
+ "922": "LABEL_922",
953
+ "923": "LABEL_923",
954
+ "924": "LABEL_924",
955
+ "925": "LABEL_925",
956
+ "926": "LABEL_926",
957
+ "927": "LABEL_927",
958
+ "928": "LABEL_928",
959
+ "929": "LABEL_929",
960
+ "930": "LABEL_930",
961
+ "931": "LABEL_931",
962
+ "932": "LABEL_932",
963
+ "933": "LABEL_933",
964
+ "934": "LABEL_934",
965
+ "935": "LABEL_935",
966
+ "936": "LABEL_936",
967
+ "937": "LABEL_937",
968
+ "938": "LABEL_938",
969
+ "939": "LABEL_939",
970
+ "940": "LABEL_940",
971
+ "941": "LABEL_941",
972
+ "942": "LABEL_942",
973
+ "943": "LABEL_943",
974
+ "944": "LABEL_944",
975
+ "945": "LABEL_945",
976
+ "946": "LABEL_946",
977
+ "947": "LABEL_947",
978
+ "948": "LABEL_948",
979
+ "949": "LABEL_949",
980
+ "950": "LABEL_950",
981
+ "951": "LABEL_951",
982
+ "952": "LABEL_952",
983
+ "953": "LABEL_953",
984
+ "954": "LABEL_954",
985
+ "955": "LABEL_955",
986
+ "956": "LABEL_956",
987
+ "957": "LABEL_957",
988
+ "958": "LABEL_958",
989
+ "959": "LABEL_959",
990
+ "960": "LABEL_960",
991
+ "961": "LABEL_961",
992
+ "962": "LABEL_962",
993
+ "963": "LABEL_963",
994
+ "964": "LABEL_964",
995
+ "965": "LABEL_965",
996
+ "966": "LABEL_966",
997
+ "967": "LABEL_967",
998
+ "968": "LABEL_968",
999
+ "969": "LABEL_969",
1000
+ "970": "LABEL_970",
1001
+ "971": "LABEL_971",
1002
+ "972": "LABEL_972",
1003
+ "973": "LABEL_973",
1004
+ "974": "LABEL_974",
1005
+ "975": "LABEL_975",
1006
+ "976": "LABEL_976",
1007
+ "977": "LABEL_977",
1008
+ "978": "LABEL_978",
1009
+ "979": "LABEL_979",
1010
+ "980": "LABEL_980",
1011
+ "981": "LABEL_981",
1012
+ "982": "LABEL_982",
1013
+ "983": "LABEL_983",
1014
+ "984": "LABEL_984",
1015
+ "985": "LABEL_985",
1016
+ "986": "LABEL_986",
1017
+ "987": "LABEL_987",
1018
+ "988": "LABEL_988",
1019
+ "989": "LABEL_989",
1020
+ "990": "LABEL_990",
1021
+ "991": "LABEL_991",
1022
+ "992": "LABEL_992",
1023
+ "993": "LABEL_993",
1024
+ "994": "LABEL_994",
1025
+ "995": "LABEL_995",
1026
+ "996": "LABEL_996",
1027
+ "997": "LABEL_997",
1028
+ "998": "LABEL_998",
1029
+ "999": "LABEL_999"
1030
+ },
1031
+ "label2id": {
1032
+ "LABEL_0": 0,
1033
+ "LABEL_1": 1,
1034
+ "LABEL_10": 10,
1035
+ "LABEL_100": 100,
1036
+ "LABEL_101": 101,
1037
+ "LABEL_102": 102,
1038
+ "LABEL_103": 103,
1039
+ "LABEL_104": 104,
1040
+ "LABEL_105": 105,
1041
+ "LABEL_106": 106,
1042
+ "LABEL_107": 107,
1043
+ "LABEL_108": 108,
1044
+ "LABEL_109": 109,
1045
+ "LABEL_11": 11,
1046
+ "LABEL_110": 110,
1047
+ "LABEL_111": 111,
1048
+ "LABEL_112": 112,
1049
+ "LABEL_113": 113,
1050
+ "LABEL_114": 114,
1051
+ "LABEL_115": 115,
1052
+ "LABEL_116": 116,
1053
+ "LABEL_117": 117,
1054
+ "LABEL_118": 118,
1055
+ "LABEL_119": 119,
1056
+ "LABEL_12": 12,
1057
+ "LABEL_120": 120,
1058
+ "LABEL_121": 121,
1059
+ "LABEL_122": 122,
1060
+ "LABEL_123": 123,
1061
+ "LABEL_124": 124,
1062
+ "LABEL_125": 125,
1063
+ "LABEL_126": 126,
1064
+ "LABEL_127": 127,
1065
+ "LABEL_128": 128,
1066
+ "LABEL_129": 129,
1067
+ "LABEL_13": 13,
1068
+ "LABEL_130": 130,
1069
+ "LABEL_131": 131,
1070
+ "LABEL_132": 132,
1071
+ "LABEL_133": 133,
1072
+ "LABEL_134": 134,
1073
+ "LABEL_135": 135,
1074
+ "LABEL_136": 136,
1075
+ "LABEL_137": 137,
1076
+ "LABEL_138": 138,
1077
+ "LABEL_139": 139,
1078
+ "LABEL_14": 14,
1079
+ "LABEL_140": 140,
1080
+ "LABEL_141": 141,
1081
+ "LABEL_142": 142,
1082
+ "LABEL_143": 143,
1083
+ "LABEL_144": 144,
1084
+ "LABEL_145": 145,
1085
+ "LABEL_146": 146,
1086
+ "LABEL_147": 147,
1087
+ "LABEL_148": 148,
1088
+ "LABEL_149": 149,
1089
+ "LABEL_15": 15,
1090
+ "LABEL_150": 150,
1091
+ "LABEL_151": 151,
1092
+ "LABEL_152": 152,
1093
+ "LABEL_153": 153,
1094
+ "LABEL_154": 154,
1095
+ "LABEL_155": 155,
1096
+ "LABEL_156": 156,
1097
+ "LABEL_157": 157,
1098
+ "LABEL_158": 158,
1099
+ "LABEL_159": 159,
1100
+ "LABEL_16": 16,
1101
+ "LABEL_160": 160,
1102
+ "LABEL_161": 161,
1103
+ "LABEL_162": 162,
1104
+ "LABEL_163": 163,
1105
+ "LABEL_164": 164,
1106
+ "LABEL_165": 165,
1107
+ "LABEL_166": 166,
1108
+ "LABEL_167": 167,
1109
+ "LABEL_168": 168,
1110
+ "LABEL_169": 169,
1111
+ "LABEL_17": 17,
1112
+ "LABEL_170": 170,
1113
+ "LABEL_171": 171,
1114
+ "LABEL_172": 172,
1115
+ "LABEL_173": 173,
1116
+ "LABEL_174": 174,
1117
+ "LABEL_175": 175,
1118
+ "LABEL_176": 176,
1119
+ "LABEL_177": 177,
1120
+ "LABEL_178": 178,
1121
+ "LABEL_179": 179,
1122
+ "LABEL_18": 18,
1123
+ "LABEL_180": 180,
1124
+ "LABEL_181": 181,
1125
+ "LABEL_182": 182,
1126
+ "LABEL_183": 183,
1127
+ "LABEL_184": 184,
1128
+ "LABEL_185": 185,
1129
+ "LABEL_186": 186,
1130
+ "LABEL_187": 187,
1131
+ "LABEL_188": 188,
1132
+ "LABEL_189": 189,
1133
+ "LABEL_19": 19,
1134
+ "LABEL_190": 190,
1135
+ "LABEL_191": 191,
1136
+ "LABEL_192": 192,
1137
+ "LABEL_193": 193,
1138
+ "LABEL_194": 194,
1139
+ "LABEL_195": 195,
1140
+ "LABEL_196": 196,
1141
+ "LABEL_197": 197,
1142
+ "LABEL_198": 198,
1143
+ "LABEL_199": 199,
1144
+ "LABEL_2": 2,
1145
+ "LABEL_20": 20,
1146
+ "LABEL_200": 200,
1147
+ "LABEL_201": 201,
1148
+ "LABEL_202": 202,
1149
+ "LABEL_203": 203,
1150
+ "LABEL_204": 204,
1151
+ "LABEL_205": 205,
1152
+ "LABEL_206": 206,
1153
+ "LABEL_207": 207,
1154
+ "LABEL_208": 208,
1155
+ "LABEL_209": 209,
1156
+ "LABEL_21": 21,
1157
+ "LABEL_210": 210,
1158
+ "LABEL_211": 211,
1159
+ "LABEL_212": 212,
1160
+ "LABEL_213": 213,
1161
+ "LABEL_214": 214,
1162
+ "LABEL_215": 215,
1163
+ "LABEL_216": 216,
1164
+ "LABEL_217": 217,
1165
+ "LABEL_218": 218,
1166
+ "LABEL_219": 219,
1167
+ "LABEL_22": 22,
1168
+ "LABEL_220": 220,
1169
+ "LABEL_221": 221,
1170
+ "LABEL_222": 222,
1171
+ "LABEL_223": 223,
1172
+ "LABEL_224": 224,
1173
+ "LABEL_225": 225,
1174
+ "LABEL_226": 226,
1175
+ "LABEL_227": 227,
1176
+ "LABEL_228": 228,
1177
+ "LABEL_229": 229,
1178
+ "LABEL_23": 23,
1179
+ "LABEL_230": 230,
1180
+ "LABEL_231": 231,
1181
+ "LABEL_232": 232,
1182
+ "LABEL_233": 233,
1183
+ "LABEL_234": 234,
1184
+ "LABEL_235": 235,
1185
+ "LABEL_236": 236,
1186
+ "LABEL_237": 237,
1187
+ "LABEL_238": 238,
1188
+ "LABEL_239": 239,
1189
+ "LABEL_24": 24,
1190
+ "LABEL_240": 240,
1191
+ "LABEL_241": 241,
1192
+ "LABEL_242": 242,
1193
+ "LABEL_243": 243,
1194
+ "LABEL_244": 244,
1195
+ "LABEL_245": 245,
1196
+ "LABEL_246": 246,
1197
+ "LABEL_247": 247,
1198
+ "LABEL_248": 248,
1199
+ "LABEL_249": 249,
1200
+ "LABEL_25": 25,
1201
+ "LABEL_250": 250,
1202
+ "LABEL_251": 251,
1203
+ "LABEL_252": 252,
1204
+ "LABEL_253": 253,
1205
+ "LABEL_254": 254,
1206
+ "LABEL_255": 255,
1207
+ "LABEL_256": 256,
1208
+ "LABEL_257": 257,
1209
+ "LABEL_258": 258,
1210
+ "LABEL_259": 259,
1211
+ "LABEL_26": 26,
1212
+ "LABEL_260": 260,
1213
+ "LABEL_261": 261,
1214
+ "LABEL_262": 262,
1215
+ "LABEL_263": 263,
1216
+ "LABEL_264": 264,
1217
+ "LABEL_265": 265,
1218
+ "LABEL_266": 266,
1219
+ "LABEL_267": 267,
1220
+ "LABEL_268": 268,
1221
+ "LABEL_269": 269,
1222
+ "LABEL_27": 27,
1223
+ "LABEL_270": 270,
1224
+ "LABEL_271": 271,
1225
+ "LABEL_272": 272,
1226
+ "LABEL_273": 273,
1227
+ "LABEL_274": 274,
1228
+ "LABEL_275": 275,
1229
+ "LABEL_276": 276,
1230
+ "LABEL_277": 277,
1231
+ "LABEL_278": 278,
1232
+ "LABEL_279": 279,
1233
+ "LABEL_28": 28,
1234
+ "LABEL_280": 280,
1235
+ "LABEL_281": 281,
1236
+ "LABEL_282": 282,
1237
+ "LABEL_283": 283,
1238
+ "LABEL_284": 284,
1239
+ "LABEL_285": 285,
1240
+ "LABEL_286": 286,
1241
+ "LABEL_287": 287,
1242
+ "LABEL_288": 288,
1243
+ "LABEL_289": 289,
1244
+ "LABEL_29": 29,
1245
+ "LABEL_290": 290,
1246
+ "LABEL_291": 291,
1247
+ "LABEL_292": 292,
1248
+ "LABEL_293": 293,
1249
+ "LABEL_294": 294,
1250
+ "LABEL_295": 295,
1251
+ "LABEL_296": 296,
1252
+ "LABEL_297": 297,
1253
+ "LABEL_298": 298,
1254
+ "LABEL_299": 299,
1255
+ "LABEL_3": 3,
1256
+ "LABEL_30": 30,
1257
+ "LABEL_300": 300,
1258
+ "LABEL_301": 301,
1259
+ "LABEL_302": 302,
1260
+ "LABEL_303": 303,
1261
+ "LABEL_304": 304,
1262
+ "LABEL_305": 305,
1263
+ "LABEL_306": 306,
1264
+ "LABEL_307": 307,
1265
+ "LABEL_308": 308,
1266
+ "LABEL_309": 309,
1267
+ "LABEL_31": 31,
1268
+ "LABEL_310": 310,
1269
+ "LABEL_311": 311,
1270
+ "LABEL_312": 312,
1271
+ "LABEL_313": 313,
1272
+ "LABEL_314": 314,
1273
+ "LABEL_315": 315,
1274
+ "LABEL_316": 316,
1275
+ "LABEL_317": 317,
1276
+ "LABEL_318": 318,
1277
+ "LABEL_319": 319,
1278
+ "LABEL_32": 32,
1279
+ "LABEL_320": 320,
1280
+ "LABEL_321": 321,
1281
+ "LABEL_322": 322,
1282
+ "LABEL_323": 323,
1283
+ "LABEL_324": 324,
1284
+ "LABEL_325": 325,
1285
+ "LABEL_326": 326,
1286
+ "LABEL_327": 327,
1287
+ "LABEL_328": 328,
1288
+ "LABEL_329": 329,
1289
+ "LABEL_33": 33,
1290
+ "LABEL_330": 330,
1291
+ "LABEL_331": 331,
1292
+ "LABEL_332": 332,
1293
+ "LABEL_333": 333,
1294
+ "LABEL_334": 334,
1295
+ "LABEL_335": 335,
1296
+ "LABEL_336": 336,
1297
+ "LABEL_337": 337,
1298
+ "LABEL_338": 338,
1299
+ "LABEL_339": 339,
1300
+ "LABEL_34": 34,
1301
+ "LABEL_340": 340,
1302
+ "LABEL_341": 341,
1303
+ "LABEL_342": 342,
1304
+ "LABEL_343": 343,
1305
+ "LABEL_344": 344,
1306
+ "LABEL_345": 345,
1307
+ "LABEL_346": 346,
1308
+ "LABEL_347": 347,
1309
+ "LABEL_348": 348,
1310
+ "LABEL_349": 349,
1311
+ "LABEL_35": 35,
1312
+ "LABEL_350": 350,
1313
+ "LABEL_351": 351,
1314
+ "LABEL_352": 352,
1315
+ "LABEL_353": 353,
1316
+ "LABEL_354": 354,
1317
+ "LABEL_355": 355,
1318
+ "LABEL_356": 356,
1319
+ "LABEL_357": 357,
1320
+ "LABEL_358": 358,
1321
+ "LABEL_359": 359,
1322
+ "LABEL_36": 36,
1323
+ "LABEL_360": 360,
1324
+ "LABEL_361": 361,
1325
+ "LABEL_362": 362,
1326
+ "LABEL_363": 363,
1327
+ "LABEL_364": 364,
1328
+ "LABEL_365": 365,
1329
+ "LABEL_366": 366,
1330
+ "LABEL_367": 367,
1331
+ "LABEL_368": 368,
1332
+ "LABEL_369": 369,
1333
+ "LABEL_37": 37,
1334
+ "LABEL_370": 370,
1335
+ "LABEL_371": 371,
1336
+ "LABEL_372": 372,
1337
+ "LABEL_373": 373,
1338
+ "LABEL_374": 374,
1339
+ "LABEL_375": 375,
1340
+ "LABEL_376": 376,
1341
+ "LABEL_377": 377,
1342
+ "LABEL_378": 378,
1343
+ "LABEL_379": 379,
1344
+ "LABEL_38": 38,
1345
+ "LABEL_380": 380,
1346
+ "LABEL_381": 381,
1347
+ "LABEL_382": 382,
1348
+ "LABEL_383": 383,
1349
+ "LABEL_384": 384,
1350
+ "LABEL_385": 385,
1351
+ "LABEL_386": 386,
1352
+ "LABEL_387": 387,
1353
+ "LABEL_388": 388,
1354
+ "LABEL_389": 389,
1355
+ "LABEL_39": 39,
1356
+ "LABEL_390": 390,
1357
+ "LABEL_391": 391,
1358
+ "LABEL_392": 392,
1359
+ "LABEL_393": 393,
1360
+ "LABEL_394": 394,
1361
+ "LABEL_395": 395,
1362
+ "LABEL_396": 396,
1363
+ "LABEL_397": 397,
1364
+ "LABEL_398": 398,
1365
+ "LABEL_399": 399,
1366
+ "LABEL_4": 4,
1367
+ "LABEL_40": 40,
1368
+ "LABEL_400": 400,
1369
+ "LABEL_401": 401,
1370
+ "LABEL_402": 402,
1371
+ "LABEL_403": 403,
1372
+ "LABEL_404": 404,
1373
+ "LABEL_405": 405,
1374
+ "LABEL_406": 406,
1375
+ "LABEL_407": 407,
1376
+ "LABEL_408": 408,
1377
+ "LABEL_409": 409,
1378
+ "LABEL_41": 41,
1379
+ "LABEL_410": 410,
1380
+ "LABEL_411": 411,
1381
+ "LABEL_412": 412,
1382
+ "LABEL_413": 413,
1383
+ "LABEL_414": 414,
1384
+ "LABEL_415": 415,
1385
+ "LABEL_416": 416,
1386
+ "LABEL_417": 417,
1387
+ "LABEL_418": 418,
1388
+ "LABEL_419": 419,
1389
+ "LABEL_42": 42,
1390
+ "LABEL_420": 420,
1391
+ "LABEL_421": 421,
1392
+ "LABEL_422": 422,
1393
+ "LABEL_423": 423,
1394
+ "LABEL_424": 424,
1395
+ "LABEL_425": 425,
1396
+ "LABEL_426": 426,
1397
+ "LABEL_427": 427,
1398
+ "LABEL_428": 428,
1399
+ "LABEL_429": 429,
1400
+ "LABEL_43": 43,
1401
+ "LABEL_430": 430,
1402
+ "LABEL_431": 431,
1403
+ "LABEL_432": 432,
1404
+ "LABEL_433": 433,
1405
+ "LABEL_434": 434,
1406
+ "LABEL_435": 435,
1407
+ "LABEL_436": 436,
1408
+ "LABEL_437": 437,
1409
+ "LABEL_438": 438,
1410
+ "LABEL_439": 439,
1411
+ "LABEL_44": 44,
1412
+ "LABEL_440": 440,
1413
+ "LABEL_441": 441,
1414
+ "LABEL_442": 442,
1415
+ "LABEL_443": 443,
1416
+ "LABEL_444": 444,
1417
+ "LABEL_445": 445,
1418
+ "LABEL_446": 446,
1419
+ "LABEL_447": 447,
1420
+ "LABEL_448": 448,
1421
+ "LABEL_449": 449,
1422
+ "LABEL_45": 45,
1423
+ "LABEL_450": 450,
1424
+ "LABEL_451": 451,
1425
+ "LABEL_452": 452,
1426
+ "LABEL_453": 453,
1427
+ "LABEL_454": 454,
1428
+ "LABEL_455": 455,
1429
+ "LABEL_456": 456,
1430
+ "LABEL_457": 457,
1431
+ "LABEL_458": 458,
1432
+ "LABEL_459": 459,
1433
+ "LABEL_46": 46,
1434
+ "LABEL_460": 460,
1435
+ "LABEL_461": 461,
1436
+ "LABEL_462": 462,
1437
+ "LABEL_463": 463,
1438
+ "LABEL_464": 464,
1439
+ "LABEL_465": 465,
1440
+ "LABEL_466": 466,
1441
+ "LABEL_467": 467,
1442
+ "LABEL_468": 468,
1443
+ "LABEL_469": 469,
1444
+ "LABEL_47": 47,
1445
+ "LABEL_470": 470,
1446
+ "LABEL_471": 471,
1447
+ "LABEL_472": 472,
1448
+ "LABEL_473": 473,
1449
+ "LABEL_474": 474,
1450
+ "LABEL_475": 475,
1451
+ "LABEL_476": 476,
1452
+ "LABEL_477": 477,
1453
+ "LABEL_478": 478,
1454
+ "LABEL_479": 479,
1455
+ "LABEL_48": 48,
1456
+ "LABEL_480": 480,
1457
+ "LABEL_481": 481,
1458
+ "LABEL_482": 482,
1459
+ "LABEL_483": 483,
1460
+ "LABEL_484": 484,
1461
+ "LABEL_485": 485,
1462
+ "LABEL_486": 486,
1463
+ "LABEL_487": 487,
1464
+ "LABEL_488": 488,
1465
+ "LABEL_489": 489,
1466
+ "LABEL_49": 49,
1467
+ "LABEL_490": 490,
1468
+ "LABEL_491": 491,
1469
+ "LABEL_492": 492,
1470
+ "LABEL_493": 493,
1471
+ "LABEL_494": 494,
1472
+ "LABEL_495": 495,
1473
+ "LABEL_496": 496,
1474
+ "LABEL_497": 497,
1475
+ "LABEL_498": 498,
1476
+ "LABEL_499": 499,
1477
+ "LABEL_5": 5,
1478
+ "LABEL_50": 50,
1479
+ "LABEL_500": 500,
1480
+ "LABEL_501": 501,
1481
+ "LABEL_502": 502,
1482
+ "LABEL_503": 503,
1483
+ "LABEL_504": 504,
1484
+ "LABEL_505": 505,
1485
+ "LABEL_506": 506,
1486
+ "LABEL_507": 507,
1487
+ "LABEL_508": 508,
1488
+ "LABEL_509": 509,
1489
+ "LABEL_51": 51,
1490
+ "LABEL_510": 510,
1491
+ "LABEL_511": 511,
1492
+ "LABEL_512": 512,
1493
+ "LABEL_513": 513,
1494
+ "LABEL_514": 514,
1495
+ "LABEL_515": 515,
1496
+ "LABEL_516": 516,
1497
+ "LABEL_517": 517,
1498
+ "LABEL_518": 518,
1499
+ "LABEL_519": 519,
1500
+ "LABEL_52": 52,
1501
+ "LABEL_520": 520,
1502
+ "LABEL_521": 521,
1503
+ "LABEL_522": 522,
1504
+ "LABEL_523": 523,
1505
+ "LABEL_524": 524,
1506
+ "LABEL_525": 525,
1507
+ "LABEL_526": 526,
1508
+ "LABEL_527": 527,
1509
+ "LABEL_528": 528,
1510
+ "LABEL_529": 529,
1511
+ "LABEL_53": 53,
1512
+ "LABEL_530": 530,
1513
+ "LABEL_531": 531,
1514
+ "LABEL_532": 532,
1515
+ "LABEL_533": 533,
1516
+ "LABEL_534": 534,
1517
+ "LABEL_535": 535,
1518
+ "LABEL_536": 536,
1519
+ "LABEL_537": 537,
1520
+ "LABEL_538": 538,
1521
+ "LABEL_539": 539,
1522
+ "LABEL_54": 54,
1523
+ "LABEL_540": 540,
1524
+ "LABEL_541": 541,
1525
+ "LABEL_542": 542,
1526
+ "LABEL_543": 543,
1527
+ "LABEL_544": 544,
1528
+ "LABEL_545": 545,
1529
+ "LABEL_546": 546,
1530
+ "LABEL_547": 547,
1531
+ "LABEL_548": 548,
1532
+ "LABEL_549": 549,
1533
+ "LABEL_55": 55,
1534
+ "LABEL_550": 550,
1535
+ "LABEL_551": 551,
1536
+ "LABEL_552": 552,
1537
+ "LABEL_553": 553,
1538
+ "LABEL_554": 554,
1539
+ "LABEL_555": 555,
1540
+ "LABEL_556": 556,
1541
+ "LABEL_557": 557,
1542
+ "LABEL_558": 558,
1543
+ "LABEL_559": 559,
1544
+ "LABEL_56": 56,
1545
+ "LABEL_560": 560,
1546
+ "LABEL_561": 561,
1547
+ "LABEL_562": 562,
1548
+ "LABEL_563": 563,
1549
+ "LABEL_564": 564,
1550
+ "LABEL_565": 565,
1551
+ "LABEL_566": 566,
1552
+ "LABEL_567": 567,
1553
+ "LABEL_568": 568,
1554
+ "LABEL_569": 569,
1555
+ "LABEL_57": 57,
1556
+ "LABEL_570": 570,
1557
+ "LABEL_571": 571,
1558
+ "LABEL_572": 572,
1559
+ "LABEL_573": 573,
1560
+ "LABEL_574": 574,
1561
+ "LABEL_575": 575,
1562
+ "LABEL_576": 576,
1563
+ "LABEL_577": 577,
1564
+ "LABEL_578": 578,
1565
+ "LABEL_579": 579,
1566
+ "LABEL_58": 58,
1567
+ "LABEL_580": 580,
1568
+ "LABEL_581": 581,
1569
+ "LABEL_582": 582,
1570
+ "LABEL_583": 583,
1571
+ "LABEL_584": 584,
1572
+ "LABEL_585": 585,
1573
+ "LABEL_586": 586,
1574
+ "LABEL_587": 587,
1575
+ "LABEL_588": 588,
1576
+ "LABEL_589": 589,
1577
+ "LABEL_59": 59,
1578
+ "LABEL_590": 590,
1579
+ "LABEL_591": 591,
1580
+ "LABEL_592": 592,
1581
+ "LABEL_593": 593,
1582
+ "LABEL_594": 594,
1583
+ "LABEL_595": 595,
1584
+ "LABEL_596": 596,
1585
+ "LABEL_597": 597,
1586
+ "LABEL_598": 598,
1587
+ "LABEL_599": 599,
1588
+ "LABEL_6": 6,
1589
+ "LABEL_60": 60,
1590
+ "LABEL_600": 600,
1591
+ "LABEL_601": 601,
1592
+ "LABEL_602": 602,
1593
+ "LABEL_603": 603,
1594
+ "LABEL_604": 604,
1595
+ "LABEL_605": 605,
1596
+ "LABEL_606": 606,
1597
+ "LABEL_607": 607,
1598
+ "LABEL_608": 608,
1599
+ "LABEL_609": 609,
1600
+ "LABEL_61": 61,
1601
+ "LABEL_610": 610,
1602
+ "LABEL_611": 611,
1603
+ "LABEL_612": 612,
1604
+ "LABEL_613": 613,
1605
+ "LABEL_614": 614,
1606
+ "LABEL_615": 615,
1607
+ "LABEL_616": 616,
1608
+ "LABEL_617": 617,
1609
+ "LABEL_618": 618,
1610
+ "LABEL_619": 619,
1611
+ "LABEL_62": 62,
1612
+ "LABEL_620": 620,
1613
+ "LABEL_621": 621,
1614
+ "LABEL_622": 622,
1615
+ "LABEL_623": 623,
1616
+ "LABEL_624": 624,
1617
+ "LABEL_625": 625,
1618
+ "LABEL_626": 626,
1619
+ "LABEL_627": 627,
1620
+ "LABEL_628": 628,
1621
+ "LABEL_629": 629,
1622
+ "LABEL_63": 63,
1623
+ "LABEL_630": 630,
1624
+ "LABEL_631": 631,
1625
+ "LABEL_632": 632,
1626
+ "LABEL_633": 633,
1627
+ "LABEL_634": 634,
1628
+ "LABEL_635": 635,
1629
+ "LABEL_636": 636,
1630
+ "LABEL_637": 637,
1631
+ "LABEL_638": 638,
1632
+ "LABEL_639": 639,
1633
+ "LABEL_64": 64,
1634
+ "LABEL_640": 640,
1635
+ "LABEL_641": 641,
1636
+ "LABEL_642": 642,
1637
+ "LABEL_643": 643,
1638
+ "LABEL_644": 644,
1639
+ "LABEL_645": 645,
1640
+ "LABEL_646": 646,
1641
+ "LABEL_647": 647,
1642
+ "LABEL_648": 648,
1643
+ "LABEL_649": 649,
1644
+ "LABEL_65": 65,
1645
+ "LABEL_650": 650,
1646
+ "LABEL_651": 651,
1647
+ "LABEL_652": 652,
1648
+ "LABEL_653": 653,
1649
+ "LABEL_654": 654,
1650
+ "LABEL_655": 655,
1651
+ "LABEL_656": 656,
1652
+ "LABEL_657": 657,
1653
+ "LABEL_658": 658,
1654
+ "LABEL_659": 659,
1655
+ "LABEL_66": 66,
1656
+ "LABEL_660": 660,
1657
+ "LABEL_661": 661,
1658
+ "LABEL_662": 662,
1659
+ "LABEL_663": 663,
1660
+ "LABEL_664": 664,
1661
+ "LABEL_665": 665,
1662
+ "LABEL_666": 666,
1663
+ "LABEL_667": 667,
1664
+ "LABEL_668": 668,
1665
+ "LABEL_669": 669,
1666
+ "LABEL_67": 67,
1667
+ "LABEL_670": 670,
1668
+ "LABEL_671": 671,
1669
+ "LABEL_672": 672,
1670
+ "LABEL_673": 673,
1671
+ "LABEL_674": 674,
1672
+ "LABEL_675": 675,
1673
+ "LABEL_676": 676,
1674
+ "LABEL_677": 677,
1675
+ "LABEL_678": 678,
1676
+ "LABEL_679": 679,
1677
+ "LABEL_68": 68,
1678
+ "LABEL_680": 680,
1679
+ "LABEL_681": 681,
1680
+ "LABEL_682": 682,
1681
+ "LABEL_683": 683,
1682
+ "LABEL_684": 684,
1683
+ "LABEL_685": 685,
1684
+ "LABEL_686": 686,
1685
+ "LABEL_687": 687,
1686
+ "LABEL_688": 688,
1687
+ "LABEL_689": 689,
1688
+ "LABEL_69": 69,
1689
+ "LABEL_690": 690,
1690
+ "LABEL_691": 691,
1691
+ "LABEL_692": 692,
1692
+ "LABEL_693": 693,
1693
+ "LABEL_694": 694,
1694
+ "LABEL_695": 695,
1695
+ "LABEL_696": 696,
1696
+ "LABEL_697": 697,
1697
+ "LABEL_698": 698,
1698
+ "LABEL_699": 699,
1699
+ "LABEL_7": 7,
1700
+ "LABEL_70": 70,
1701
+ "LABEL_700": 700,
1702
+ "LABEL_701": 701,
1703
+ "LABEL_702": 702,
1704
+ "LABEL_703": 703,
1705
+ "LABEL_704": 704,
1706
+ "LABEL_705": 705,
1707
+ "LABEL_706": 706,
1708
+ "LABEL_707": 707,
1709
+ "LABEL_708": 708,
1710
+ "LABEL_709": 709,
1711
+ "LABEL_71": 71,
1712
+ "LABEL_710": 710,
1713
+ "LABEL_711": 711,
1714
+ "LABEL_712": 712,
1715
+ "LABEL_713": 713,
1716
+ "LABEL_714": 714,
1717
+ "LABEL_715": 715,
1718
+ "LABEL_716": 716,
1719
+ "LABEL_717": 717,
1720
+ "LABEL_718": 718,
1721
+ "LABEL_719": 719,
1722
+ "LABEL_72": 72,
1723
+ "LABEL_720": 720,
1724
+ "LABEL_721": 721,
1725
+ "LABEL_722": 722,
1726
+ "LABEL_723": 723,
1727
+ "LABEL_724": 724,
1728
+ "LABEL_725": 725,
1729
+ "LABEL_726": 726,
1730
+ "LABEL_727": 727,
1731
+ "LABEL_728": 728,
1732
+ "LABEL_729": 729,
1733
+ "LABEL_73": 73,
1734
+ "LABEL_730": 730,
1735
+ "LABEL_731": 731,
1736
+ "LABEL_732": 732,
1737
+ "LABEL_733": 733,
1738
+ "LABEL_734": 734,
1739
+ "LABEL_735": 735,
1740
+ "LABEL_736": 736,
1741
+ "LABEL_737": 737,
1742
+ "LABEL_738": 738,
1743
+ "LABEL_739": 739,
1744
+ "LABEL_74": 74,
1745
+ "LABEL_740": 740,
1746
+ "LABEL_741": 741,
1747
+ "LABEL_742": 742,
1748
+ "LABEL_743": 743,
1749
+ "LABEL_744": 744,
1750
+ "LABEL_745": 745,
1751
+ "LABEL_746": 746,
1752
+ "LABEL_747": 747,
1753
+ "LABEL_748": 748,
1754
+ "LABEL_749": 749,
1755
+ "LABEL_75": 75,
1756
+ "LABEL_750": 750,
1757
+ "LABEL_751": 751,
1758
+ "LABEL_752": 752,
1759
+ "LABEL_753": 753,
1760
+ "LABEL_754": 754,
1761
+ "LABEL_755": 755,
1762
+ "LABEL_756": 756,
1763
+ "LABEL_757": 757,
1764
+ "LABEL_758": 758,
1765
+ "LABEL_759": 759,
1766
+ "LABEL_76": 76,
1767
+ "LABEL_760": 760,
1768
+ "LABEL_761": 761,
1769
+ "LABEL_762": 762,
1770
+ "LABEL_763": 763,
1771
+ "LABEL_764": 764,
1772
+ "LABEL_765": 765,
1773
+ "LABEL_766": 766,
1774
+ "LABEL_767": 767,
1775
+ "LABEL_768": 768,
1776
+ "LABEL_769": 769,
1777
+ "LABEL_77": 77,
1778
+ "LABEL_770": 770,
1779
+ "LABEL_771": 771,
1780
+ "LABEL_772": 772,
1781
+ "LABEL_773": 773,
1782
+ "LABEL_774": 774,
1783
+ "LABEL_775": 775,
1784
+ "LABEL_776": 776,
1785
+ "LABEL_777": 777,
1786
+ "LABEL_778": 778,
1787
+ "LABEL_779": 779,
1788
+ "LABEL_78": 78,
1789
+ "LABEL_780": 780,
1790
+ "LABEL_781": 781,
1791
+ "LABEL_782": 782,
1792
+ "LABEL_783": 783,
1793
+ "LABEL_784": 784,
1794
+ "LABEL_785": 785,
1795
+ "LABEL_786": 786,
1796
+ "LABEL_787": 787,
1797
+ "LABEL_788": 788,
1798
+ "LABEL_789": 789,
1799
+ "LABEL_79": 79,
1800
+ "LABEL_790": 790,
1801
+ "LABEL_791": 791,
1802
+ "LABEL_792": 792,
1803
+ "LABEL_793": 793,
1804
+ "LABEL_794": 794,
1805
+ "LABEL_795": 795,
1806
+ "LABEL_796": 796,
1807
+ "LABEL_797": 797,
1808
+ "LABEL_798": 798,
1809
+ "LABEL_799": 799,
1810
+ "LABEL_8": 8,
1811
+ "LABEL_80": 80,
1812
+ "LABEL_800": 800,
1813
+ "LABEL_801": 801,
1814
+ "LABEL_802": 802,
1815
+ "LABEL_803": 803,
1816
+ "LABEL_804": 804,
1817
+ "LABEL_805": 805,
1818
+ "LABEL_806": 806,
1819
+ "LABEL_807": 807,
1820
+ "LABEL_808": 808,
1821
+ "LABEL_809": 809,
1822
+ "LABEL_81": 81,
1823
+ "LABEL_810": 810,
1824
+ "LABEL_811": 811,
1825
+ "LABEL_812": 812,
1826
+ "LABEL_813": 813,
1827
+ "LABEL_814": 814,
1828
+ "LABEL_815": 815,
1829
+ "LABEL_816": 816,
1830
+ "LABEL_817": 817,
1831
+ "LABEL_818": 818,
1832
+ "LABEL_819": 819,
1833
+ "LABEL_82": 82,
1834
+ "LABEL_820": 820,
1835
+ "LABEL_821": 821,
1836
+ "LABEL_822": 822,
1837
+ "LABEL_823": 823,
1838
+ "LABEL_824": 824,
1839
+ "LABEL_825": 825,
1840
+ "LABEL_826": 826,
1841
+ "LABEL_827": 827,
1842
+ "LABEL_828": 828,
1843
+ "LABEL_829": 829,
1844
+ "LABEL_83": 83,
1845
+ "LABEL_830": 830,
1846
+ "LABEL_831": 831,
1847
+ "LABEL_832": 832,
1848
+ "LABEL_833": 833,
1849
+ "LABEL_834": 834,
1850
+ "LABEL_835": 835,
1851
+ "LABEL_836": 836,
1852
+ "LABEL_837": 837,
1853
+ "LABEL_838": 838,
1854
+ "LABEL_839": 839,
1855
+ "LABEL_84": 84,
1856
+ "LABEL_840": 840,
1857
+ "LABEL_841": 841,
1858
+ "LABEL_842": 842,
1859
+ "LABEL_843": 843,
1860
+ "LABEL_844": 844,
1861
+ "LABEL_845": 845,
1862
+ "LABEL_846": 846,
1863
+ "LABEL_847": 847,
1864
+ "LABEL_848": 848,
1865
+ "LABEL_849": 849,
1866
+ "LABEL_85": 85,
1867
+ "LABEL_850": 850,
1868
+ "LABEL_851": 851,
1869
+ "LABEL_852": 852,
1870
+ "LABEL_853": 853,
1871
+ "LABEL_854": 854,
1872
+ "LABEL_855": 855,
1873
+ "LABEL_856": 856,
1874
+ "LABEL_857": 857,
1875
+ "LABEL_858": 858,
1876
+ "LABEL_859": 859,
1877
+ "LABEL_86": 86,
1878
+ "LABEL_860": 860,
1879
+ "LABEL_861": 861,
1880
+ "LABEL_862": 862,
1881
+ "LABEL_863": 863,
1882
+ "LABEL_864": 864,
1883
+ "LABEL_865": 865,
1884
+ "LABEL_866": 866,
1885
+ "LABEL_867": 867,
1886
+ "LABEL_868": 868,
1887
+ "LABEL_869": 869,
1888
+ "LABEL_87": 87,
1889
+ "LABEL_870": 870,
1890
+ "LABEL_871": 871,
1891
+ "LABEL_872": 872,
1892
+ "LABEL_873": 873,
1893
+ "LABEL_874": 874,
1894
+ "LABEL_875": 875,
1895
+ "LABEL_876": 876,
1896
+ "LABEL_877": 877,
1897
+ "LABEL_878": 878,
1898
+ "LABEL_879": 879,
1899
+ "LABEL_88": 88,
1900
+ "LABEL_880": 880,
1901
+ "LABEL_881": 881,
1902
+ "LABEL_882": 882,
1903
+ "LABEL_883": 883,
1904
+ "LABEL_884": 884,
1905
+ "LABEL_885": 885,
1906
+ "LABEL_886": 886,
1907
+ "LABEL_887": 887,
1908
+ "LABEL_888": 888,
1909
+ "LABEL_889": 889,
1910
+ "LABEL_89": 89,
1911
+ "LABEL_890": 890,
1912
+ "LABEL_891": 891,
1913
+ "LABEL_892": 892,
1914
+ "LABEL_893": 893,
1915
+ "LABEL_894": 894,
1916
+ "LABEL_895": 895,
1917
+ "LABEL_896": 896,
1918
+ "LABEL_897": 897,
1919
+ "LABEL_898": 898,
1920
+ "LABEL_899": 899,
1921
+ "LABEL_9": 9,
1922
+ "LABEL_90": 90,
1923
+ "LABEL_900": 900,
1924
+ "LABEL_901": 901,
1925
+ "LABEL_902": 902,
1926
+ "LABEL_903": 903,
1927
+ "LABEL_904": 904,
1928
+ "LABEL_905": 905,
1929
+ "LABEL_906": 906,
1930
+ "LABEL_907": 907,
1931
+ "LABEL_908": 908,
1932
+ "LABEL_909": 909,
1933
+ "LABEL_91": 91,
1934
+ "LABEL_910": 910,
1935
+ "LABEL_911": 911,
1936
+ "LABEL_912": 912,
1937
+ "LABEL_913": 913,
1938
+ "LABEL_914": 914,
1939
+ "LABEL_915": 915,
1940
+ "LABEL_916": 916,
1941
+ "LABEL_917": 917,
1942
+ "LABEL_918": 918,
1943
+ "LABEL_919": 919,
1944
+ "LABEL_92": 92,
1945
+ "LABEL_920": 920,
1946
+ "LABEL_921": 921,
1947
+ "LABEL_922": 922,
1948
+ "LABEL_923": 923,
1949
+ "LABEL_924": 924,
1950
+ "LABEL_925": 925,
1951
+ "LABEL_926": 926,
1952
+ "LABEL_927": 927,
1953
+ "LABEL_928": 928,
1954
+ "LABEL_929": 929,
1955
+ "LABEL_93": 93,
1956
+ "LABEL_930": 930,
1957
+ "LABEL_931": 931,
1958
+ "LABEL_932": 932,
1959
+ "LABEL_933": 933,
1960
+ "LABEL_934": 934,
1961
+ "LABEL_935": 935,
1962
+ "LABEL_936": 936,
1963
+ "LABEL_937": 937,
1964
+ "LABEL_938": 938,
1965
+ "LABEL_939": 939,
1966
+ "LABEL_94": 94,
1967
+ "LABEL_940": 940,
1968
+ "LABEL_941": 941,
1969
+ "LABEL_942": 942,
1970
+ "LABEL_943": 943,
1971
+ "LABEL_944": 944,
1972
+ "LABEL_945": 945,
1973
+ "LABEL_946": 946,
1974
+ "LABEL_947": 947,
1975
+ "LABEL_948": 948,
1976
+ "LABEL_949": 949,
1977
+ "LABEL_95": 95,
1978
+ "LABEL_950": 950,
1979
+ "LABEL_951": 951,
1980
+ "LABEL_952": 952,
1981
+ "LABEL_953": 953,
1982
+ "LABEL_954": 954,
1983
+ "LABEL_955": 955,
1984
+ "LABEL_956": 956,
1985
+ "LABEL_957": 957,
1986
+ "LABEL_958": 958,
1987
+ "LABEL_959": 959,
1988
+ "LABEL_96": 96,
1989
+ "LABEL_960": 960,
1990
+ "LABEL_961": 961,
1991
+ "LABEL_962": 962,
1992
+ "LABEL_963": 963,
1993
+ "LABEL_964": 964,
1994
+ "LABEL_965": 965,
1995
+ "LABEL_966": 966,
1996
+ "LABEL_967": 967,
1997
+ "LABEL_968": 968,
1998
+ "LABEL_969": 969,
1999
+ "LABEL_97": 97,
2000
+ "LABEL_970": 970,
2001
+ "LABEL_971": 971,
2002
+ "LABEL_972": 972,
2003
+ "LABEL_973": 973,
2004
+ "LABEL_974": 974,
2005
+ "LABEL_975": 975,
2006
+ "LABEL_976": 976,
2007
+ "LABEL_977": 977,
2008
+ "LABEL_978": 978,
2009
+ "LABEL_979": 979,
2010
+ "LABEL_98": 98,
2011
+ "LABEL_980": 980,
2012
+ "LABEL_981": 981,
2013
+ "LABEL_982": 982,
2014
+ "LABEL_983": 983,
2015
+ "LABEL_984": 984,
2016
+ "LABEL_985": 985,
2017
+ "LABEL_986": 986,
2018
+ "LABEL_987": 987,
2019
+ "LABEL_988": 988,
2020
+ "LABEL_989": 989,
2021
+ "LABEL_99": 99,
2022
+ "LABEL_990": 990,
2023
+ "LABEL_991": 991,
2024
+ "LABEL_992": 992,
2025
+ "LABEL_993": 993,
2026
+ "LABEL_994": 994,
2027
+ "LABEL_995": 995,
2028
+ "LABEL_996": 996,
2029
+ "LABEL_997": 997,
2030
+ "LABEL_998": 998,
2031
+ "LABEL_999": 999
2032
+ },
2033
+ "model_type": "microvit",
2034
+ "partial_dim": [
2035
+ 32,
2036
+ 66,
2037
+ 96
2038
+ ],
2039
+ "qk_dim": [
2040
+ 16,
2041
+ 16,
2042
+ 16
2043
+ ],
2044
+ "transformers_version": "5.10.2",
2045
+ "types": [
2046
+ "i",
2047
+ "s",
2048
+ "s"
2049
+ ],
2050
+ "variant": "s2",
2051
+ "auto_map": {
2052
+ "AutoConfig": "microvit_hf.MicroViTConfig",
2053
+ "AutoModelForImageClassification": "microvit_hf.MicroViTForImageClassification"
2054
+ }
2055
+ }
microvit_hf.py ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """MicroViT HuggingFace model definition (trust_remote_code=True).
2
+
3
+ MicroViTConfig + MicroViTForImageClassification — registered with AutoClasses.
4
+ Architecture: SHViT (Single-Head Vision Transformer).
5
+ Source: https://github.com/novendrastywn/MicroViT
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import torch
11
+ import torch.nn as nn
12
+ from transformers import PretrainedConfig, PreTrainedModel
13
+ from transformers.modeling_outputs import ImageClassifierOutput
14
+
15
+ from shvit import SHViT # absolute import — both files live in HF repo root
16
+
17
+ _VARIANT_CONFIGS: dict[str, dict] = {
18
+ "s1": {
19
+ "embed_dim": [128, 224, 320],
20
+ "partial_dim": [32, 48, 68],
21
+ "qk_dim": [16, 16, 16],
22
+ "depth": [2, 4, 5],
23
+ "types": ["i", "s", "s"],
24
+ "down_ops": [["subsample", 2], ["subsample", 2], [""]],
25
+ },
26
+ "s2": {
27
+ "embed_dim": [128, 308, 448],
28
+ "partial_dim": [32, 66, 96],
29
+ "qk_dim": [16, 16, 16],
30
+ "depth": [2, 4, 5],
31
+ "types": ["i", "s", "s"],
32
+ "down_ops": [["subsample", 2], ["subsample", 2], [""]],
33
+ },
34
+ "s3": {
35
+ "embed_dim": [192, 352, 448],
36
+ "partial_dim": [48, 75, 96],
37
+ "qk_dim": [16, 16, 16],
38
+ "depth": [3, 5, 5],
39
+ "types": ["i", "s", "s"],
40
+ "down_ops": [["subsample", 2], ["subsample", 2], [""]],
41
+ },
42
+ }
43
+
44
+
45
+ class MicroViTConfig(PretrainedConfig):
46
+ model_type = "microvit"
47
+
48
+ def __init__(
49
+ self,
50
+ variant: str = "s1",
51
+ embed_dim: list[int] | None = None,
52
+ partial_dim: list[int] | None = None,
53
+ qk_dim: list[int] | None = None,
54
+ depth: list[int] | None = None,
55
+ types: list[str] | None = None,
56
+ down_ops: list | None = None,
57
+ num_labels: int = 1000,
58
+ **kwargs,
59
+ ):
60
+ super().__init__(num_labels=num_labels, **kwargs)
61
+ defaults = _VARIANT_CONFIGS.get(variant, _VARIANT_CONFIGS["s1"])
62
+ self.variant = variant
63
+ self.embed_dim = embed_dim if embed_dim is not None else defaults["embed_dim"]
64
+ self.partial_dim = partial_dim if partial_dim is not None else defaults["partial_dim"]
65
+ self.qk_dim = qk_dim if qk_dim is not None else defaults["qk_dim"]
66
+ self.depth = depth if depth is not None else defaults["depth"]
67
+ self.types = types if types is not None else defaults["types"]
68
+ self.down_ops = down_ops if down_ops is not None else defaults["down_ops"]
69
+
70
+
71
+ class MicroViTForImageClassification(PreTrainedModel):
72
+ config_class = MicroViTConfig
73
+
74
+ def __init__(self, config: MicroViTConfig):
75
+ super().__init__(config)
76
+ self.backbone = SHViT(
77
+ num_classes=config.num_labels,
78
+ embed_dim=config.embed_dim,
79
+ partial_dim=config.partial_dim,
80
+ qk_dim=config.qk_dim,
81
+ depth=config.depth,
82
+ types=config.types,
83
+ down_ops=config.down_ops,
84
+ )
85
+ self.post_init()
86
+
87
+ def forward(
88
+ self,
89
+ pixel_values: torch.Tensor,
90
+ labels: torch.Tensor | None = None,
91
+ ) -> ImageClassifierOutput:
92
+ logits = self.backbone(pixel_values)
93
+ loss = None
94
+ if labels is not None:
95
+ loss = nn.CrossEntropyLoss()(logits, labels)
96
+ return ImageClassifierOutput(loss=loss, logits=logits)
model.safetensors ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:6856eb789b6f892c50a70ed38c90c72270b4a1693da72b2ac1983e592f52b810
3
+ size 46215944
shvit.py ADDED
@@ -0,0 +1,230 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ """SHViT architecture — Single-Head Vision Transformer.
2
+
3
+ Source: https://github.com/novendrastywn/MicroViT (model/shvit.py)
4
+ Included verbatim; do not edit — keep in sync with upstream if needed.
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ import itertools
10
+
11
+ import torch
12
+ import torch.nn as nn
13
+
14
+ from timm.models.vision_transformer import trunc_normal_
15
+ from timm.models.layers import SqueezeExcite
16
+
17
+
18
+ class GroupNorm(nn.GroupNorm):
19
+ def __init__(self, num_channels, **kwargs):
20
+ super().__init__(1, num_channels, **kwargs)
21
+
22
+
23
+ class Conv2d_BN(nn.Sequential):
24
+ def __init__(self, a, b, ks=1, stride=1, pad=0, dilation=1,
25
+ groups=1, bn_weight_init=1):
26
+ super().__init__()
27
+ self.add_module('c', nn.Conv2d(a, b, ks, stride, pad, dilation, groups, bias=False))
28
+ self.add_module('bn', nn.BatchNorm2d(b))
29
+ nn.init.constant_(self.bn.weight, bn_weight_init)
30
+ nn.init.constant_(self.bn.bias, 0)
31
+
32
+ @torch.no_grad()
33
+ def fuse(self):
34
+ c, bn = self._modules.values()
35
+ w = bn.weight / (bn.running_var + bn.eps) ** 0.5
36
+ w = c.weight * w[:, None, None, None]
37
+ b = bn.bias - bn.running_mean * bn.weight / (bn.running_var + bn.eps) ** 0.5
38
+ m = nn.Conv2d(
39
+ w.size(1) * self.c.groups, w.size(0), w.shape[2:],
40
+ stride=self.c.stride, padding=self.c.padding,
41
+ dilation=self.c.dilation, groups=self.c.groups,
42
+ device=c.weight.device,
43
+ )
44
+ m.weight.data.copy_(w)
45
+ m.bias.data.copy_(b)
46
+ return m
47
+
48
+
49
+ class BN_Linear(nn.Sequential):
50
+ def __init__(self, a, b, bias=True, std=0.02):
51
+ super().__init__()
52
+ self.add_module('bn', nn.BatchNorm1d(a))
53
+ self.add_module('l', nn.Linear(a, b, bias=bias))
54
+ trunc_normal_(self.l.weight, std=std)
55
+ if bias:
56
+ nn.init.constant_(self.l.bias, 0)
57
+
58
+ @torch.no_grad()
59
+ def fuse(self):
60
+ bn, l = self._modules.values()
61
+ w = bn.weight / (bn.running_var + bn.eps) ** 0.5
62
+ b = bn.bias - self.bn.running_mean * self.bn.weight / (bn.running_var + bn.eps) ** 0.5
63
+ w = l.weight * w[None, :]
64
+ if l.bias is None:
65
+ b = b @ self.l.weight.T
66
+ else:
67
+ b = (l.weight @ b[:, None]).view(-1) + self.l.bias
68
+ m = nn.Linear(w.size(1), w.size(0))
69
+ m.weight.data.copy_(w)
70
+ m.bias.data.copy_(b)
71
+ return m
72
+
73
+
74
+ class PatchMerging(nn.Module):
75
+ def __init__(self, dim, out_dim):
76
+ super().__init__()
77
+ hid_dim = int(dim * 4)
78
+ self.conv1 = Conv2d_BN(dim, hid_dim, 1, 1, 0)
79
+ self.act = nn.ReLU()
80
+ self.conv2 = Conv2d_BN(hid_dim, hid_dim, 3, 2, 1, groups=hid_dim)
81
+ self.se = SqueezeExcite(hid_dim, 0.25)
82
+ self.conv3 = Conv2d_BN(hid_dim, out_dim, 1, 1, 0)
83
+
84
+ def forward(self, x):
85
+ return self.conv3(self.se(self.act(self.conv2(self.act(self.conv1(x))))))
86
+
87
+
88
+ class Residual(nn.Module):
89
+ def __init__(self, m, drop=0.0):
90
+ super().__init__()
91
+ self.m = m
92
+ self.drop = drop
93
+
94
+ def forward(self, x):
95
+ if self.training and self.drop > 0:
96
+ return x + self.m(x) * torch.rand(
97
+ x.size(0), 1, 1, 1, device=x.device
98
+ ).ge_(self.drop).div(1 - self.drop).detach()
99
+ return x + self.m(x)
100
+
101
+ @torch.no_grad()
102
+ def fuse(self):
103
+ if isinstance(self.m, Conv2d_BN):
104
+ m = self.m.fuse()
105
+ assert m.groups == m.in_channels
106
+ identity = torch.ones(m.weight.shape[0], m.weight.shape[1], 1, 1)
107
+ identity = nn.functional.pad(identity, [1, 1, 1, 1])
108
+ m.weight += identity.to(m.weight.device)
109
+ return m
110
+ return self
111
+
112
+
113
+ class FFN(nn.Module):
114
+ def __init__(self, ed, h):
115
+ super().__init__()
116
+ self.pw1 = Conv2d_BN(ed, h)
117
+ self.act = nn.ReLU()
118
+ self.pw2 = Conv2d_BN(h, ed, bn_weight_init=0)
119
+
120
+ def forward(self, x):
121
+ return self.pw2(self.act(self.pw1(x)))
122
+
123
+
124
+ class SHSA(nn.Module):
125
+ """Single-Head Self-Attention."""
126
+
127
+ def __init__(self, dim, qk_dim, pdim):
128
+ super().__init__()
129
+ self.scale = qk_dim ** -0.5
130
+ self.qk_dim = qk_dim
131
+ self.dim = dim
132
+ self.pdim = pdim
133
+ self.pre_norm = GroupNorm(pdim)
134
+ self.qkv = Conv2d_BN(pdim, qk_dim * 2 + pdim)
135
+ self.proj = nn.Sequential(nn.ReLU(), Conv2d_BN(dim, dim, bn_weight_init=0))
136
+
137
+ def forward(self, x):
138
+ B, C, H, W = x.shape
139
+ x1, x2 = torch.split(x, [self.pdim, self.dim - self.pdim], dim=1)
140
+ x1 = self.pre_norm(x1)
141
+ qkv = self.qkv(x1)
142
+ q, k, v = qkv.split([self.qk_dim, self.qk_dim, self.pdim], dim=1)
143
+ q, k, v = q.flatten(2), k.flatten(2), v.flatten(2)
144
+ attn = (q.transpose(-2, -1) @ k) * self.scale
145
+ attn = attn.softmax(dim=-1)
146
+ x1 = (v @ attn.transpose(-2, -1)).reshape(B, self.pdim, H, W)
147
+ return self.proj(torch.cat([x1, x2], dim=1))
148
+
149
+
150
+ class BasicBlock(nn.Module):
151
+ def __init__(self, dim, qk_dim, pdim, type):
152
+ super().__init__()
153
+ if type == "s":
154
+ self.conv = Residual(Conv2d_BN(dim, dim, 3, 1, 1, groups=dim, bn_weight_init=0))
155
+ self.mixer = Residual(SHSA(dim, qk_dim, pdim))
156
+ self.ffn = Residual(FFN(dim, int(dim * 2)))
157
+ elif type == "i":
158
+ self.conv = Residual(Conv2d_BN(dim, dim, 3, 1, 1, groups=dim, bn_weight_init=0))
159
+ self.mixer = nn.Identity()
160
+ self.ffn = Residual(FFN(dim, int(dim * 2)))
161
+
162
+ def forward(self, x):
163
+ return self.ffn(self.mixer(self.conv(x)))
164
+
165
+
166
+ class SHViT(nn.Module):
167
+ def __init__(
168
+ self,
169
+ in_chans: int = 3,
170
+ num_classes: int = 1000,
171
+ embed_dim: list[int] = [128, 256, 384],
172
+ partial_dim: list[int] = [32, 64, 96],
173
+ qk_dim: list[int] = [16, 16, 16],
174
+ depth: list[int] = [1, 2, 3],
175
+ types: list[str] = ["s", "s", "s"],
176
+ down_ops: list = [["subsample", 2], ["subsample", 2], [""]],
177
+ distillation: bool = False,
178
+ ):
179
+ super().__init__()
180
+
181
+ self.patch_embed = nn.Sequential(
182
+ Conv2d_BN(in_chans, embed_dim[0] // 8, 3, 2, 1), nn.ReLU(),
183
+ Conv2d_BN(embed_dim[0] // 8, embed_dim[0] // 4, 3, 2, 1), nn.ReLU(),
184
+ Conv2d_BN(embed_dim[0] // 4, embed_dim[0] // 2, 3, 2, 1), nn.ReLU(),
185
+ Conv2d_BN(embed_dim[0] // 2, embed_dim[0], 3, 2, 1),
186
+ )
187
+
188
+ self.blocks1: list = []
189
+ self.blocks2: list = []
190
+ self.blocks3: list = []
191
+
192
+ for i, (ed, kd, pd, dpth, do, t) in enumerate(
193
+ zip(embed_dim, qk_dim, partial_dim, depth, down_ops, types)
194
+ ):
195
+ for _ in range(dpth):
196
+ getattr(self, f"blocks{i + 1}").append(BasicBlock(ed, kd, pd, t))
197
+ if do[0] == "subsample":
198
+ blk = getattr(self, f"blocks{i + 2}")
199
+ blk.append(nn.Sequential(
200
+ Residual(Conv2d_BN(embed_dim[i], embed_dim[i], 3, 1, 1, groups=embed_dim[i])),
201
+ Residual(FFN(embed_dim[i], int(embed_dim[i] * 2))),
202
+ ))
203
+ blk.append(PatchMerging(*embed_dim[i: i + 2]))
204
+ blk.append(nn.Sequential(
205
+ Residual(Conv2d_BN(embed_dim[i + 1], embed_dim[i + 1], 3, 1, 1, groups=embed_dim[i + 1])),
206
+ Residual(FFN(embed_dim[i + 1], int(embed_dim[i + 1] * 2))),
207
+ ))
208
+
209
+ self.blocks1 = nn.Sequential(*self.blocks1)
210
+ self.blocks2 = nn.Sequential(*self.blocks2)
211
+ self.blocks3 = nn.Sequential(*self.blocks3)
212
+
213
+ self.head = BN_Linear(embed_dim[-1], num_classes) if num_classes > 0 else nn.Identity()
214
+ self.distillation = distillation
215
+ if distillation:
216
+ self.head_dist = BN_Linear(embed_dim[-1], num_classes) if num_classes > 0 else nn.Identity()
217
+
218
+ def forward(self, x):
219
+ x = self.patch_embed(x)
220
+ x = self.blocks1(x)
221
+ x = self.blocks2(x)
222
+ x = self.blocks3(x)
223
+ x = nn.functional.adaptive_avg_pool2d(x, 1).flatten(1)
224
+ if self.distillation:
225
+ x = self.head(x), self.head_dist(x)
226
+ if not self.training:
227
+ x = (x[0] + x[1]) / 2
228
+ else:
229
+ x = self.head(x)
230
+ return x