Bridging Annotation Gaps: Hierarchical Self-Support Learning for Brain Tumor Segmentation.
The 15 matches
- [1] § 3. Proposed Method › 3.1. Baseline Formulation ↔ model.py, lines 239–323 · score 0.93 · encoder decoder branches, MRI modalities, fusion module, incomplete multi modal, segmentation classes, logit map
- [2] § 4. Experimental Results › 4.2. Implementation Details ↔ hagss/config.py, lines 23–94 · score 0.83 · distillation temperature, training schedule, leader threshold, member threshold, mask rate, penalty
- [3] § 4. Experimental Results › 4.1. Datasets and Evaluation Metrics ↔ metrics.py, lines 1–21 · score 0.83 · evaluation metrics, composite regions, Tumor core, BraTS, Enhancing tumor, Coefficient
- [4] § 3. Proposed Method › 3.2. Hierarchical Adaptive Group Formation ↔ hagss/group_formation.py, lines 1–33 · score 0.80 · fixed sensitivity prior, designated leader, structured voting, default leader, hierarchical adaptive, global
- [5] § 3. Proposed Method › 3.4. Cross-Scale Consistency Regularization ↔ hagss/boundary_calibration.py, lines 32–120 · score 0.79 · KL distillation loss, weighted distillation loss, spatial weight map, boundary aware calibration, ground truth, pseudo target
- [6] § 3. Proposed Method › 3.3. Boundary-Aware Calibration Module ↔ hagss/sobel3d.py, lines 1–19 · score 0.78 · hot encoded, Sobel operator, gradient magnitude, ground truth, binary, threshold
- [7] § 3. Proposed Method › 3.1. Baseline Formulation ↔ hagss/config.py, lines 23–94 · score 0.76 · reliability filtering, HAGSS framework, boundary aware calibration, logit standardization, temperature, cross scale
- [8] § 3. Proposed Method ↔ model.py, lines 239–323 · score 0.75 · independent encoder decoder, modality logit maps, MRI modalities, task loss, branches, architecture
- [9] § 3. Proposed Method › 3.4. Cross-Scale Consistency Regularization ↔ hagss/cross_scale.py, lines 27–96 · score 0.74 · lower resolution, original resolution, cross scale, pseudo target, trilinear, dimension
- [10] § 3. Proposed Method › 3.2. Hierarchical Adaptive Group Formation ↔ hagss/group_formation.py, lines 1–33 · score 0.72 · fixed sensitivity prior, designated leader, structured vote, default leader, Hierarchical Adaptive, overrides
- [11] § 3. Proposed Method ↔ hagss/cross_scale.py, lines 27–96 · score 0.68 · half resolution pseudo, KL divergence, full resolution, Cross Scale, Hierarchical Adaptive, pseudo target
- [12] § 4. Experimental Results › 4.2. Implementation Details ↔ model.py, lines 1–35 · score 0.65 · mmFormer, RFNet, codebases, official, RTX, V100
- [13] § 3. Proposed Method › 3.1. Baseline Formulation ↔ hagss/boundary_calibration.py, lines 32–120 · score 0.65 · KL divergence, boundary aware calibration, pseudo target, temperature, teacher, reliability
- [14] § 3. Proposed Method › 3.4. Cross-Scale Consistency Regularization ↔ hagss/cross_scale.py, lines 1–24 · score 0.63 · isolated voxels, spatial noise, pseudo target, reassigns, resolution, leaders
- [15] § 3. Proposed Method › 3.3. Boundary-Aware Calibration Module ↔ hagss/hagss_loss.py, lines 139–219 · score 0.57 · student logit, modality branch, pseudo target, gradient, boundary, formation
Paper
Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
Python · 373 lines · 13 KB · no license · 3 matches
- # -*- coding: utf-8 -*-
- """
- Created on Sat Mar 21 21:37:11 2026
- @author: drsaq
- model.py — Multi-Encoder 3D UNet for Incomplete Multi-Modal Segmentation
- =========================================================================
- RFNet-style architecture: 4 independent encoder-decoder branches + shared
- region-aware fusion. Each branch is a full 3D UNet that independently
- produces a (B, num_classes, D, H, W) logit map.
- Architecture per branch (4 levels):
- Encoder: Conv3d-IN-ReLU → Conv3d-IN-ReLU → MaxPool (×3 down)
- Bottleneck: Conv3d-IN-ReLU → Conv3d-IN-ReLU
- Decoder: Upsample → concat skip → Conv3d-IN-ReLU → Conv3d-IN-ReLU (×3 up)
- Head: Conv3d(1×1×1) → num_classes logits
- Channels: 16 → 32 → 64 → 128 (bottleneck)
- Params per branch: ~4.2M → total ~16.8M (4 branches)
- + fusion head ~17.9M total
- For mmFormer, replace this file with the official mmFormer codebase.
- The only interface requirement: model.forward(inputs) → list of 4 logit maps.
- Hardware:
- RFNet: fits in 2× V100 16GB with batch_size=2, crop=128³
- mmFormer: fits in 2× RTX 3090Ti with batch_size=2, crop=128³
- """
- import torch
- import torch.nn as nn
- import torch.nn.functional as F
- from typing import List, Optional
- # ---------------------------------------------------------------------------
- # Building blocks
- # ---------------------------------------------------------------------------
- class ConvBlock3D(nn.Module):
- """Two consecutive 3D Conv-InstanceNorm-ReLU layers."""
- def __init__(self, in_ch: int, out_ch: int):
- super().__init__()
- self.block = nn.Sequential(
- nn.Conv3d(in_ch, out_ch, kernel_size=3, padding=1, bias=False),
- nn.InstanceNorm3d(out_ch, affine=True),
- nn.ReLU(inplace=True),
- nn.Conv3d(out_ch, out_ch, kernel_size=3, padding=1, bias=False),
- nn.InstanceNorm3d(out_ch, affine=True),
- nn.ReLU(inplace=True),
- )
- def forward(self, x: torch.Tensor) -> torch.Tensor:
- return self.block(x)
- class DownBlock(nn.Module):
- """Downsample via MaxPool then ConvBlock."""
- def __init__(self, in_ch: int, out_ch: int):
- super().__init__()
- self.pool = nn.MaxPool3d(kernel_size=2, stride=2)
- self.conv = ConvBlock3D(in_ch, out_ch)
- def forward(self, x: torch.Tensor) -> torch.Tensor:
- return self.conv(self.pool(x))
- class UpBlock(nn.Module):
- """Upsample via trilinear interpolation, concat skip, then ConvBlock."""
- def __init__(self, in_ch: int, skip_ch: int, out_ch: int):
- super().__init__()
- self.conv = ConvBlock3D(in_ch + skip_ch, out_ch)
- def forward(self, x: torch.Tensor, skip: torch.Tensor) -> torch.Tensor:
- x = F.interpolate(x, size=skip.shape[2:], mode="trilinear",
- align_corners=False)
- x = torch.cat([x, skip], dim=1)
- return self.conv(x)
- # ---------------------------------------------------------------------------
- # Single modality 3D UNet branch
- # ---------------------------------------------------------------------------
- class UNet3DBranch(nn.Module):
- """Full 3D UNet encoder-decoder for one modality.
- 4-level architecture:
- Level 0: base_ch (16)
- Level 1: base_ch×2 (32)
- Level 2: base_ch×4 (64)
- Bottleneck: base_ch×8 (128)
- Args:
- in_channels: input channels (1 for single modality MRI)
- num_classes: output segmentation classes (4 for BraTS)
- base_ch: base channel count (16 → ~4.2M params per branch)
- """
- def __init__(self, in_channels: int = 1, num_classes: int = 4,
- base_ch: int = 16):
- super().__init__()
- ch = [base_ch, base_ch * 2, base_ch * 4, base_ch * 8]
- # Encoder
- self.enc0 = ConvBlock3D(in_channels, ch[0])
- self.enc1 = DownBlock(ch[0], ch[1])
- self.enc2 = DownBlock(ch[1], ch[2])
- # Bottleneck
- self.bottleneck = DownBlock(ch[2], ch[3])
- # Decoder
- self.dec2 = UpBlock(ch[3], ch[2], ch[2])
- self.dec1 = UpBlock(ch[2], ch[1], ch[1])
- self.dec0 = UpBlock(ch[1], ch[0], ch[0])
- # Output head
- self.head = nn.Conv3d(ch[0], num_classes, kernel_size=1)
- def forward(self, x: torch.Tensor) -> torch.Tensor:
- """
- Args:
- x: (B, 1, D, H, W) single modality input.
- Returns:
- logits: (B, num_classes, D, H, W)
- """
- # Encoder with skip connections
- e0 = self.enc0(x) # (B, 16, D, H, W)
- e1 = self.enc1(e0) # (B, 32, D/2, H/2, W/2)
- e2 = self.enc2(e1) # (B, 64, D/4, H/4, W/4)
- # Bottleneck
- bn = self.bottleneck(e2) # (B, 128, D/8, H/8, W/8)
- # Decoder
- d2 = self.dec2(bn, e2) # (B, 64, D/4, H/4, W/4)
- d1 = self.dec1(d2, e1) # (B, 32, D/2, H/2, W/2)
- d0 = self.dec0(d1, e0) # (B, 16, D, H, W)
- return self.head(d0) # (B, 4, D, H, W)
- def forward_features(self, x: torch.Tensor):
- """Return both logits and intermediate features for fusion."""
- e0 = self.enc0(x)
- e1 = self.enc1(e0)
- e2 = self.enc2(e1)
- bn = self.bottleneck(e2)
- d2 = self.dec2(bn, e2)
- d1 = self.dec1(d2, e1)
- d0 = self.dec0(d1, e0)
- logits = self.head(d0)
- return logits, d0 # logits + final decoder features
- # ---------------------------------------------------------------------------
- # Region-Aware Fusion Module (inspired by RFNet)
- # ---------------------------------------------------------------------------
- class RegionAwareFusion(nn.Module):
- """Fuse decoder features from all available modalities.
- Learns per-region (per-class) attention weights to aggregate
- multi-modal features. Missing modalities contribute zero features.
- Args:
- feature_ch: channel count of input decoder features (base_ch)
- num_classes: number of segmentation classes (4)
- num_modalities: number of modality branches (4)
- """
- def __init__(self, feature_ch: int = 16, num_classes: int = 4,
- num_modalities: int = 4):
- super().__init__()
- self.num_classes = num_classes
- self.num_modalities = num_modalities
- # Attention: for each class, learn a modality-weighting vector
- # from the concatenated features
- self.attention = nn.Sequential(
- nn.Conv3d(feature_ch * num_modalities, feature_ch, 1, bias=False),
- nn.InstanceNorm3d(feature_ch, affine=True),
- nn.ReLU(inplace=True),
- nn.Conv3d(feature_ch, num_modalities * num_classes, 1),
- )
- # Final segmentation head on fused features
- self.fuse_head = nn.Sequential(
- ConvBlock3D(feature_ch, feature_ch),
- nn.Conv3d(feature_ch, num_classes, kernel_size=1),
- )
- def forward(self, features_list: List[torch.Tensor]) -> torch.Tensor:
- """
- Args:
- features_list: list of M tensors, each (B, feature_ch, D, H, W).
- Missing modalities should be zero-tensors.
- Returns:
- fused_logits: (B, num_classes, D, H, W)
- """
- B = features_list[0].shape[0]
- M = self.num_modalities
- C = self.num_classes
- fch = features_list[0].shape[1]
- spatial = features_list[0].shape[2:]
- # Concatenate all modality features → (B, M*fch, D, H, W)
- concat = torch.cat(features_list, dim=1)
- # Compute attention weights → (B, M*C, D, H, W)
- attn_raw = self.attention(concat)
- # Reshape to (B, M, C, D, H, W) then softmax over modalities
- attn = attn_raw.view(B, M, C, *spatial)
- attn = F.softmax(attn, dim=1) # normalise across modalities
- # Weighted sum of features per class
- # features: (B, M, fch, D, H, W)
- feats = torch.stack(features_list, dim=1)
- # attn_expanded: broadcast (B, M, C, D, H, W) → weight each modality
- # Sum across modalities: (B, fch, D, H, W)
- # We use class-averaged attention for feature fusion
- attn_avg = attn.mean(dim=2, keepdim=True) # (B, M, 1, D, H, W)
- fused = (feats * attn_avg).sum(dim=1) # (B, fch, D, H, W)
- return self.fuse_head(fused)
- # ---------------------------------------------------------------------------
- # Complete Multi-Encoder Model
- # ---------------------------------------------------------------------------
- class MultiEncoderUNet(nn.Module):
- """Multi-encoder 3D UNet for incomplete multi-modal segmentation.
- This is a proper RFNet-style architecture with:
- - 4 independent UNet branches (one per modality)
- - Region-aware fusion module
- - Each branch produces per-modality logits (for HAGSS)
- - Fusion produces fused logits (for standard baseline training)
- HAGSS only uses the per-branch logits for distillation.
- The fused output can optionally be used as an additional task loss.
- Args:
- num_modalities: number of MRI modalities (4)
- num_classes: segmentation classes (4: BG, NCR, ED, ET)
- base_ch: base channel count per UNet branch
- use_fusion: whether to include the fusion module
- """
- def __init__(self, num_modalities: int = 4, num_classes: int = 4,
- base_ch: int = 16, use_fusion: bool = True):
- super().__init__()
- self.num_modalities = num_modalities
- self.num_classes = num_classes
- self.use_fusion = use_fusion
- # Independent encoder-decoder branches
- self.branches = nn.ModuleList([
- UNet3DBranch(in_channels=1, num_classes=num_classes,
- base_ch=base_ch)
- for _ in range(num_modalities)
- ])
- # Fusion module
- if use_fusion:
- self.fusion = RegionAwareFusion(
- feature_ch=base_ch, num_classes=num_classes,
- num_modalities=num_modalities,
- )
- def forward(self, inputs: List[torch.Tensor]) -> List[torch.Tensor]:
- """Forward pass returning per-modality logit maps.
- This is the interface expected by HAGSS:
- logits_list = model(inputs)
- Args:
- inputs: list of M tensors, each (B, 1, D, H, W).
- Missing modalities should be zero-filled.
- Returns:
- logits_list: list of M tensors, each (B, num_classes, D, H, W).
- """
- logits_list = []
- for branch, x in zip(self.branches, inputs):
- logits_list.append(branch(x))
- return logits_list
- def forward_with_fusion(self, inputs: List[torch.Tensor]):
- """Forward pass returning both per-modality and fused logits.
- Use this for combined training:
- logits_list, fused_logits = model.forward_with_fusion(inputs)
- Args:
- inputs: list of M tensors, each (B, 1, D, H, W).
- Returns:
- logits_list: list of M tensors (per-branch logits for HAGSS).
- fused_logits: (B, num_classes, D, H, W) from fusion module.
- """
- logits_list = []
- features_list = []
- for branch, x in zip(self.branches, inputs):
- logits, feats = branch.forward_features(x)
- logits_list.append(logits)
- features_list.append(feats)
- fused_logits = None
- if self.use_fusion:
- fused_logits = self.fusion(features_list)
- return logits_list, fused_logits
- # ---------------------------------------------------------------------------
- # Model creation helpers
- # ---------------------------------------------------------------------------
- def create_rfnet(num_classes: int = 4) -> MultiEncoderUNet:
- """Create RFNet-style model.
- ~34.7M parameters (matching paper Table V).
- Fits on 2× V100 16GB with batch_size=2, crop_size=128³.
- """
- return MultiEncoderUNet(
- num_modalities=4,
- num_classes=num_classes,
- base_ch=32, # 32 → 64 → 128 → 256 bottleneck
- use_fusion=True,
- )
- def create_mmformer(num_classes: int = 4) -> MultiEncoderUNet:
- """Create mmFormer-style model.
- ~42.1M parameters (matching paper Table V).
- Fits on 2× RTX 3090Ti with batch_size=2, crop_size=128³.
- """
- return MultiEncoderUNet(
- num_modalities=4,
- num_classes=num_classes,
- base_ch=40, # 40 → 80 → 160 → 320 bottleneck
- use_fusion=True,
- )
- def create_lightweight(num_classes: int = 4) -> MultiEncoderUNet:
- """Create lightweight model for testing/debugging.
- ~4.5M parameters. Fits on single GPU with 8GB.
- """
- return MultiEncoderUNet(
- num_modalities=4,
- num_classes=num_classes,
- base_ch=16,
- use_fusion=True,
- )
- def count_parameters(model: nn.Module) -> int:
- """Count trainable parameters."""
- return sum(p.numel() for p in model.parameters() if p.requires_grad)
model.py at commit 3d23448, no license · at the source
Overview
- Department of Intelligent Systems, KTH Royal Institute of Technology, 10044 Stockholm, Sweden
- Faculty of Computing and IT (FCIT), Sohar University, Sohar 311, Oman
- College of Computer and Information Sciences, Imam Mohammad Ibn Saud Islamic University (IMSIU), Riyadh, Saudi Arabia
- Department of Computer Science and Artificial Intelligence, College of Computing and Information Technology, University of Bisha, Bisha, Saudi Arabia
Abstract
Background: Accurate brain tumor segmentation from Magnetic Resonance Imaging (MRI) depends on the fusion of multiple complementary modalities. However, clinical practice often faces incomplete modality sets due to acquisition failures, patient contraindications, or protocol variations. Current methods either treat each modality feature extractor in isolation or depend on computationally expensive teacher networks for cross-modal knowledge transfer. Objective: This paper presents Hierarchical Adaptive Group Self-Support Learning with Boundary-Aware Calibration (HAGSS), a framework that overcomes three key limitations of existing group self-support methods: static group formation that ignores temporal prediction quality, uniform treatment of boundary and interior voxels, and distribution mismatch across heterogeneous modality logits. Methods: We propose a hierarchical adaptive group formation mechanism that reassigns group leader roles at each epoch based on voxel-level prediction confidence scores instead of fixed sensitivity priors. We also introduce a boundary-aware calibration module that applies spatially varied distillation weights with greater emphasis on tumor boundary regions. In addition, we design a cross-scale consistency regularization term that enforces agreement between multi-resolution predictions to stabilize the self-support target. Results: Experiments on BraTS2020, BraTS2018, and BraTS2021 datasets show that HAGSS achieves consistent improvements over state-of-the-art baselines. The average Dice gains across the whole tumor, tumor core, and enhancing tumor regions reach 1.30% on BraTS2020 and 1.61% on BraTS2021 compared to existing methods. All improvements are statistically significant (p<0.05). Conclusions: HAGSS operates exclusively during training, adds no parameters or inference cost, and can be applied as a plug-in module to any multi-encoder incomplete multi-modal segmentation architecture. Code is publicly available at GitHub.
Reproduced under the paper's license (CC BY), from the paper cited above.
Repository
Its files are read in the Code ↔ Paper reader above, with 15 matches between paragraphs and lines of code.
sqbqamar/HAGSS
3d23448e9508dbed3ce20a169be19d298e7b4b79, 21 March 2026Availability: 1 check, the latest on 28 September 2026: the link answers
- 28 September 2026: the link answers
18 files
- dataset.py, Python, 418 lines
- hagss/
__init__.py , Python, 44 lines - hagss/
boundary_calibration.py , Python, 120 lines, 2 matches - hagss/
config.py , Python, 94 lines, 2 matches - hagss/
cross_scale.py , Python, 96 lines, 3 matches - hagss/
entropy.py , Python, 47 lines - hagss/
group_formation.py , Python, 233 lines, 2 matches - hagss/
hagss_loss.py , Python, 219 lines, 1 match - hagss/
logit_standardization.py , Python, 42 lines - hagss/
masking.py , Python, 51 lines - hagss/
reliability_filter.py , Python, 62 lines - hagss/
sobel3d.py , Python, 91 lines, 1 match - metrics.py, Python, 200 lines, 1 match
- model.py, Python, 373 lines, 3 matches
- run_single_test.py, Python, 260 lines
- test_hagss.py, Python, 431 lines
- train.py, Python, 417 lines
- README.md, Text, 146 lines
The paper's code and data availability statement is in the Data section.
Tracing map
Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.
What the map holds:
- 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 17 scripts, each with its path and the digest of its content;
- 15 matches between paragraphs of the paper and lines of the code (method lexical-v1);
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
No dataset and no data link were found in the paper.
Data Availability Statement
The data presented in this study are openly available in GitHub, https://
Reproduced under the paper's license (CC BY), from the paper cited above.
Versions
The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.
Version 1, 28 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 3 authors, 5 keywords, 1 funder, 10 references.
Cite
This paper
Qamar, S., Fazil, M., & Ashraf, Z. (2026). Bridging Annotation Gaps: Hierarchical Self-Support Learning for Brain Tumor Segmentation. Diagnostics (Basel, Switzerland), 16(11), 1588. https://
BibTeX
@article{qamar2026bridgi
author = {Qamar, Saqib and Fazil, Mohd and Ashraf, Zubair},
title = {{Bridging Annotation Gaps: Hierarchical Self-Support Learning for Brain Tumor Segmentation}},
journal = {Diagnostics (Basel, Switzerland)},
year = {2026},
month = may,
volume = {16},
number = {11},
pages = {1588},
publisher = {Multidisciplinary Digital Publishing Institute (MDPI)},
issn = {2075-4418},
doi = {10.3390/
url = {https://
pmid = {42279454},
pmcid = {PMC13256090}
}
RIS
TY - JOUR
AU - Qamar, Saqib
AU - Fazil, Mohd
AU - Ashraf, Zubair
TI - Bridging Annotation Gaps: Hierarchical Self-Support Learning for Brain Tumor Segmentation
T2 - Diagnostics (Basel, Switzerland)
J2 - Diagnostics (Basel)
PY - 2026
DA - 2026/
VL - 16
IS - 11
SP - 1588
SN - 2075-4418
PB - Multidisciplinary Digital Publishing Institute (MDPI)
DO - 10.3390/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.3390/
"type": "article-journal",
"title": "Bridging Annotation Gaps: Hierarchical Self-Support Learning for Brain Tumor Segmentation",
"container-title": "Diagnostics (Basel, Switzerland)",
"author": [
{
"family": "Qamar",
"given": "Saqib"
},
{
"family": "Fazil",
"given": "Mohd"
},
{
"family": "Ashraf",
"given": "Zubair"
}
],
"container-title-short":
"volume": "16",
"issue": "11",
"page": "1588",
"DOI": "10.3390/
"PMID": "42279454",
"PMCID": "PMC13256090",
"ISSN": "2075-4418",
"publisher": "Multidisciplinary Digital Publishing Institute (MDPI)",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
5,
22
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.21037/qims-2026-0792 [code]
- An nnU-Net-based framework with adaptive feature representation for 3D brain tumor segmentation.Journal: Quantitative imaging in medicine and surgeryIn common: SimpleITK, NiBabel, PyTorch, 2 other tools, methods / tools, structural MRI / diffusion, other condition, 3 references
- [2] doi:10.1038/s41598-026-48496-1 [code]
- A unified FLAIR hyperintensity segmentation model for various CNS tumor types and acquisition time points.Journal: Scientific reportsIn common: SimpleITK, NiBabel, SciPy, 1 other tool, methods / tools, structural MRI / diffusion, other condition, 2 references
- [3] doi:10.3389/fmed.2026.1875760 [code]
- Adaptive multi-stage domain unlearning for white-matter lesion segmentation.Journal: Frontiers in medicineIn common: SimpleITK, NiBabel, PyTorch, 2 other tools, methods / tools, structural MRI / diffusion, 1 reference
- [4] doi:10.1002/hipo.70124 [code]
- Association Between Anterior Hippocampal Gyrification and Episodic Memory Performance in Neurotypical Young Adults.Journal: HippocampusIn common: SimpleITK, NiBabel, PyTorch, 2 other tools, structural MRI / diffusion, 1 reference
- [5] doi:10.3389/fnins.2026.1870124 [code]
- An end-to-end pipeline for automated fetal brain segmentation and biometry from 3D SSFP MRI.Journal: Frontiers in neuroscienceIn common: SimpleITK, NiBabel, PyTorch, 2 other tools, structural MRI / diffusion, 1 reference
- [6] doi:10.1186/s12880-026-02335-x [code]
- Automatic lateral ventricle and choroid plexus segmentation method in infant brain MR images.Journal: BMC medical imagingIn common: SimpleITK, NiBabel, PyTorch, 2 other tools, structural MRI / diffusion, 1 reference
- [7] doi:10.3390/biomedicines14071475 [code]
- ETDACVO: Structural-Fidelity-Awar
e Evolutionary Co-Optimization for Robust and Explainable Brain Tumor MRI Classification. Journal: BiomedicinesIn common: SimpleITK, NiBabel, PyTorch, 2 other tools, methods / tools, structural MRI / diffusion, other condition - [8] doi:10.1016/j.adro.2026.102092 [code]
- Effect of Anatomic Contextual Information on the Performance of a Convolutional Neural Network Tasked With Brain Metastasis Detection.Journal: Advances in radiation oncologyIn common: SimpleITK, NiBabel, PyTorch, 2 other tools, other condition, 1 reference
- [9] doi:10.1371/journal.pone.0354511 [code]
- TokenUNet: A new case for transformers integration in efficient and interpretable 3D UNets for brain imaging segmentation.Journal: PloS oneIn common: NiBabel, PyTorch, SciPy, 1 other tool, methods / tools, other condition, 2 references
- [10] doi:10.1002/advs.76596 [code]
- DDSurfer: A Weakly-Supervised Dual-Stream Deep Learning Framework for Cortical Surface Reconstruction From Diffusion MRI.Journal: Advanced science (Weinheim, Baden-Wurttemberg, Germany)In common: SimpleITK, NiBabel, PyTorch, 2 other tools, methods / tools, structural MRI / diffusion
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 1 repository of the authors' code, each at its verified commit and with its license, 17 scripts, and 15 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:5f159f3118cac815…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
Request its removal
To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).
Discussion, reproductions, activity
Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
