CAHA-Net: A novel MR image classification model based on DenseNet incorporating coordinate attention and hybrid augmentation.
The 3 matches
- [1] § Model architecture › Algorithm design ↔ neurotumornet_classifier.py, lines 25–92 · score 0.55 · BatchNorm, max pooling, dense, modules, classification, tumor
- [2] § Experimental results › Experimental environment and parameter settings ↔ train_swin_tiny.py, lines 336–394 · score 0.50 · weight decay, Focal Loss, Swin, Adam, brain tumor, optimization
- [3] § Experimental results › Experimental environment and parameter settings ↔ train_swin_tiny_partial_ft.py, lines 147–200 · score 0.50 · weight decay, Focal Loss, Swin, Adam, brain tumor, optimization
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 · 470 lines · 16 KB · GPL-3.0 · 1 match
- """
- NeuroTumorNet - Brain Tumor Classification using Deep Convolutional Neural Networks
- ===================================================================================
- 基于 https://github.com/h9zdev/NeuroTumorNet 的 PyTorch 实现
- 原始论文方法:
- 1. Baseline CNN: 3层卷积块 + BatchNorm + L2正则化 + Dropout
- 2. VGG16 Transfer Learning: 预训练VGG16 + 自定义分类头
- 3. 带正则化的增强CNN: BatchNorm + Dropout + L2正则化
- 本模块用 PyTorch 复现原始仓库的核心架构,保留其设计理念:
- - 简单的3层CNN作为基线
- - BatchNormalization稳定训练
- - Dropout防止过拟合
- - L2正则化 (通过weight_decay实现)
- 作者: 基于 h9zdev/NeuroTumorNet (CC BY-NC 4.0)
- """
- import torch
- import torch.nn as nn
- import torch.nn.functional as F
- # ============================================================================
- # 1. NeuroTumorNet Baseline CNN
- # ============================================================================
- class NeuroTumorNetBaseline(nn.Module):
- """
- NeuroTumorNet Baseline CNN - 原始论文的基线模型
- 架构:
- - 3个卷积块: Conv2D -> BatchNorm -> ReLU -> MaxPool
- - 通道数: 32 -> 64 -> 128
- - 全连接层: Flatten -> Dense(128) -> Dropout -> Output
- 基于论文 Section 3.3: Model Architecture
- """
- def __init__(self, num_classes=4, dropout_rate=0.5):
- super(NeuroTumorNetBaseline, self).__init__()
- # 卷积块 1: 32 filters
- self.conv1 = nn.Conv2d(3, 32, kernel_size=3, padding=1)
- self.bn1 = nn.BatchNorm2d(32)
- self.pool1 = nn.MaxPool2d(2, 2)
- # 卷积块 2: 64 filters
- self.conv2 = nn.Conv2d(32, 64, kernel_size=3, padding=1)
- self.bn2 = nn.BatchNorm2d(64)
- self.pool2 = nn.MaxPool2d(2, 2)
- # 卷积块 3: 128 filters
- self.conv3 = nn.Conv2d(64, 128, kernel_size=3, padding=1)
- self.bn3 = nn.BatchNorm2d(128)
- self.pool3 = nn.MaxPool2d(2, 2)
- # 分类头
- # 输入 224x224 -> 经过3次pool后 -> 28x28x128
- self.flatten = nn.Flatten()
- self.fc1 = nn.Linear(128 * 28 * 28, 128)
- self.dropout = nn.Dropout(dropout_rate)
- self.fc2 = nn.Linear(128, num_classes)
- self._initialize_weights()
- def _initialize_weights(self):
- for m in self.modules():
- if isinstance(m, nn.Conv2d):
- nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu')
- if m.bias is not None:
- nn.init.constant_(m.bias, 0)
- elif isinstance(m, nn.BatchNorm2d):
- nn.init.constant_(m.weight, 1)
- nn.init.constant_(m.bias, 0)
- elif isinstance(m, nn.Linear):
- nn.init.normal_(m.weight, 0, 0.01)
- nn.init.constant_(m.bias, 0)
- def forward(self, x):
- # 卷积块 1
- x = self.pool1(F.relu(self.bn1(self.conv1(x))))
- # 卷积块 2
- x = self.pool2(F.relu(self.bn2(self.conv2(x))))
- # 卷积块 3
- x = self.pool3(F.relu(self.bn3(self.conv3(x))))
- # 分类
- x = self.flatten(x)
- x = F.relu(self.fc1(x))
- x = self.dropout(x)
- x = self.fc2(x)
- return x
- # ============================================================================
- # 2. NeuroTumorNet Enhanced CNN (with Regularization)
- # ============================================================================
- class NeuroTumorNetEnhanced(nn.Module):
- """
- NeuroTumorNet Enhanced CNN - 带增强正则化的模型
- 基于论文 Section 3.6: Addressing Overfitting
- - 每个卷积层后添加BatchNorm
- - 更高的Dropout率 (可配置0.3-0.7)
- - L2正则化通过optimizer的weight_decay实现
- 架构增强:
- - 更深的全连接层
- - 多级Dropout
- """
- def __init__(self, num_classes=4, dropout_rate1=0.5, dropout_rate2=0.3):
- super(NeuroTumorNetEnhanced, self).__init__()
- # 卷积块 1
- self.conv1 = nn.Conv2d(3, 32, kernel_size=3, padding=1)
- self.bn1 = nn.BatchNorm2d(32)
- self.pool1 = nn.MaxPool2d(2, 2)
- # 卷积块 2
- self.conv2 = nn.Conv2d(32, 64, kernel_size=3, padding=1)
- self.bn2 = nn.BatchNorm2d(64)
- self.pool2 = nn.MaxPool2d(2, 2)
- # 卷积块 3
- self.conv3 = nn.Conv2d(64, 128, kernel_size=3, padding=1)
- self.bn3 = nn.BatchNorm2d(128)
- self.pool3 = nn.MaxPool2d(2, 2)
- # 增强的分类头
- self.flatten = nn.Flatten()
- self.fc1 = nn.Linear(128 * 28 * 28, 256)
- self.bn_fc1 = nn.BatchNorm1d(256)
- self.dropout1 = nn.Dropout(dropout_rate1)
- self.fc2 = nn.Linear(256, 128)
- self.dropout2 = nn.Dropout(dropout_rate2)
- self.fc3 = nn.Linear(128, num_classes)
- self._initialize_weights()
- def _initialize_weights(self):
- for m in self.modules():
- if isinstance(m, nn.Conv2d):
- nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu')
- elif isinstance(m, (nn.BatchNorm2d, nn.BatchNorm1d)):
- nn.init.constant_(m.weight, 1)
- nn.init.constant_(m.bias, 0)
- elif isinstance(m, nn.Linear):
- nn.init.normal_(m.weight, 0, 0.01)
- nn.init.constant_(m.bias, 0)
- def forward(self, x):
- # 卷积块
- x = self.pool1(F.relu(self.bn1(self.conv1(x))))
- x = self.pool2(F.relu(self.bn2(self.conv2(x))))
- x = self.pool3(F.relu(self.bn3(self.conv3(x))))
- # 增强分类头
- x = self.flatten(x)
- x = F.relu(self.bn_fc1(self.fc1(x)))
- x = self.dropout1(x)
- x = F.relu(self.fc2(x))
- x = self.dropout2(x)
- x = self.fc3(x)
- return x
- # ============================================================================
- # 3. NeuroTumorNet Deep (5-layer CNN)
- # ============================================================================
- class NeuroTumorNetDeep(nn.Module):
- """
- NeuroTumorNet Deep - 更深的CNN变体
- 5个卷积块:
- - 通道数: 32 -> 64 -> 128 -> 256 -> 512
- - 使用Global Average Pooling代替Flatten减少参数
- """
- def __init__(self, num_classes=4, dropout_rate=0.5):
- super(NeuroTumorNetDeep, self).__init__()
- # 卷积块序列
- self.features = nn.Sequential(
- # Block 1
- nn.Conv2d(3, 32, kernel_size=3, padding=1),
- nn.BatchNorm2d(32),
- nn.ReLU(inplace=True),
- nn.MaxPool2d(2, 2),
- # Block 2
- nn.Conv2d(32, 64, kernel_size=3, padding=1),
- nn.BatchNorm2d(64),
- nn.ReLU(inplace=True),
- nn.MaxPool2d(2, 2),
- # Block 3
- nn.Conv2d(64, 128, kernel_size=3, padding=1),
- nn.BatchNorm2d(128),
- nn.ReLU(inplace=True),
- nn.MaxPool2d(2, 2),
- # Block 4
- nn.Conv2d(128, 256, kernel_size=3, padding=1),
- nn.BatchNorm2d(256),
- nn.ReLU(inplace=True),
- nn.MaxPool2d(2, 2),
- # Block 5
- nn.Conv2d(256, 512, kernel_size=3, padding=1),
- nn.BatchNorm2d(512),
- nn.ReLU(inplace=True),
- nn.MaxPool2d(2, 2),
- )
- # Global Average Pooling
- self.global_pool = nn.AdaptiveAvgPool2d(1)
- # 分类头
- self.classifier = nn.Sequential(
- nn.Flatten(),
- nn.Linear(512, 256),
- nn.ReLU(inplace=True),
- nn.Dropout(dropout_rate),
- nn.Linear(256, num_classes)
- )
- self._initialize_weights()
- def _initialize_weights(self):
- for m in self.modules():
- if isinstance(m, nn.Conv2d):
- nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu')
- elif isinstance(m, nn.BatchNorm2d):
- nn.init.constant_(m.weight, 1)
- nn.init.constant_(m.bias, 0)
- elif isinstance(m, nn.Linear):
- nn.init.normal_(m.weight, 0, 0.01)
- nn.init.constant_(m.bias, 0)
- def forward(self, x):
- x = self.features(x)
- x = self.global_pool(x)
- x = self.classifier(x)
- return x
- # ============================================================================
- # 4. NeuroTumorNet VGG-style (类似VGG的架构)
- # ============================================================================
- class NeuroTumorNetVGGStyle(nn.Module):
- """
- NeuroTumorNet VGG-style - 模仿VGG的双卷积块设计
- 参考原始仓库使用VGG16进行迁移学习的思路,
- 但这里是从头训练一个VGG风格的小型网络
- 每个stage有2个连续的3x3卷积
- """
- def __init__(self, num_classes=4, dropout_rate=0.5):
- super(NeuroTumorNetVGGStyle, self).__init__()
- self.features = nn.Sequential(
- # Stage 1: 2 x Conv(64)
- nn.Conv2d(3, 64, kernel_size=3, padding=1),
- nn.BatchNorm2d(64),
- nn.ReLU(inplace=True),
- nn.Conv2d(64, 64, kernel_size=3, padding=1),
- nn.BatchNorm2d(64),
- nn.ReLU(inplace=True),
- nn.MaxPool2d(2, 2),
- # Stage 2: 2 x Conv(128)
- nn.Conv2d(64, 128, kernel_size=3, padding=1),
- nn.BatchNorm2d(128),
- nn.ReLU(inplace=True),
- nn.Conv2d(128, 128, kernel_size=3, padding=1),
- nn.BatchNorm2d(128),
- nn.ReLU(inplace=True),
- nn.MaxPool2d(2, 2),
- # Stage 3: 3 x Conv(256)
- nn.Conv2d(128, 256, kernel_size=3, padding=1),
- nn.BatchNorm2d(256),
- nn.ReLU(inplace=True),
- nn.Conv2d(256, 256, kernel_size=3, padding=1),
- nn.BatchNorm2d(256),
- nn.ReLU(inplace=True),
- nn.Conv2d(256, 256, kernel_size=3, padding=1),
- nn.BatchNorm2d(256),
- nn.ReLU(inplace=True),
- nn.MaxPool2d(2, 2),
- # Stage 4: 3 x Conv(512)
- nn.Conv2d(256, 512, kernel_size=3, padding=1),
- nn.BatchNorm2d(512),
- nn.ReLU(inplace=True),
- nn.Conv2d(512, 512, kernel_size=3, padding=1),
- nn.BatchNorm2d(512),
- nn.ReLU(inplace=True),
- nn.Conv2d(512, 512, kernel_size=3, padding=1),
- nn.BatchNorm2d(512),
- nn.ReLU(inplace=True),
- nn.MaxPool2d(2, 2),
- )
- self.avgpool = nn.AdaptiveAvgPool2d((7, 7))
- self.classifier = nn.Sequential(
- nn.Linear(512 * 7 * 7, 512),
- nn.ReLU(inplace=True),
- nn.Dropout(dropout_rate),
- nn.Linear(512, 256),
- nn.ReLU(inplace=True),
- nn.Dropout(dropout_rate),
- nn.Linear(256, num_classes)
- )
- self._initialize_weights()
- def _initialize_weights(self):
- for m in self.modules():
- if isinstance(m, nn.Conv2d):
- nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu')
- elif isinstance(m, nn.BatchNorm2d):
- nn.init.constant_(m.weight, 1)
- nn.init.constant_(m.bias, 0)
- elif isinstance(m, nn.Linear):
- nn.init.normal_(m.weight, 0, 0.01)
- nn.init.constant_(m.bias, 0)
- def forward(self, x):
- x = self.features(x)
- x = self.avgpool(x)
- x = torch.flatten(x, 1)
- x = self.classifier(x)
- return x
- # ============================================================================
- # 5. NeuroTumorNet Tiny (轻量级版本)
- # ============================================================================
- class NeuroTumorNetTiny(nn.Module):
- """
- NeuroTumorNet Tiny - 轻量级版本用于快速实验
- 更少的通道数: 16 -> 32 -> 64
- 使用Global Average Pooling大幅减少参数
- """
- def __init__(self, num_classes=4, dropout_rate=0.3):
- super(NeuroTumorNetTiny, self).__init__()
- self.features = nn.Sequential(
- # Block 1
- nn.Conv2d(3, 16, kernel_size=3, padding=1),
- nn.BatchNorm2d(16),
- nn.ReLU(inplace=True),
- nn.MaxPool2d(2, 2),
- # Block 2
- nn.Conv2d(16, 32, kernel_size=3, padding=1),
- nn.BatchNorm2d(32),
- nn.ReLU(inplace=True),
- nn.MaxPool2d(2, 2),
- # Block 3
- nn.Conv2d(32, 64, kernel_size=3, padding=1),
- nn.BatchNorm2d(64),
- nn.ReLU(inplace=True),
- nn.MaxPool2d(2, 2),
- # Block 4
- nn.Conv2d(64, 128, kernel_size=3, padding=1),
- nn.BatchNorm2d(128),
- nn.ReLU(inplace=True),
- nn.AdaptiveAvgPool2d(1),
- )
- self.classifier = nn.Sequential(
- nn.Flatten(),
- nn.Linear(128, 64),
- nn.ReLU(inplace=True),
- nn.Dropout(dropout_rate),
- nn.Linear(64, num_classes)
- )
- self._initialize_weights()
- def _initialize_weights(self):
- for m in self.modules():
- if isinstance(m, nn.Conv2d):
- nn.init.kaiming_normal_(m.weight, mode='fan_out', nonlinearity='relu')
- elif isinstance(m, nn.BatchNorm2d):
- nn.init.constant_(m.weight, 1)
- nn.init.constant_(m.bias, 0)
- elif isinstance(m, nn.Linear):
- nn.init.normal_(m.weight, 0, 0.01)
- nn.init.constant_(m.bias, 0)
- def forward(self, x):
- x = self.features(x)
- x = self.classifier(x)
- return x
- # ============================================================================
- # 模型工厂函数
- # ============================================================================
- def create_neurotumornet(variant='baseline', num_classes=4, **kwargs):
- """
- 创建 NeuroTumorNet 模型
- Args:
- variant: 模型变体
- - 'baseline': 原始3层CNN
- - 'enhanced': 带增强正则化的CNN
- - 'deep': 5层深度CNN
- - 'vgg_style': VGG风格的CNN
- - 'tiny': 轻量级CNN
- num_classes: 输出类别数
- **kwargs: 额外参数 (如 dropout_rate)
- Returns:
- PyTorch模型
- """
- models = {
- 'baseline': NeuroTumorNetBaseline,
- 'enhanced': NeuroTumorNetEnhanced,
- 'deep': NeuroTumorNetDeep,
- 'vgg_style': NeuroTumorNetVGGStyle,
- 'tiny': NeuroTumorNetTiny,
- }
- if variant not in models:
- raise ValueError(f"Unknown variant: {variant}. Choose from {list(models.keys())}")
- return models[variant](num_classes=num_classes, **kwargs)
- # ============================================================================
- # 测试代码
- # ============================================================================
- if __name__ == '__main__':
- print("=" * 60)
- print("测试 NeuroTumorNet Classifier")
- print("=" * 60)
- device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
- dummy_input = torch.randn(2, 3, 224, 224).to(device)
- models_to_test = [
- ('NeuroTumorNetBaseline', 'baseline'),
- ('NeuroTumorNetEnhanced', 'enhanced'),
- ('NeuroTumorNetDeep', 'deep'),
- ('NeuroTumorNetVGGStyle', 'vgg_style'),
- ('NeuroTumorNetTiny', 'tiny'),
- ]
- for name, variant in models_to_test:
- print(f"\n--- {name} ---")
- model = create_neurotumornet(variant=variant, num_classes=4).to(device)
- output = model(dummy_input)
- params = sum(p.numel() for p in model.parameters()) / 1e6
- print(f"输入: {dummy_input.shape}")
- print(f"输出: {output.shape}")
- print(f"参数量: {params:.2f}M", end=" ")
- print("✅ 测试通过!")
- print("\n" + "=" * 60)
- print("所有测试完成!")
- print("=" * 60)
neurotumornet_classifier.py at commit acbe901, under GPL-3.0 · at the source
Overview
- School of Information Engineering, Sanming University,Sanming, 365004 China
- School of Statistics and Mathematics, Zhongnan University of Economics and Law,Wuhan, 430073 China
- Department of Statistics, University of Warwick,Coventry, CV4 7AL UK
- School of Mathematics, Sun Yat-sen University,Guangzhou, 510275 China
- Fujian Key Lab of Agriculture IOT Application, Sanming University,Sanming, 365004 China
- Fujian Provincial Universities Key Laboratory of Industrial Big Data Analysis and Application, Sanming University,Sanming, 365004 China
Abstract
The abstract is not reproduced here: the paper's license (CC BY-NC-ND) does not allow it. Read it in the paper, at the publisher or on Europe PMC.
Repository
Its files are read in the Code ↔ Paper reader above, with 3 matches between paragraphs and lines of code.
Jiajun-H/CAHA-Net
acbe9011a2f9b1677492b860d04a4dab7a0d64c0, 1 May 2026Availability: 1 check, the latest on 28 September 2026: the link answers
- 28 September 2026: the link answers
53 files
- IXI-T1.py, Python, 88 lines
- SE_densenet121.py, Python, 80 lines
- config.py, Python, 40 lines
- data_patient_statistics.
py , Python, 164 lines - data_statistics.py, Python, 200 lines
- jpg.py, Python, 83 lines
- model_utils.py, Python, 174 lines
- neurotumornet_classifier
.py , Python, 470 lines, 1 match - nnunet_classifier.py, Python, 694 lines
- partial_ft_runtime.py, Python, 41 lines
- prepare_kaggle_imagefold
er.py , Python, 376 lines - run_kaggle_all.py, Python, 73 lines
- run_train_suite.py, Python, 304 lines
- split_data.py, Python, 121 lines
- train_album.py, Python, 1,084 lines
- train_alexnet.py, Python, 378 lines
- train_camanet.py, Python, 445 lines
- train_custom_cnn.py, Python, 475 lines
- train_densenet169.py, Python, 408 lines
- train_densenet201.py, Python, 408 lines
- train_dinov3.py, Python, 484 lines
- train_dinov3_partial_ft.
py , Python, 336 lines - train_inceptionv4.py, Python, 494 lines
- train_kaggle_album.py, Python, 488 lines
- train_lmdp_net_2d_adapte
d.py , Python, 434 lines - train_lrl_mv_2d_adapted.
py , Python, 447 lines - train_mambaout_2025sota.
py , Python, 522 lines - train_mambavision.py, Python, 480 lines
- train_math13172787_hdf_e
nsemble.py , Python, 495 lines - train_math13223728_effne
tb5_cbam.py , Python, 500 lines - train_neurotumornet.py, Python, 427 lines
- train_nnunet_classifier.
py , Python, 450 lines - train_resnet152.py, Python, 380 lines
- train_resnet50.py, Python, 380 lines
- train_resnext50.py, Python, 380 lines
- train_swin_tiny.py, Python, 468 lines, 1 match
- train_swin_tiny_partial_
ft.py , Python, 332 lines, 1 match - train_unet_classifier.py
, Python, 438 lines - train_vgg16.py, Python, 381 lines
- train_vit_tiny.py, Python, 483 lines
- train_vit_tiny_partial_f
t.py , Python, 336 lines - train_vmamba.py, Python, 537 lines
- train_vmamba_2025sota.py
, Python, 529 lines - train_vssd_2025sota.py, Python, 626 lines
- training_cv_utils.py, Python, 324 lines
- unet_classifier.py, Python, 578 lines
- visualize_cam.py, Python, 117 lines
- visualize_fmix.py, Python, 553 lines
- visualize_gradcam_compar
ison.py , Python, 412 lines - visualize_matrix.py, Python, 105 lines
- vit_partial_ft_utils.py, Python, 336 lines
- LICENSE.txt, License, 674 lines
- README.md, Text, 100 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;
- 51 scripts, each with its path and the digest of its content;
- 3 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.
Code and data availability statement
The paper has a code and data availability statement. Its license (CC BY-NC-ND) does not allow reproducing it here; in short, from what the harvester recognized in it:
- it points to the authors' code: Jiajun-H/
CAHA-Net
Read it in the paper: doi.org/10.1038/s41598-026-55136-1.
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, 7 authors, 9 keywords, 8 MeSH terms, 2 funders, 16 references.
Cite
This paper
Qi, H., Guo, R., He, J., Wang, X., Han, Y., Jiang, X., & Liu, C. (2026). CAHA-Net: A novel MR image classification model based on DenseNet incorporating coordinate attention and hybrid augmentation. Scientific reports, 16(1), 17159. https://
BibTeX
@article{qi2026caha,
author = {Qi, Hui and Guo, Ruizhe and He, Jiajun and Wang, Xiyi and Han, Yaling and Jiang, Xuchu and Liu, Chibiao},
title = {{CAHA-Net: A novel MR image classification model based on DenseNet incorporating coordinate attention and hybrid augmentation}},
journal = {Scientific reports},
year = {2026},
month = may,
volume = {16},
number = {1},
pages = {17159},
publisher = {Nature Publishing Group},
issn = {2045-2322},
doi = {10.1038/
url = {https://
pmid = {42209768},
pmcid = {PMC13234125}
}
RIS
TY - JOUR
AU - Qi, Hui
AU - Guo, Ruizhe
AU - He, Jiajun
AU - Wang, Xiyi
AU - Han, Yaling
AU - Jiang, Xuchu
AU - Liu, Chibiao
TI - CAHA-Net: A novel MR image classification model based on DenseNet incorporating coordinate attention and hybrid augmentation
T2 - Scientific reports
J2 - Sci Rep
PY - 2026
DA - 2026/
VL - 16
IS - 1
SP - 17159
SN - 2045-2322
PB - Nature Publishing Group
DO - 10.1038/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1038/
"type": "article-journal",
"title": "CAHA-Net: A novel MR image classification model based on DenseNet incorporating coordinate attention and hybrid augmentation",
"container-title": "Scientific reports",
"author": [
{
"family": "Qi",
"given": "Hui"
},
{
"family": "Guo",
"given": "Ruizhe"
},
{
"family": "He",
"given": "Jiajun"
},
{
"family": "Wang",
"given": "Xiyi"
},
{
"family": "Han",
"given": "Yaling"
},
{
"family": "Jiang",
"given": "Xuchu"
},
{
"family": "Liu",
"given": "Chibiao"
}
],
"container-title-short":
"volume": "16",
"issue": "1",
"page": "17159",
"DOI": "10.1038/
"PMID": "42209768",
"PMCID": "PMC13234125",
"ISSN": "2045-2322",
"publisher": "Nature Publishing Group",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
5,
28
]
]
}
}
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.3389/frai.2026.1771088 [code]
- Few-shot deployment of pretrained MRI transformers in brain imaging tasks.Journal: Frontiers in artificial intelligenceIn common: OpenCV, Pillow, NiBabel, 6 other tools, structural MRI / diffusion, 1 reference
- [2] 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: OpenCV, NiBabel, PyTorch, 5 other tools, structural MRI / diffusion, other condition, 2 references
- [3] doi:10.1002/alz.71649 [code]
- Postmortem brain MRI reveals differential associations of subcortical and limbic volumes with cortical thinning and neurodegenerative pathologies.Journal: Alzheimer's & dementia : the journal of the Alzheimer's AssociationIn common: OpenCV, Pillow, NiBabel, 6 other tools, structural MRI / diffusion, other condition
- [4] doi:10.1186/s12880-026-02481-2 [code]
- Deep learning-based neuroanatomical profiling reveals population-specific brain changes in multiple sclerosis: a large-scale Middle Eastern study.Journal: BMC medical imagingIn common: OpenCV, Pillow, NiBabel, 5 other tools, structural MRI / diffusion, 1 reference
- [5] doi:10.1016/j.patter.2026.101538 [code]
- A multi-modal foundation model for brain disease diagnosis and medical imaging.Journal: Patterns (New York, N.Y.)In common: OpenCV, Pillow, NiBabel, 5 other tools, 1 reference
- [6] doi:10.1038/s41598-026-57519-w [code]
- Automated segmentation of neurons and spinal cord structures in immunofluorescence images using SpineDL.Journal: Scientific reportsIn common: OpenCV, Pillow, NiBabel, 5 other tools, other condition, 1 reference
- [7] doi:10.1016/j.phro.2026.101056 [code]
- Toward uncertainty-aware manual delineation of brain tumours using eye-tracking and image-derived features.Journal: Physics and imaging in radiation oncologyIn common: OpenCV, Pillow, NiBabel, 6 other tools, other condition
- [8] doi:10.1364/boe.600665 [code]
- NeuroSeg-MF: robust neuron segmentation in two-photon Ca&
lt;sup& gt;2+& lt;/ sup& gt; imaging using multi-feature fusion and detection-guided SAM. Journal: Biomedical optics expressIn common: OpenCV, Pillow, PyTorch, 4 other tools, 2 references - [9] doi:10.1162/imag.a.1309 [code]
- Probing the content of semantic representations in body-selective regions.Journal: Imaging neuroscience (Cambridge, Mass.)In common: OpenCV, Pillow, NiBabel, 6 other tools
- [10] doi:10.1167/jov.26.5.7 [code]
- Representations in vision and language converge in a shared, multidimensional space of perceived similarities.Journal: Journal of visionIn common: OpenCV, Pillow, NiBabel, 6 other tools
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, 51 scripts, and 3 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:27d1f5fec0c0e93e…
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.
