OSCR

Bridging Annotation Gaps: Hierarchical Self-Support Learning for Brain Tumor Segmentation.

Code ↔ Paper

15 matches between paragraphs of the paper and lines of its authors' code, computed by the harvester (lexical-v1). Click a colored paragraph or line to see its counterpart.

The 15 matches
  1. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [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. [12] § 4. Experimental Results › 4.2. Implementation Details ↔ model.py, lines 1–35 · score 0.65 · mmFormer, RFNet, codebases, official, RTX, V100
  13. [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. [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. [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

  1. # -*- coding: utf-8 -*-
  2. """
  3. Created on Sat Mar 21 21:37:11 2026
  4. @author: drsaq
  5. model.py — Multi-Encoder 3D UNet for Incomplete Multi-Modal Segmentation
  6. =========================================================================
  7. RFNet-style architecture: 4 independent encoder-decoder branches + shared
  8. region-aware fusion. Each branch is a full 3D UNet that independently
  9. produces a (B, num_classes, D, H, W) logit map.
  10. Architecture per branch (4 levels):
  11. Encoder: Conv3d-IN-ReLU → Conv3d-IN-ReLU → MaxPool (×3 down)
  12. Bottleneck: Conv3d-IN-ReLU → Conv3d-IN-ReLU
  13. Decoder: Upsample → concat skip → Conv3d-IN-ReLU → Conv3d-IN-ReLU (×3 up)
  14. Head: Conv3d(1×1×1) → num_classes logits
  15. Channels: 16 → 32 → 64 → 128 (bottleneck)
  16. Params per branch: ~4.2M → total ~16.8M (4 branches)
  17. + fusion head ~17.9M total
  18. For mmFormer, replace this file with the official mmFormer codebase.
  19. The only interface requirement: model.forward(inputs) → list of 4 logit maps.
  20. Hardware:
  21. RFNet: fits in 2× V100 16GB with batch_size=2, crop=128³
  22. mmFormer: fits in 2× RTX 3090Ti with batch_size=2, crop=128³
  23. """
  24. import torch
  25. import torch.nn as nn
  26. import torch.nn.functional as F
  27. from typing import List, Optional
  28. # ---------------------------------------------------------------------------
  29. # Building blocks
  30. # ---------------------------------------------------------------------------
  31. class ConvBlock3D(nn.Module):
  32. """Two consecutive 3D Conv-InstanceNorm-ReLU layers."""
  33. def __init__(self, in_ch: int, out_ch: int):
  34. super().__init__()
  35. self.block = nn.Sequential(
  36. nn.Conv3d(in_ch, out_ch, kernel_size=3, padding=1, bias=False),
  37. nn.InstanceNorm3d(out_ch, affine=True),
  38. nn.ReLU(inplace=True),
  39. nn.Conv3d(out_ch, out_ch, kernel_size=3, padding=1, bias=False),
  40. nn.InstanceNorm3d(out_ch, affine=True),
  41. nn.ReLU(inplace=True),
  42. )
  43. def forward(self, x: torch.Tensor) -> torch.Tensor:
  44. return self.block(x)
  45. class DownBlock(nn.Module):
  46. """Downsample via MaxPool then ConvBlock."""
  47. def __init__(self, in_ch: int, out_ch: int):
  48. super().__init__()
  49. self.pool = nn.MaxPool3d(kernel_size=2, stride=2)
  50. self.conv = ConvBlock3D(in_ch, out_ch)
  51. def forward(self, x: torch.Tensor) -> torch.Tensor:
  52. return self.conv(self.pool(x))
  53. class UpBlock(nn.Module):
  54. """Upsample via trilinear interpolation, concat skip, then ConvBlock."""
  55. def __init__(self, in_ch: int, skip_ch: int, out_ch: int):
  56. super().__init__()
  57. self.conv = ConvBlock3D(in_ch + skip_ch, out_ch)
  58. def forward(self, x: torch.Tensor, skip: torch.Tensor) -> torch.Tensor:
  59. x = F.interpolate(x, size=skip.shape[2:], mode="trilinear",
  60. align_corners=False)
  61. x = torch.cat([x, skip], dim=1)
  62. return self.conv(x)
  63. # ---------------------------------------------------------------------------
  64. # Single modality 3D UNet branch
  65. # ---------------------------------------------------------------------------
  66. class UNet3DBranch(nn.Module):
  67. """Full 3D UNet encoder-decoder for one modality.
  68. 4-level architecture:
  69. Level 0: base_ch (16)
  70. Level 1: base_ch×2 (32)
  71. Level 2: base_ch×4 (64)
  72. Bottleneck: base_ch×8 (128)
  73. Args:
  74. in_channels: input channels (1 for single modality MRI)
  75. num_classes: output segmentation classes (4 for BraTS)
  76. base_ch: base channel count (16 → ~4.2M params per branch)
  77. """
  78. def __init__(self, in_channels: int = 1, num_classes: int = 4,
  79. base_ch: int = 16):
  80. super().__init__()
  81. ch = [base_ch, base_ch * 2, base_ch * 4, base_ch * 8]
  82. # Encoder
  83. self.enc0 = ConvBlock3D(in_channels, ch[0])
  84. self.enc1 = DownBlock(ch[0], ch[1])
  85. self.enc2 = DownBlock(ch[1], ch[2])
  86. # Bottleneck
  87. self.bottleneck = DownBlock(ch[2], ch[3])
  88. # Decoder
  89. self.dec2 = UpBlock(ch[3], ch[2], ch[2])
  90. self.dec1 = UpBlock(ch[2], ch[1], ch[1])
  91. self.dec0 = UpBlock(ch[1], ch[0], ch[0])
  92. # Output head
  93. self.head = nn.Conv3d(ch[0], num_classes, kernel_size=1)
  94. def forward(self, x: torch.Tensor) -> torch.Tensor:
  95. """
  96. Args:
  97. x: (B, 1, D, H, W) single modality input.
  98. Returns:
  99. logits: (B, num_classes, D, H, W)
  100. """
  101. # Encoder with skip connections
  102. e0 = self.enc0(x) # (B, 16, D, H, W)
  103. e1 = self.enc1(e0) # (B, 32, D/2, H/2, W/2)
  104. e2 = self.enc2(e1) # (B, 64, D/4, H/4, W/4)
  105. # Bottleneck
  106. bn = self.bottleneck(e2) # (B, 128, D/8, H/8, W/8)
  107. # Decoder
  108. d2 = self.dec2(bn, e2) # (B, 64, D/4, H/4, W/4)
  109. d1 = self.dec1(d2, e1) # (B, 32, D/2, H/2, W/2)
  110. d0 = self.dec0(d1, e0) # (B, 16, D, H, W)
  111. return self.head(d0) # (B, 4, D, H, W)
  112. def forward_features(self, x: torch.Tensor):
  113. """Return both logits and intermediate features for fusion."""
  114. e0 = self.enc0(x)
  115. e1 = self.enc1(e0)
  116. e2 = self.enc2(e1)
  117. bn = self.bottleneck(e2)
  118. d2 = self.dec2(bn, e2)
  119. d1 = self.dec1(d2, e1)
  120. d0 = self.dec0(d1, e0)
  121. logits = self.head(d0)
  122. return logits, d0 # logits + final decoder features
  123. # ---------------------------------------------------------------------------
  124. # Region-Aware Fusion Module (inspired by RFNet)
  125. # ---------------------------------------------------------------------------
  126. class RegionAwareFusion(nn.Module):
  127. """Fuse decoder features from all available modalities.
  128. Learns per-region (per-class) attention weights to aggregate
  129. multi-modal features. Missing modalities contribute zero features.
  130. Args:
  131. feature_ch: channel count of input decoder features (base_ch)
  132. num_classes: number of segmentation classes (4)
  133. num_modalities: number of modality branches (4)
  134. """
  135. def __init__(self, feature_ch: int = 16, num_classes: int = 4,
  136. num_modalities: int = 4):
  137. super().__init__()
  138. self.num_classes = num_classes
  139. self.num_modalities = num_modalities
  140. # Attention: for each class, learn a modality-weighting vector
  141. # from the concatenated features
  142. self.attention = nn.Sequential(
  143. nn.Conv3d(feature_ch * num_modalities, feature_ch, 1, bias=False),
  144. nn.InstanceNorm3d(feature_ch, affine=True),
  145. nn.ReLU(inplace=True),
  146. nn.Conv3d(feature_ch, num_modalities * num_classes, 1),
  147. )
  148. # Final segmentation head on fused features
  149. self.fuse_head = nn.Sequential(
  150. ConvBlock3D(feature_ch, feature_ch),
  151. nn.Conv3d(feature_ch, num_classes, kernel_size=1),
  152. )
  153. def forward(self, features_list: List[torch.Tensor]) -> torch.Tensor:
  154. """
  155. Args:
  156. features_list: list of M tensors, each (B, feature_ch, D, H, W).
  157. Missing modalities should be zero-tensors.
  158. Returns:
  159. fused_logits: (B, num_classes, D, H, W)
  160. """
  161. B = features_list[0].shape[0]
  162. M = self.num_modalities
  163. C = self.num_classes
  164. fch = features_list[0].shape[1]
  165. spatial = features_list[0].shape[2:]
  166. # Concatenate all modality features → (B, M*fch, D, H, W)
  167. concat = torch.cat(features_list, dim=1)
  168. # Compute attention weights → (B, M*C, D, H, W)
  169. attn_raw = self.attention(concat)
  170. # Reshape to (B, M, C, D, H, W) then softmax over modalities
  171. attn = attn_raw.view(B, M, C, *spatial)
  172. attn = F.softmax(attn, dim=1) # normalise across modalities
  173. # Weighted sum of features per class
  174. # features: (B, M, fch, D, H, W)
  175. feats = torch.stack(features_list, dim=1)
  176. # attn_expanded: broadcast (B, M, C, D, H, W) → weight each modality
  177. # Sum across modalities: (B, fch, D, H, W)
  178. # We use class-averaged attention for feature fusion
  179. attn_avg = attn.mean(dim=2, keepdim=True) # (B, M, 1, D, H, W)
  180. fused = (feats * attn_avg).sum(dim=1) # (B, fch, D, H, W)
  181. return self.fuse_head(fused)
  182. # ---------------------------------------------------------------------------
  183. # Complete Multi-Encoder Model
  184. # ---------------------------------------------------------------------------
  185. class MultiEncoderUNet(nn.Module):
  186. """Multi-encoder 3D UNet for incomplete multi-modal segmentation.
  187. This is a proper RFNet-style architecture with:
  188. - 4 independent UNet branches (one per modality)
  189. - Region-aware fusion module
  190. - Each branch produces per-modality logits (for HAGSS)
  191. - Fusion produces fused logits (for standard baseline training)
  192. HAGSS only uses the per-branch logits for distillation.
  193. The fused output can optionally be used as an additional task loss.
  194. Args:
  195. num_modalities: number of MRI modalities (4)
  196. num_classes: segmentation classes (4: BG, NCR, ED, ET)
  197. base_ch: base channel count per UNet branch
  198. use_fusion: whether to include the fusion module
  199. """
  200. def __init__(self, num_modalities: int = 4, num_classes: int = 4,
  201. base_ch: int = 16, use_fusion: bool = True):
  202. super().__init__()
  203. self.num_modalities = num_modalities
  204. self.num_classes = num_classes
  205. self.use_fusion = use_fusion
  206. # Independent encoder-decoder branches
  207. self.branches = nn.ModuleList([
  208. UNet3DBranch(in_channels=1, num_classes=num_classes,
  209. base_ch=base_ch)
  210. for _ in range(num_modalities)
  211. ])
  212. # Fusion module
  213. if use_fusion:
  214. self.fusion = RegionAwareFusion(
  215. feature_ch=base_ch, num_classes=num_classes,
  216. num_modalities=num_modalities,
  217. )
  218. def forward(self, inputs: List[torch.Tensor]) -> List[torch.Tensor]:
  219. """Forward pass returning per-modality logit maps.
  220. This is the interface expected by HAGSS:
  221. logits_list = model(inputs)
  222. Args:
  223. inputs: list of M tensors, each (B, 1, D, H, W).
  224. Missing modalities should be zero-filled.
  225. Returns:
  226. logits_list: list of M tensors, each (B, num_classes, D, H, W).
  227. """
  228. logits_list = []
  229. for branch, x in zip(self.branches, inputs):
  230. logits_list.append(branch(x))
  231. return logits_list
  232. def forward_with_fusion(self, inputs: List[torch.Tensor]):
  233. """Forward pass returning both per-modality and fused logits.
  234. Use this for combined training:
  235. logits_list, fused_logits = model.forward_with_fusion(inputs)
  236. Args:
  237. inputs: list of M tensors, each (B, 1, D, H, W).
  238. Returns:
  239. logits_list: list of M tensors (per-branch logits for HAGSS).
  240. fused_logits: (B, num_classes, D, H, W) from fusion module.
  241. """
  242. logits_list = []
  243. features_list = []
  244. for branch, x in zip(self.branches, inputs):
  245. logits, feats = branch.forward_features(x)
  246. logits_list.append(logits)
  247. features_list.append(feats)
  248. fused_logits = None
  249. if self.use_fusion:
  250. fused_logits = self.fusion(features_list)
  251. return logits_list, fused_logits
  252. # ---------------------------------------------------------------------------
  253. # Model creation helpers
  254. # ---------------------------------------------------------------------------
  255. def create_rfnet(num_classes: int = 4) -> MultiEncoderUNet:
  256. """Create RFNet-style model.
  257. ~34.7M parameters (matching paper Table V).
  258. Fits on 2× V100 16GB with batch_size=2, crop_size=128³.
  259. """
  260. return MultiEncoderUNet(
  261. num_modalities=4,
  262. num_classes=num_classes,
  263. base_ch=32, # 32 → 64 → 128 → 256 bottleneck
  264. use_fusion=True,
  265. )
  266. def create_mmformer(num_classes: int = 4) -> MultiEncoderUNet:
  267. """Create mmFormer-style model.
  268. ~42.1M parameters (matching paper Table V).
  269. Fits on 2× RTX 3090Ti with batch_size=2, crop_size=128³.
  270. """
  271. return MultiEncoderUNet(
  272. num_modalities=4,
  273. num_classes=num_classes,
  274. base_ch=40, # 40 → 80 → 160 → 320 bottleneck
  275. use_fusion=True,
  276. )
  277. def create_lightweight(num_classes: int = 4) -> MultiEncoderUNet:
  278. """Create lightweight model for testing/debugging.
  279. ~4.5M parameters. Fits on single GPU with 8GB.
  280. """
  281. return MultiEncoderUNet(
  282. num_modalities=4,
  283. num_classes=num_classes,
  284. base_ch=16,
  285. use_fusion=True,
  286. )
  287. def count_parameters(model: nn.Module) -> int:
  288. """Count trainable parameters."""
  289. return sum(p.numel() for p in model.parameters() if p.requires_grad)

model.py at commit 3d23448, no license · at the source

Overview

Authors: Saqib Qamar1,2, Mohd Fazil3, Zubair Ashraf4
  1. Department of Intelligent Systems, KTH Royal Institute of Technology, 10044 Stockholm, Sweden
  2. Faculty of Computing and IT (FCIT), Sohar University, Sohar 311, Oman
  3. College of Computer and Information Sciences, Imam Mohammad Ibn Saud Islamic University (IMSIU), Riyadh, Saudi Arabia
  4. Department of Computer Science and Artificial Intelligence, College of Computing and Information Technology, University of Bisha, Bisha, Saudi Arabia
Journal: Diagnostics (Basel, Switzerland), volume 16, issue 11, article 1588
Dates: received 3 May 2026; accepted 21 May 2026; published online 22 May 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.3390/diagnostics16111588 · PMID 42279454 · PMCID PMC13256090 · OpenAlex W7162124101
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: structural MRI / diffusion (modality), other condition (population), methods / tools (subfield)
Methods: Connectivity, fMRI & imaging
Keywords: incomplete multi-modal MRI segmentation, brain tumor, self-support learning, boundary-aware calibration, cross-modal consistency learning
Topic: Advanced Neural Network Applications (Computer Vision and Pattern Recognition, Computer Science), according to OpenAlex
Funding: Imam Mohammad Ibn Saud Islamic University (grant number IMSIU-DDRSP2601)
Citations: cited by 1 paper (Europe PMC); 44 references in the paper

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

License: none: the authors keep all their rights
State: the link answers, verified on 28 September 2026
Evidence: files inventoried
Commit: 3d23448e9508dbed3ce20a169be19d298e7b4b79, 21 March 2026
Languages: Python (17)
Size: 18 files, 17 scripts
Software Heritage: not archived
Found in: “Data Availability Statement”
Holds: README
Not found: license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: PyTorch (15 files), NumPy (3 files), NiBabel (1 file), SciPy (1 file), SimpleITK (1 file)
Availability: 1 check, the latest on 28 September 2026: the link answers
  • 28 September 2026: the link answers
18 files

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://github.com/sqbqamar/HAGSS, which is accessed on 21 March 2026. We have used the Pytorch library for implementation.

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://doi.org/10.3390/diagnostics16111588

BibTeX

@article{qamar2026bridging,
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/diagnostics16111588},
url = {https://doi.org/10.3390/diagnostics16111588},
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/05/22
VL - 16
IS - 11
SP - 1588
SN - 2075-4418
PB - Multidisciplinary Digital Publishing Institute (MDPI)
DO - 10.3390/diagnostics16111588
UR - https://doi.org/10.3390/diagnostics16111588
LA - en
ER -

CSL-JSON

{
"id": "10.3390/diagnostics16111588",
"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": "Diagnostics (Basel)",
"volume": "16",
"issue": "11",
"page": "1588",
"DOI": "10.3390/diagnostics16111588",
"PMID": "42279454",
"PMCID": "PMC13256090",
"ISSN": "2075-4418",
"publisher": "Multidisciplinary Digital Publishing Institute (MDPI)",
"URL": "https://doi.org/10.3390/diagnostics16111588",
"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 surgery
In 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 reports
In 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 medicine
In 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: Hippocampus
In 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 neuroscience
In 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 imaging
In common: SimpleITK, NiBabel, PyTorch, 2 other tools, structural MRI / diffusion, 1 reference
[7] doi:10.3390/biomedicines14071475 [code]
ETDACVO: Structural-Fidelity-Aware Evolutionary Co-Optimization for Robust and Explainable Brain Tumor MRI Classification.
Journal: Biomedicines
In 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 oncology
In 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 one
In common: NiBabel, PyTorch, SciPy, 1 other tool, methods / tools, other condition, 2 references
[10] doi:10.1038/s41467-026-69578-8 [code]
Contrast-free identification of glioma blood-brain barrier status via generative diffusion AI and non-contrast MRI.
Journal: Nature communications
In common: SimpleITK, NiBabel, PyTorch, 1 other tool, structural MRI / diffusion, other condition, 1 reference

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.

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.