(self,
pretrain_img_size=1600,
patch_size=4,
in_chans=3,
embed_dim=96,
depths=[2, 2, 6, 2],
mlp_ratio=4.,
drop_rate=0.,
drop_path_rate=0.2,
norm_layer=nn.LayerNorm,
patch_norm=True,
out_indices=[0, 1, 2, 3],
frozen_stages=-1,
focal_levels=[2,2,2,2],
focal_windows=[9,9,9,9],
use_conv_embed=False,
use_postln=False,
use_postln_in_modulation=False,
scaling_modulator=False,
use_layerscale=False,
use_checkpoint=False,
)
| 362 | """ |
| 363 | |
| 364 | def __init__(self, |
| 365 | pretrain_img_size=1600, |
| 366 | patch_size=4, |
| 367 | in_chans=3, |
| 368 | embed_dim=96, |
| 369 | depths=[2, 2, 6, 2], |
| 370 | mlp_ratio=4., |
| 371 | drop_rate=0., |
| 372 | drop_path_rate=0.2, |
| 373 | norm_layer=nn.LayerNorm, |
| 374 | patch_norm=True, |
| 375 | out_indices=[0, 1, 2, 3], |
| 376 | frozen_stages=-1, |
| 377 | focal_levels=[2,2,2,2], |
| 378 | focal_windows=[9,9,9,9], |
| 379 | use_conv_embed=False, |
| 380 | use_postln=False, |
| 381 | use_postln_in_modulation=False, |
| 382 | scaling_modulator=False, |
| 383 | use_layerscale=False, |
| 384 | use_checkpoint=False, |
| 385 | ): |
| 386 | super().__init__() |
| 387 | |
| 388 | self.pretrain_img_size = pretrain_img_size |
| 389 | self.num_layers = len(depths) |
| 390 | self.embed_dim = embed_dim |
| 391 | self.patch_norm = patch_norm |
| 392 | self.out_indices = out_indices |
| 393 | self.frozen_stages = frozen_stages |
| 394 | |
| 395 | # split image into non-overlapping patches |
| 396 | self.patch_embed = PatchEmbed( |
| 397 | patch_size=patch_size, in_chans=in_chans, embed_dim=embed_dim, |
| 398 | norm_layer=norm_layer if self.patch_norm else None, |
| 399 | use_conv_embed=use_conv_embed, is_stem=True) |
| 400 | |
| 401 | self.pos_drop = nn.Dropout(p=drop_rate) |
| 402 | |
| 403 | # stochastic depth |
| 404 | dpr = [x.item() for x in torch.linspace(0, drop_path_rate, sum(depths))] # stochastic depth decay rule |
| 405 | |
| 406 | # build layers |
| 407 | self.layers = nn.ModuleList() |
| 408 | for i_layer in range(self.num_layers): |
| 409 | layer = BasicLayer( |
| 410 | dim=int(embed_dim * 2 ** i_layer), |
| 411 | depth=depths[i_layer], |
| 412 | mlp_ratio=mlp_ratio, |
| 413 | drop=drop_rate, |
| 414 | drop_path=dpr[sum(depths[:i_layer]):sum(depths[:i_layer + 1])], |
| 415 | norm_layer=norm_layer, |
| 416 | downsample=PatchEmbed if (i_layer < self.num_layers - 1) else None, |
| 417 | focal_window=focal_windows[i_layer], |
| 418 | focal_level=focal_levels[i_layer], |
| 419 | use_conv_embed=use_conv_embed, |
| 420 | use_postln=use_postln, |
| 421 | use_postln_in_modulation=use_postln_in_modulation, |
nothing calls this directly
no test coverage detected