Downloads · 30 days
0
Surojit-Utah/adasemseg-simclr-encoder
adasemseg-simclr-encoder is a machine learning model from Surojit-Utah. Use it for the machine learning task on the model card, and read the license before you ship it in a product. It is set up for pytorch. The card lists the license as mit.
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 initiali…
Downloads · 30 days
0
Access
Public
Updated Aug 24, 2026
Repo size
336 MB
Likes
0
Public
Click a slice to open those files.
.tar336 MB · 100%
From the Hugging Face model README
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.
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.
torchvision.models.resnet50 — no custom conv stem or channel modification[0, 255] and replicated to 3 channels (standard ImageNet-style input convention)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.
| 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.
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)
@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}
}