| | --- |
| | license: mit |
| | language: |
| | - en |
| | tags: |
| | - semantic-segmentation |
| | - pytorch |
| | - unet |
| | - resnet34 |
| | - materials-science |
| | - microscopy |
| | - sem |
| | - computer-vision |
| | - segmentation-models-pytorch |
| | datasets: |
| | - safdar/sem-ni-wc-metal-matrix-composites |
| | metrics: |
| | - mean_iou |
| | - dice |
| | library_name: segmentation_models_pytorch |
| | pipeline_tag: image-segmentation |
| | --- |
| | |
| | # SEM Microstructure Semantic Segmentation |
| |
|
| | UNet with a pretrained ResNet-34 encoder for pixel-wise segmentation of Scanning Electron Microscopy (SEM) images of additively manufactured Ni-WC metal matrix composites. Trained to identify five microstructural phases at pixel level. |
| |
|
| | ## Model Details |
| |
|
| | | Property | Detail | |
| | |------------------|---------------------------------------------| |
| | | Architecture | UNet + ResNet-34 encoder | |
| | | Encoder weights | ImageNet pretrained | |
| | | Input channels | 1 (grayscale SEM image) | |
| | | Output classes | 5 (pixel-wise segmentation) | |
| | | Framework | PyTorch + segmentation_models_pytorch | |
| | | Training device | Apple MPS (M-series) | |
| |
|
| | ## Classes |
| |
|
| | | ID | Phase | |
| | |----|----------------| |
| | | 0 | Matrix | |
| | | 1 | Carbide | |
| | | 2 | Void | |
| | | 3 | Reprecipitate | |
| | | 4 | Dilution Zone | |
| |
|
| | ## Test Performance |
| |
|
| | Evaluated on 54 held-out test images, scored at image level to avoid batch-size bias. |
| |
|
| | | Metric | Mean | Std | Min | Max | |
| | |--------|-------|-------|-------|-------| |
| | | mIoU | 0.872 | 0.088 | 0.723 | 0.958 | |
| | | mDice | 0.912 | 0.079 | 0.759 | 0.978 | |
| | | mBF1 | 0.728 | 0.027 | 0.678 | 0.773 | |
| |
|
| | ### Per-Class Performance |
| |
|
| | | Class | IoU | Dice | |
| | |---------------|-------|-------| |
| | | Matrix | 0.939 | 0.969 | |
| | | Carbide | 0.753 | 0.859 | |
| | | Void | 0.976 | 0.988 | |
| | | Reprecipitate | 0.891 | 0.942 | |
| | | Dilution Zone | 0.881 | 0.937 | |
| |
|
| | ## Files |
| |
|
| | | File | Description | |
| | |----------------------------|------------------------------------| |
| | | `best_model.pth` | Best pretrained encoder checkpoint | |
| | | `ScratchUNet_best_unet.pth`| Best scratch-built UNet checkpoint | |
| |
|
| | ## How to Use |
| |
|
| | ### Install dependencies |
| | ```bash |
| | pip install torch segmentation-models-pytorch huggingface_hub |
| | ``` |
| |
|
| | ### Load and run inference |
| | ```python |
| | import torch |
| | from huggingface_hub import hf_hub_download |
| | import segmentation_models_pytorch as smp |
| | |
| | # Download checkpoint |
| | ckpt_path = hf_hub_download( |
| | repo_id="imranlabs/sem-microstructure-segmentation", |
| | filename="best_model.pth" |
| | ) |
| | |
| | # Rebuild architecture |
| | model = smp.Unet( |
| | encoder_name = "resnet34", |
| | encoder_weights = None, # weights loaded from checkpoint |
| | in_channels = 1, |
| | classes = 5, |
| | activation = None, |
| | ) |
| | |
| | # Load weights |
| | ckpt = torch.load(ckpt_path, map_location="cpu") |
| | model.load_state_dict(ckpt["model_state"]) |
| | model.eval() |
| | |
| | # Inference — input: (1, 1, H, W) float32 tensor normalised to [0, 1] |
| | with torch.no_grad(): |
| | logits = model(image_tensor) # (1, 5, H, W) |
| | preds = torch.argmax(logits, dim=1) # (1, H, W) class labels |
| | ``` |
| |
|
| | ## Training Details |
| |
|
| | - **Loss:** 0.6 × Weighted CrossEntropy + 0.4 × DiceLoss |
| | - **Optimizer:** AdamW (weight decay 1e-5) |
| | - **Scheduler:** ReduceLROnPlateau |
| | - **Strategy:** Encoder frozen for first 4 epochs, then full fine-tuning |
| | - **Early stopping:** Monitored validation mIoU |
| | - **Best checkpoint:** Epoch 12, validation mIoU = 0.876 |
| |
|
| | ## Dataset |
| |
|
| | Safdar, M. (2025). *Scanning Electron Microscopy (SEM) Dataset of Additively Manufactured Ni-WC Metal Matrix Composites for Semantic Segmentation* (Version 1). Zenodo. |
| | https://doi.org/10.5281/zenodo.17315241 |
| |
|
| | ## Links |
| |
|
| | - GitHub: [sem-microstructure-segmentation](https://github.com/imranlabs/sem-microstructure-segmentation) |
| |
|
| | ## Author |
| |
|
| | **Imran Khan** — Physics PhD · SEM Metrology Engineer · Computer Vision / AI |
| |
|