(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_pre_norms=[False, False, False, False],
use_conv_embed=False,
use_postln=False,
use_postln_in_modulation=False,
scaling_modulator=False,
use_layerscale=False,
use_checkpoint=False,
)
| 456 | """ |
| 457 | |
| 458 | def __init__(self, |
| 459 | pretrain_img_size=1600, |
| 460 | patch_size=4, |
| 461 | in_chans=3, |
| 462 | embed_dim=96, |
| 463 | depths=[2, 2, 6, 2], |
| 464 | mlp_ratio=4., |
| 465 | drop_rate=0., |
| 466 | drop_path_rate=0.2, |
| 467 | norm_layer=nn.LayerNorm, |
| 468 | patch_norm=True, |
| 469 | out_indices=[0, 1, 2, 3], |
| 470 | frozen_stages=-1, |
| 471 | focal_levels=[2,2,2,2], |
| 472 | focal_windows=[9,9,9,9], |
| 473 | use_pre_norms=[False, False, False, False], |
| 474 | use_conv_embed=False, |
| 475 | use_postln=False, |
| 476 | use_postln_in_modulation=False, |
| 477 | scaling_modulator=False, |
| 478 | use_layerscale=False, |
| 479 | use_checkpoint=False, |
| 480 | ): |
| 481 | super().__init__() |
| 482 | |
| 483 | self.pretrain_img_size = pretrain_img_size |
| 484 | self.num_layers = len(depths) |
| 485 | self.embed_dim = embed_dim |
| 486 | self.patch_norm = patch_norm |
| 487 | self.out_indices = out_indices |
| 488 | self.frozen_stages = frozen_stages |
| 489 | |
| 490 | # split image into non-overlapping patches |
| 491 | self.patch_embed = PatchEmbed( |
| 492 | patch_size=patch_size, in_chans=in_chans, embed_dim=embed_dim, |
| 493 | norm_layer=norm_layer if self.patch_norm else None, |
| 494 | use_conv_embed=use_conv_embed, is_stem=True, use_pre_norm=False) |
| 495 | |
| 496 | self.pos_drop = nn.Dropout(p=drop_rate) |
| 497 | |
| 498 | # stochastic depth |
| 499 | dpr = [x.item() for x in torch.linspace(0, drop_path_rate, sum(depths))] # stochastic depth decay rule |
| 500 | |
| 501 | # build layers |
| 502 | self.layers = nn.ModuleList() |
| 503 | for i_layer in range(self.num_layers): |
| 504 | layer = BasicLayer( |
| 505 | dim=int(embed_dim * 2 ** i_layer), |
| 506 | depth=depths[i_layer], |
| 507 | mlp_ratio=mlp_ratio, |
| 508 | drop=drop_rate, |
| 509 | drop_path=dpr[sum(depths[:i_layer]):sum(depths[:i_layer + 1])], |
| 510 | norm_layer=norm_layer, |
| 511 | downsample=PatchEmbed if (i_layer < self.num_layers - 1) else None, |
| 512 | focal_window=focal_windows[i_layer], |
| 513 | focal_level=focal_levels[i_layer], |
| 514 | use_pre_norm=use_pre_norms[i_layer], |
| 515 | use_conv_embed=use_conv_embed, |
nothing calls this directly
no test coverage detected