(
model,
features=[96, 192, 384, 768],
size=[384, 384],
hooks=[2, 5, 8, 11],
vit_features=768,
use_readout="ignore",
start_index=1,
)
| 181 | |
| 182 | |
| 183 | def _make_vit_b16_backbone( |
| 184 | model, |
| 185 | features=[96, 192, 384, 768], |
| 186 | size=[384, 384], |
| 187 | hooks=[2, 5, 8, 11], |
| 188 | vit_features=768, |
| 189 | use_readout="ignore", |
| 190 | start_index=1, |
| 191 | ): |
| 192 | pretrained = nn.Module() |
| 193 | |
| 194 | pretrained.model = model |
| 195 | pretrained.model.blocks[hooks[0]].register_forward_hook(get_activation("1")) |
| 196 | pretrained.model.blocks[hooks[1]].register_forward_hook(get_activation("2")) |
| 197 | pretrained.model.blocks[hooks[2]].register_forward_hook(get_activation("3")) |
| 198 | pretrained.model.blocks[hooks[3]].register_forward_hook(get_activation("4")) |
| 199 | |
| 200 | pretrained.activations = activations |
| 201 | |
| 202 | readout_oper = get_readout_oper(vit_features, features, use_readout, start_index) |
| 203 | |
| 204 | # 32, 48, 136, 384 |
| 205 | pretrained.act_postprocess1 = nn.Sequential( |
| 206 | readout_oper[0], |
| 207 | Transpose(1, 2), |
| 208 | nn.Unflatten(2, torch.Size([size[0] // 16, size[1] // 16])), |
| 209 | nn.Conv2d( |
| 210 | in_channels=vit_features, |
| 211 | out_channels=features[0], |
| 212 | kernel_size=1, |
| 213 | stride=1, |
| 214 | padding=0, |
| 215 | ), |
| 216 | nn.ConvTranspose2d( |
| 217 | in_channels=features[0], |
| 218 | out_channels=features[0], |
| 219 | kernel_size=4, |
| 220 | stride=4, |
| 221 | padding=0, |
| 222 | bias=True, |
| 223 | dilation=1, |
| 224 | groups=1, |
| 225 | ), |
| 226 | ) |
| 227 | |
| 228 | pretrained.act_postprocess2 = nn.Sequential( |
| 229 | readout_oper[1], |
| 230 | Transpose(1, 2), |
| 231 | nn.Unflatten(2, torch.Size([size[0] // 16, size[1] // 16])), |
| 232 | nn.Conv2d( |
| 233 | in_channels=vit_features, |
| 234 | out_channels=features[1], |
| 235 | kernel_size=1, |
| 236 | stride=1, |
| 237 | padding=0, |
| 238 | ), |
| 239 | nn.ConvTranspose2d( |
| 240 | in_channels=features[1], |
no test coverage detected