AdaSemSeg SimCLR Encoder β€” Seismic-Domain Pretrained ResNet-50

A ResNet-50 image encoder pretrained with SimCLR contrastive self-supervised learning on unlabeled 2D slices from three public seismic facies datasets (F3, Parihaka, Penobscot). It is the shared image-encoder initialization used by AdaSemSeg, ProtoSemSeg, and Baseline-2 in:

Saha, S. and Whitaker, R. AdaSemSeg: An Adaptive Few-shot Semantic Segmentation of Seismic Facies. IEEE Transactions on Geoscience and Remote Sensing, 2025. arXiv:2501.16760

Code: github.com/Surojit-Utah/AdaSemSeg β€” full pretraining details, augmentations, and hyperparameters (verified against the paper's Appendix B-A) are documented in pretraining/simclr/README.md.

Why use this

Fully annotated seismic volumes are expensive to produce, so there is no seismic equivalent of ImageNet to pretrain on with labels. This encoder learns seismic-domain representations from unlabeled data instead, and is intended as a drop-in initialization for any ResNet-based encoder-decoder segmentation architecture (U-Net, DeepLab, FPN, segmentation_models_pytorch, etc.) β€” not only for AdaSemSeg's own DGPNet.

Architecture

  • Backbone: unmodified torchvision.models.resnet50 β€” no custom conv stem or channel modification
  • Input: single-channel seismic amplitude, min-max normalized to [0, 255] and replicated to 3 channels (standard ImageNet-style input convention)
  • Resolution-agnostic (fully convolutional up to global average pooling); pretrained at 256Γ—256 patches

Training data

35,648 patches extracted from the public F3 (Netherlands), Parihaka (New Zealand), and Penobscot (Canada) seismic facies datasets, along both inline and crossline directions. All data is publicly available β€” see the main repo's dataset section for Zenodo links.

Training details

Hyperparameter Value
Batch size 32
Optimizer Adam
Learning rate 3e-4
Weight decay 1e-4
Temperature (Ο„) 0.07
Epochs 10

Augmentations (one sampled per view): RandomRotate (Β±20Β°), RandomHorizontalFlip, GaussianBlur (Οƒ ∈ [0.1, 2.0]), GaussNoise (variance ∈ [1e-4, 5e-2]), RandomResizedCrop, Brightness ([0.5, 1.5]), Contrast ([0.0, 2.0]).

Reaches 93.75% top-1 / 98.44% top-5 accuracy on the contrastive (instance-discrimination) pretraining task.

Usage

The checkpoint's state_dict is the full SimCLR wrapper (backbone + discarded projection head), so keys carry a backbone. prefix. Load only the encoder into a plain torchvision ResNet:

import torch, torchvision
from huggingface_hub import hf_hub_download

checkpoint_path = hf_hub_download(repo_id="Surojit-Utah/adasemseg-simclr-encoder", filename="simclr_resnet50_epoch10.pth.tar")
checkpoint = torch.load(checkpoint_path, map_location="cpu")
state_dict = checkpoint["state_dict"]

# Strip the SimCLR wrapper's "backbone." prefix and drop the projection head (backbone.fc.*)
encoder_state_dict = {
    k.replace("backbone.", ""): v
    for k, v in state_dict.items()
    if k.startswith("backbone.") and not k.startswith("backbone.fc")
}

encoder = torchvision.models.resnet50(weights=None)
encoder.load_state_dict(encoder_state_dict, strict=False)

Citation

@article{saha2025adasemseg,
  title={AdaSemSeg: An Adaptive Few-shot Semantic Segmentation of Seismic Facies},
  author={Saha, Surojit and Whitaker, Ross},
  journal={IEEE Transactions on Geoscience and Remote Sensing},
  year={2025},
  doi={10.1109/TGRS.2025.3595010}
}
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Space using Surojit-Utah/adasemseg-simclr-encoder 1

Papers for Surojit-Utah/adasemseg-simclr-encoder