Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump segmentation-models-pytorch from 0.3.4 to 0.4.0 in /requirements #2506

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,6 @@ updates:
# https://github.com/pytorch/pytorch_sphinx_theme/issues/175
- dependency-name: 'sphinx'
versions: '>=6'
# segmentation-models-pytorch pins timm, must update in unison
- dependency-name: 'timm'
- package-ecosystem: 'npm'
directory: '/'
schedule:
Expand Down
2 changes: 1 addition & 1 deletion experiments/ssl4eo/flops.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
for model in models:
print(f'Model: {model}')

m = timm.create_model(model, num_classes=num_classes, in_chans=in_channels)
m = timm.create_model(model, num_classes=num_classes, in_chans=in_channels) # type: ignore[attr-defined]

# Calculate memory requirements of model
mem_params = sum([p.nelement() * p.element_size() for p in m.parameters()])
Expand Down
4 changes: 2 additions & 2 deletions requirements/required.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@ pillow==11.1.0
pyproj==3.7.0
rasterio==1.4.3
rtree==1.3.0
segmentation-models-pytorch==0.3.4
segmentation-models-pytorch==0.4.0
shapely==2.0.6
timm==0.9.7
timm==1.0.13
torch==2.5.1
torchmetrics==1.6.1
torchvision==0.20.1
6 changes: 3 additions & 3 deletions tests/models/test_resnet.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ def mocked_weights(
load_state_dict_from_url: None,
) -> WeightsEnum:
path = tmp_path / f'{weights}.pth'
model = timm.create_model('resnet18', in_chans=weights.meta['in_chans'])
model = timm.create_model('resnet18', in_chans=weights.meta['in_chans']) # type: ignore[attr-defined]
torch.save(model.state_dict(), path)
try:
monkeypatch.setattr(weights.value, 'url', str(path))
Expand Down Expand Up @@ -78,7 +78,7 @@ def mocked_weights(
load_state_dict_from_url: None,
) -> WeightsEnum:
path = tmp_path / f'{weights}.pth'
model = timm.create_model('resnet50', in_chans=weights.meta['in_chans'])
model = timm.create_model('resnet50', in_chans=weights.meta['in_chans']) # type: ignore[attr-defined]
torch.save(model.state_dict(), path)
try:
monkeypatch.setattr(weights.value, 'url', str(path))
Expand Down Expand Up @@ -122,7 +122,7 @@ def mocked_weights(
load_state_dict_from_url: None,
) -> WeightsEnum:
path = tmp_path / f'{weights}.pth'
model = timm.create_model('resnet152', in_chans=weights.meta['in_chans'])
model = timm.create_model('resnet152', in_chans=weights.meta['in_chans']) # type: ignore[attr-defined]
torch.save(model.state_dict(), path)
try:
monkeypatch.setattr(weights.value, 'url', str(path))
Expand Down
2 changes: 1 addition & 1 deletion tests/models/test_vit.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ def mocked_weights(
load_state_dict_from_url: None,
) -> WeightsEnum:
path = tmp_path / f'{weights}.pth'
model = timm.create_model(
model = timm.create_model( # type: ignore[attr-defined]
weights.meta['model'], in_chans=weights.meta['in_chans']
)
torch.save(model.state_dict(), path)
Expand Down
2 changes: 1 addition & 1 deletion tests/trainers/test_byol.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ def mocked_weights(
load_state_dict_from_url: None,
) -> WeightsEnum:
path = tmp_path / f'{weights}.pth'
model = timm.create_model(
model = timm.create_model( # type: ignore[attr-defined]
weights.meta['model'], in_chans=weights.meta['in_chans']
)
torch.save(model.state_dict(), path)
Expand Down
2 changes: 1 addition & 1 deletion tests/trainers/test_classification.py
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ def mocked_weights(
load_state_dict_from_url: None,
) -> WeightsEnum:
path = tmp_path / f'{weights}.pth'
model = timm.create_model(
model = timm.create_model( # type: ignore[attr-defined]
weights.meta['model'], in_chans=weights.meta['in_chans']
)
torch.save(model.state_dict(), path)
Expand Down
2 changes: 1 addition & 1 deletion tests/trainers/test_moco.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ def mocked_weights(
load_state_dict_from_url: None,
) -> WeightsEnum:
path = tmp_path / f'{weights}.pth'
model = timm.create_model(
model = timm.create_model( # type: ignore[attr-defined]
weights.meta['model'], in_chans=weights.meta['in_chans']
)
torch.save(model.state_dict(), path)
Expand Down
4 changes: 2 additions & 2 deletions tests/trainers/test_regression.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ def mocked_weights(
load_state_dict_from_url: None,
) -> WeightsEnum:
path = tmp_path / f'{weights}.pth'
model = timm.create_model(
model = timm.create_model( # type: ignore[attr-defined]
weights.meta['model'], in_chans=weights.meta['in_chans']
)
torch.save(model.state_dict(), path)
Expand Down Expand Up @@ -273,7 +273,7 @@ def mocked_weights(
load_state_dict_from_url: None,
) -> WeightsEnum:
path = tmp_path / f'{weights}.pth'
model = timm.create_model(
model = timm.create_model( # type: ignore[attr-defined]
weights.meta['model'], in_chans=weights.meta['in_chans']
)
torch.save(model.state_dict(), path)
Expand Down
2 changes: 1 addition & 1 deletion tests/trainers/test_segmentation.py
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ def mocked_weights(
load_state_dict_from_url: None,
) -> WeightsEnum:
path = tmp_path / f'{weights}.pth'
model = timm.create_model(
model = timm.create_model( # type: ignore[attr-defined]
weights.meta['model'], in_chans=weights.meta['in_chans']
)
torch.save(model.state_dict(), path)
Expand Down
2 changes: 1 addition & 1 deletion tests/trainers/test_simclr.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ def mocked_weights(
load_state_dict_from_url: None,
) -> WeightsEnum:
path = tmp_path / f'{weights}.pth'
model = timm.create_model(
model = timm.create_model( # type: ignore[attr-defined]
weights.meta['model'], in_chans=weights.meta['in_chans']
)
torch.save(model.state_dict(), path)
Expand Down
2 changes: 1 addition & 1 deletion tests/trainers/test_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ def test_extract_backbone_unsupported_model(tmp_path: Path) -> None:


def test_get_input_layer_name_and_module() -> None:
key, module = _get_input_layer_name_and_module(timm.create_model('resnet18'))
key, module = _get_input_layer_name_and_module(timm.create_model('resnet18')) # type: ignore[attr-defined]
assert key == 'conv1'
assert isinstance(module, nn.Conv2d)
assert module.in_channels == 3
Expand Down
2 changes: 1 addition & 1 deletion torchgeo/models/dofa.py
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@ def __init__(
num_heads,
mlp_ratio,
qkv_bias=True,
norm_layer=norm_layer,
norm_layer=norm_layer, # type: ignore[arg-type]
)
for i in range(depth)
]
Expand Down
6 changes: 3 additions & 3 deletions torchgeo/models/resnet.py
Original file line number Diff line number Diff line change
Expand Up @@ -768,7 +768,7 @@ def resnet18(
if weights:
kwargs['in_chans'] = weights.meta['in_chans']

model: ResNet = timm.create_model('resnet18', *args, **kwargs)
model: ResNet = timm.create_model('resnet18', *args, **kwargs) # type: ignore[attr-defined]

if weights:
missing_keys, unexpected_keys = model.load_state_dict(
Expand Down Expand Up @@ -803,7 +803,7 @@ def resnet50(
if weights:
kwargs['in_chans'] = weights.meta['in_chans']

model: ResNet = timm.create_model('resnet50', *args, **kwargs)
model: ResNet = timm.create_model('resnet50', *args, **kwargs) # type: ignore[attr-defined]

if weights:
missing_keys, unexpected_keys = model.load_state_dict(
Expand Down Expand Up @@ -837,7 +837,7 @@ def resnet152(
if weights:
kwargs['in_chans'] = weights.meta['in_chans']

model: ResNet = timm.create_model('resnet152', *args, **kwargs)
model: ResNet = timm.create_model('resnet152', *args, **kwargs) # type: ignore[attr-defined]

if weights:
missing_keys, unexpected_keys = model.load_state_dict(
Expand Down
14 changes: 9 additions & 5 deletions torchgeo/models/scale_mae.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ def get_1d_sincos_pos_embed_from_grid_torch(embed_dim: int, pos: Tensor) -> Tens
return emb


class ScaleMAE(VisionTransformer): # type: ignore[misc]
class ScaleMAE(VisionTransformer):
"""Custom Vision Transformer for Scale-MAE with GSD positional embeddings.

This is a ViT encoder only model of the Scale-MAE architecture with GSD positional embeddings.
Expand All @@ -117,7 +117,8 @@ def __init__(self, res: float = 1.0, *args: Any, **kwargs: Any) -> None:
self.res = res

# Scale MAE uses resolution specific positional embeddings
self.pos_embed.requires_grad = False
if self.pos_embed is not None:
self.pos_embed.requires_grad = False

def _pos_embed(self, x: Tensor) -> Tensor:
"""Apply GSD positional embeddings to the input tensor."""
Expand All @@ -133,8 +134,9 @@ def _pos_embed(self, x: Tensor) -> Tensor:
.to(x.dtype)
.to(x.device)
)
cls_tokens = self.cls_token.expand(x.shape[0], -1, -1)
x = torch.cat((cls_tokens, x), dim=1)
if self.cls_token is not None:
cls_tokens = self.cls_token.expand(x.shape[0], -1, -1)
x = torch.cat((cls_tokens, x), dim=1)
x = x + pos_embed
x = self.pos_drop(x)
return x
Expand All @@ -155,7 +157,9 @@ def interpolate_pos_embed(
pos_embed_checkpoint = state_dict['pos_embed']
embedding_size = pos_embed_checkpoint.shape[-1]
num_patches = model.patch_embed.num_patches
num_extra_tokens = model.pos_embed.shape[-2] - num_patches
num_extra_tokens = 0
if model.pos_embed is not None:
num_extra_tokens = model.pos_embed.shape[-2] - num_patches
# height (== width) for the checkpoint position embedding
orig_size = int((pos_embed_checkpoint.shape[-2] - num_extra_tokens) ** 0.5)
# height (== width) for the new position embedding
Expand Down
2 changes: 1 addition & 1 deletion torchgeo/models/vit.py
Original file line number Diff line number Diff line change
Expand Up @@ -243,7 +243,7 @@ def vit_small_patch16_224(
if weights:
kwargs['in_chans'] = weights.meta['in_chans']

model: VisionTransformer = timm.create_model(
model: VisionTransformer = timm.create_model( # type: ignore[attr-defined]
'vit_small_patch16_224', *args, **kwargs
)

Expand Down
2 changes: 1 addition & 1 deletion torchgeo/trainers/byol.py
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,7 @@ def configure_models(self) -> None:
in_channels: int = self.hparams['in_channels']

# Create backbone
backbone = timm.create_model(
backbone = timm.create_model( # type: ignore[attr-defined]
self.hparams['model'], in_chans=in_channels, pretrained=weights is True
)

Expand Down
2 changes: 1 addition & 1 deletion torchgeo/trainers/classification.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ def configure_models(self) -> None:
weights = self.weights

# Create model
self.model = timm.create_model(
self.model = timm.create_model( # type: ignore[attr-defined]
self.hparams['model'],
num_classes=self.hparams['num_classes'],
in_chans=self.hparams['in_channels'],
Expand Down
4 changes: 2 additions & 2 deletions torchgeo/trainers/moco.py
Original file line number Diff line number Diff line change
Expand Up @@ -238,10 +238,10 @@ def configure_models(self) -> None:
output_dim: int = self.hparams['output_dim']

# Create backbone
self.backbone = timm.create_model(
self.backbone = timm.create_model( # type: ignore[attr-defined]
model, in_chans=in_channels, num_classes=0, pretrained=weights is True
)
self.backbone_momentum = timm.create_model(
self.backbone_momentum = timm.create_model( # type: ignore[attr-defined]
model, in_chans=in_channels, num_classes=0, pretrained=weights is True
)
deactivate_requires_grad(self.backbone_momentum)
Expand Down
2 changes: 1 addition & 1 deletion torchgeo/trainers/regression.py
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ def configure_models(self) -> None:
"""Initialize the model."""
# Create model
weights = self.weights
self.model = timm.create_model(
self.model = timm.create_model( # type: ignore[attr-defined]
self.hparams['model'],
num_classes=self.hparams['num_outputs'],
in_chans=self.hparams['in_channels'],
Expand Down
2 changes: 1 addition & 1 deletion torchgeo/trainers/simclr.py
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ def configure_models(self) -> None:
weights = self.weights

# Create backbone
self.backbone = timm.create_model(
self.backbone = timm.create_model( # type: ignore[attr-defined]
self.hparams['model'],
in_chans=self.hparams['in_channels'],
num_classes=0,
Expand Down
Loading