多任务DETR结合现代Backbone的乳腺X线分类与病灶定位

发布时间:2026/8/29 13:20:14
多任务DETR结合现代Backbone的乳腺X线分类与病灶定位 在乳腺X线摄影的 AI 辅助诊断场景里模型通常要回答两个问题这张片子有没有异常异常区域在哪。前者是图像级分类后者是病灶级定位。传统做法往往把这两个任务拆成独立模型分类模型只看整图检测模型只负责画框最后再用规则或另一个模型把结果拼起来。这样做的弊端很明显特征不能共享系统流程复杂而且分类和定位各自训练时都缺少对方的监督信息。DETR 这类基于 Transformer 的检测结构把目标检测重新定义为集合预测问题天然允许在同一个模型中同时输出图像级类别和病灶框正好匹配乳腺X线影像中的多任务需求。标题中的工作Modern Backbones Improve Multi-task DETR for Mammography Classification and Lesion Localization属于这个方向的一种实践在 DETR 检测骨干上用现代主干网络替换经典 ResNet让分类和病灶定位两个任务共享同一套 Transformer 编码解码特征。这篇文章围绕这条技术主线展开先解释 DETR 为什么适合多任务医学影像分析再说明主干网络在其中的作用然后给出一个可修改、可运行的最小工程骨架最后补充训练验证和排错经验。适合正在做医学影像 AI 落地、或者刚接触 DETR 系列检测模型的开发者参考。1. 为什么乳腺X线摄影任务需要 DETR 这类检测结构1.1 多任务输出先分类再定位乳腺X线摄影Mammography的临床阅读流程并不是单纯的“找出肿块”。放射科医生看一张片子时会先判断整体是否存在异常再描述异常的类型、位置、大小和形态。对应到 AI 模型上就是两个层次的输出图像级分类判断整张图像是否存在病灶常见的分类目标包括正常、良性、恶性或者按照 BI-RADS 分级给出风险评分。病灶级定位在图像上给出病灶所在的区域通常用边界框bounding box表示部分研究还会进一步做像素级分割。两个任务之间有明显的依赖关系图像级分类需要全局视野判断整张片子的风险病灶定位需要局部细节找到微钙化、肿块、结构扭曲这些具体位置。如果两个任务分开建模全局特征和局部特征会各自训练信息互相利用不起来。多任务模型的目标是让一个共享特征提取器同时服务这两个输出头让分类任务从定位监督中学习“病灶长什么样”让定位任务从分类监督中学习“哪些区域更容易出问题”。1.2 传统检测框架在医学影像上的短板以 Faster R-CNN、SSD、YOLO 为代表的经典检测框架经历了多年发展在自然图像上已经很成熟。但在医学影像里它们有几个不太合适的地方锚框和 NMS 后处理依赖人工先验。锚框的尺寸、比例需要针对病灶形态重新设计而乳腺病灶形状差异大设计不好会直接影响召回。正负样本不平衡问题突出。一张乳腺X线片里病灶往往只有几个而锚框数量可能上万训练时大量负样本会淹没少量正样本。后处理流程长。NMS、阈值筛选、置信度修正等步骤环环相扣任何一个环节调整不到位最终指标都会受影响。分类任务和检测任务难以在一个结构里自然统一。传统检测器输出的是目标框及其类别概率图像级分类通常需要额外加一个 Global Average Pooling 层或者重新训练一个分类头结构上比较割裂。DETR 的出现改变了这种设计思路。它把检测视为一个端到端的集合预测问题不需要锚框、不需要 NMS直接用 Transformer 解码器输出的固定数量 query 去预测结果结构上更简洁也更适合改造为多任务模型。1.3 DETR 的集合预测思路DETR 论文原论文标题为 End-to-End Object Detection with Transformers提出了一种新的检测范式。整个模型分为四段CNN backbone 提取图像特征。Transformer encoder 对特征图做全局建模让每个位置都能感知整幅图像的上下文。Transformer decoder 接收一组可学习的 object query通过交叉注意力从编码特征中查询目标信息。预测头对每个 query 输出类别概率和边界框坐标。这里最关键的是 object query。它的数量是固定的比如 100 个模型认为一张图像里最多有 100 个目标。训练时使用二分图匹配bipartite matching把预测结果和真实标注一一对应然后用匈牙利算法计算最优匹配再对匹配上的预测计算损失。因为每个 query 都独立预测一个目标模型不再需要 NMS后处理大幅简化。DETR 训练收敛慢的问题后来由 Deformable DETR 解决。Deformable DETR 把注意力模块中的可变形采样引入 Transformer让每个 query 只在少量关键采样点上做注意力既保留了全局建模能力又大幅降低计算量和收敛难度。在乳腺X线这类图像尺寸大、病灶小的场景里Deformable DETR 比原始 DETR 更容易训练。2. DETR 核心机制query、匹配和损失2.1 object query 是什么object query 是 Transformer decoder 输入的一组可学习向量每个向量代表“某种可能存在的目标”。在训练初期query 的内容是随机初始化的模型通过反向传播逐渐让每个 query 学会关注特定位置、特定大小、特定类别的目标。在乳腺X线多任务模型里query 的含义可以进一步扩展。除了病灶框还可以让某些 query 负责输出“整图是否存在异常”的类别判断。做法是增加一个全局分类头或者直接让 decoder 输出的 token 经过一个额外的图像级分类分支。这样模型在解码病灶框的同时也能输出图像级风险分数实现标题中所说的 multi-task。实现上需要注意 num_queries 的取值。乳腺X线片里病灶数量普遍很少一张图像通常只有 0 到 3 个病灶所以 query 数量不需要太多。常见做法是取 10 到 30 个。query 太多会引入大量背景预测加重二分图匹配时的负样本负担query 太少又可能在多病灶场景下漏检。2.2 二分图匹配把预测和目标对齐DETR 训练时不是简单地把每个预测框和距离最近的标注框配对而是用匈牙利算法求解一个最优匹配。匹配代价由三部分组成类别预测的负对数概率、预测框和真实框的 L1 距离、预测框和真实框的 GIoU 距离。匹配完成之后损失函数只对匹配成功的预测计算监督。这样设计的好处是模型学习的目标非常明确每个 query 都在竞争最优解而不是像锚框那样一个目标对应多个候选框。缺点也很明显匹配过程依赖分类分支的质量如果分类分支训练得不好匹配结果也会变差。在医学图像这类小样本任务上建议在匹配代价里给定位项更高权重避免模型为了提升分类而牺牲框的位置精度。2.3 多任务头如何共用特征多任务 DETR 的典型结构是一个 backbone 提取共享特征一个 encoder 做全局建模一个 decoder 输出目标级特征然后分成两个分支病灶检测分支对每个 query 输出类别概率和边界框坐标。图像级分类分支对 decoder 输出的全部 token 做池化或注意力聚合再经过全连接层输出整图类别。共享特征的好处是训练时两个任务的梯度都会回传到同一套 backbone从而让特征同时具备“辨别整图风险”和“定位局部病灶”的能力。但这里有一个常见的坑如果两个任务的损失量级差异过大梯度会互相干扰。图像级分类通常是交叉熵病灶检测通常是分类损失加 L1 和 GIoU三个损失的数值范围完全不同直接相加会导致某个任务主导训练。解决办法是给每个损失设置可调节的权重并在训练过程中观察每个损失的下降趋势。3. Modern Backbone 如何影响 DETR 效果3.1 backbone 决定特征表达DETR 虽然是 Transformer 结构但输入的视觉特征仍然来自 CNN backbone。backbone 输出的特征图质量直接决定 encoder 和 decoder 能利用多少有效的视觉信息。经典 DETR 默认使用 ResNet-50 或 ResNet-101 作为 backbone。ResNet 的优势是成熟、稳定、预训练权重丰富适合作为基线。但它在提取细粒度病灶特征上并不突出尤其是微钙化这类尺寸小、对比度低的医学目标ResNet 下采样后很容易丢失细节。现代 backbone 的改进方向主要有三个更强的多尺度特征表达。Swin Transformer、Res2Net 等结构通过分组、分层或局部窗口注意力让不同尺度的特征都能被充分建模。更大的有效感受野。Vision Transformer 类主干使用全局注意力建模理论上能感知整幅图像的长程依赖。更强的数据效率。ConvNeXt、Swin 等网络经过更好的训练策略和结构设计在同样数据量下往往比普通 ResNet 取得更高精度。3.2 常用候选 backbone 对比在类似论文任务中常见的选择可以按下面这张表来理解。表中的参数量和计算量数据均为常见公开配置实际项目要以自己安装版本的官方统计为准。Backbone参数量约特点适合场景注意事项ResNet-5025.6M稳定、预训练丰富、训练快作为基线快速验证流程感受野有限小病灶容易漏检ResNet-10144.5M比 ResNet-50 更强精度更高精度优先、显存充足训练时间增加收益不一定成比例Swin-T28M局部窗口注意力多尺度表达好病灶尺寸差异大的任务需要更长的训练轮次注意学习率配比Swin-S50M更强特征表达效果通常好于 Swin-T追求更高 AUC 和 mAP显存占用明显上升ConvNeXt-T28M纯卷积结构训练友好不想引入复杂注意力实现时和 Swin 相比精度接近推理更稳定EfficientNet 系列视版本而定通过复合缩放控制模型规模资源受限场景特征图通道维度差异大接入 DETR 时要注意对齐这里要强调的是backbone 越现代并不等于效果一定越好。在乳腺X线这种数据量有限的医学任务上预训练权重是和结构同等重要的因素。使用 ImageNet 预训练的 Swin 或 ConvNeXt通常比随机初始化的模型更容易收敛但如果没有合适预训练权重训练过程可能会比 ResNet 更不稳定。3.3 多任务下 backbone 的选择逻辑标题中的论文方向之所以强调 Modern Backbones核心逻辑是多任务 DETR 的 encoder 和 decoder 承担的是跨位置的关联建模而真正提供“病灶长什么样”的底层表征能力来自 backbone。如果 backbone 特征分辨率不够、语义不足后面接再复杂的 Transformer 也补不回来。选择 backbone 时可以按下面几个问题逐一确认病灶的最小尺寸是多少像素如果微钙化只有几个像素backbone 最后一级下采样倍数就不能太大或者需要引入多尺度特征融合。显存是否允许医学图像一般分辨率高backbone 的中间特征图要占据大量显存模型不能只盯着参数量看。预训练数据来源是否匹配不同 backbone 的预训练策略不同效果差异往往是预训练策略导致的而不是结构本身。实际复现时建议先用 ResNet-50 把整条多任务训练链路跑通保存一份基线结果再替换 Swin 或 ConvNeXt。这个过程能清楚地看到主干网络替换带来的收益也能避免一开始就陷入模型结构调整的泥潭。4. 搭建最小可复现的多任务 DETR 工程4.1 环境与依赖这里以 PyTorch 为例给出一个最小环境。DETR 系列对 PyTorch 版本要求不算苛刻但 torchvision 里预训练权重和 Transformer 相关 API 的版本要保持一致。conda create -n mammo_detr python3.9 -y conda activate mammo_detr pip install torch torchvision --index-url https://download.pytorch.org/whl/cu118 pip install openmim mim install mmcv pip install mmdet pip install timm scikit-learn pandas matplotlib注意以上命令里的 CUDA 版本号 11.8 要替换成你机器的实际 CUDA 版本。安装前先执行nvidia-smi查看驱动支持的 CUDA 版本再选择合适的 PyTorch 安装源。如果不想引入 MMDetection 依赖也可以直接从 DETR 官方仓库的代码改起。官方仓库使用相对独立的实现方式结构清晰适合学习和二次开发。MMDetection 则更适合工程化复用它提供了现成的 DETR、Deformable DETR 配置和多种 backbone 注册机制。4.2 数据组织和 COCO 标注格式乳腺X线数据通常以 DICOM 格式存储训练前需要先转换为 PNG 或 JPG 灰度图并准备标注文件。推荐使用 COCO 格式组织数据因为 DETR 的官方代码和 MMDetection 都对 COCO 格式有原生支持。一个包含分类标签和病灶框的 COCO 标注文件大致如下{ images: [ { id: 1, file_name: case_001.png, width: 1024, height: 1024 } ], annotations: [ { id: 1, image_id: 1, category_id: 1, bbox: [320.0, 240.0, 180.0, 220.0], area: 39600.0 } ], categories: [ {id: 0, name: background}, {id: 1, name: benign}, {id: 2, name: malignant} ] }图像级分类标签不在 COCO 标准结构里通常单独放在一个 CSV 文件或 JSON 文件中结构如下{ case_001.png: {label: 1, birads: 4A}, case_002.png: {label: 0, birads: 2} }这里的label表示图像级是否有恶性病灶birads可以保留原始临床分级作为后续扩展。公开数据集中CBIS-DDSM 和 INbreast 是乳腺X线研究领域经常使用的数据集前者包含 DICOM 原图和病灶掩膜标注后者提供了详细的 BI-RADS 分级信息。实际项目中使用前要确认数据许可和使用范围。4.3 模型骨架代码下面给出一个极简的多任务 DETR 结构目的是展示整体框架而不是完整复现论文中的全部训练技巧。实际使用时可以基于这段代码扩展import torch import torch.nn as nn import torchvision class MLP(nn.Module): def __init__(self, input_dim, hidden_dim, output_dim, num_layers): super().__init__() layers [] for _ in range(num_layers - 1): layers.append(nn.Linear(input_dim, hidden_dim)) layers.append(nn.ReLU(inplaceTrue)) input_dim hidden_dim layers.append(nn.Linear(hidden_dim, output_dim)) self.net nn.Sequential(*layers) def forward(self, x): return self.net(x) class MultiTaskDETR(nn.Module): def __init__(self, num_classes2, num_queries20, d_model256): super().__init__() # 使用 ResNet-50 作为 backbone可替换为 Swin 或 ConvNeXt backbone torchvision.models.resnet50(weightstorchvision.models.ResNet50_Weights.IMAGENET1K_V1) self.backbone nn.Sequential(*list(backbone.children())[:-2]) self.input_proj nn.Conv2d(2048, d_model, kernel_size1) # 这里使用 nn.TransformerDecoder 作为简化实现 decoder_layer nn.TransformerDecoderLayer(d_modeld_model, nhead8, batch_firstTrue) self.decoder nn.TransformerDecoder(decoder_layer, num_layers6) self.query_embed nn.Embedding(num_queries, d_model) self.class_embed nn.Linear(d_model, num_classes 1) # 多出的 1 是背景 self.bbox_embed MLP(d_model, d_model, 4, 3) # 图像级分类头对 decoder 输出的 token 做全局池化后分类 self.image_class_embed nn.Linear(d_model, num_classes) def forward(self, images): feat self.backbone(images) # [B, 2048, H, W] feat self.input_proj(feat) # [B, d_model, H, W] B, C, H, W feat.shape feat_flat feat.flatten(2).permute(0, 2, 1) # [B, H*W, d_model] query self.query_embed.weight.unsqueeze(0).repeat(B, 1, 1) # [B, num_queries, d_model] # 标准 DETR 还会加上位置编码这里从略 dec_out self.decoder(query, feat_flat) # [B, num_queries, d_model] pred_logits self.class_embed(dec_out) # 病灶框类别 pred_boxes self.bbox_embed(dec_out).sigmoid() # 归一化坐标 image_feat dec_out.mean(dim1) # [B, d_model] image_logits self.image_class_embed(image_feat) # 图像级分类 return {pred_logits: pred_logits, pred_boxes: pred_boxes, image_logits: image_logits}这段代码里省略了编码器、位置编码和匹配损失直接使用单层 TransformerDecoder 是为了让主干逻辑更清晰。真正训练时需要把标准 DETR 的 Transformer encoder 也加进来否则解码器缺少足够的全局上下文输入。如果直接基于官方 DETR 代码改造可以在DETR.forward里增加一个image_logits分支改动量会更小。4.4 训练配置训练配置推荐用 YAML 管理方便切换 backbone、损失权重和数据集路径。下面是一个参考配置model: backbone: resnet50 num_queries: 20 num_classes: 2 d_model: 256 dataset: root: ./data/mammo train_ann: annotations/train.json val_ann: annotations/val.json image_size: 1024 train: batch_size: 4 epochs: 50 lr_backbone: 1e-5 lr_transformer: 1e-4 weight_decay: 1e-4 lr_drop_epochs: [40] loss: weight_class: 1.0 weight_bbox_l1: 5.0 weight_giou: 2.0 weight_image_class: 1.0 optimizer: type: adamw betas: [0.9, 0.999]乳腺X线图像原始分辨率通常很高直接把整张图缩放到 1024 会丢失微钙化细节。常见做法是先缩放到 1024 或 1536必要时在训练时随机裁剪较大区域作为增强输入而不是简单 resize。batch_size受显存限制DETR 在医学图像大分辨率下通常只能用 2 到 8 的 batch这时要适当降低学习率并增加梯度累积步数。5. 训练、验证与关键参数5.1 损失权重和训练参数多任务 DETR 的损失包括三部分病灶框匹配后的分类损失通常用交叉熵。病灶框回归损失用 L1 和 GIoU 的组合。图像级分类损失用交叉熵或带类别权重的加权交叉熵。建议从一组初始权重开始实验例如分类 1.0、L1 5.0、GIoU 2.0、图像分类 1.0然后观察验证集指标变化。如果图像级分类收敛慢就把weight_image_class调大如果定位框偏移明显就把weight_bbox_l1和weight_giou调大。每次只调节一个权重记录结果不要同时改多个参数。学习率方面backbone 和 Transformer 部分建议分开设置。backbone 如果使用 ImageNet 预训练权重学习率通常要小一个数量级防止预训练特征被破坏。Transformer 部分初始化随机需要较大的学习率。5.2 分类与定位指标怎么看多任务模型的评估不能只看一个指标。图像级分类用 AUC、敏感性、特异性、F1 分数病灶定位用 mAP、IoU、召回率。乳腺X线诊断中敏感性的优先级通常高于特异性因为漏诊恶性病灶的代价远高于误报。下面的表格列出推荐使用的指标组合任务指标说明图像级分类AUC不依赖阈值适合评估模型排序能力图像级分类敏感性和特异性在固定阈值下评估需要结合临床场景确定阈值图像级分类F1处理类别不平衡时的综合评价病灶定位mAP0.5判断框位置是否大致正确病灶定位IoU 分布观察预测框和标注框的重合程度病灶定位每图假阳性数医学场景更关注误报率FROC 曲线适合这个目标验证时应把分类和定位放在同一个测试集上评估不能只报分类 AUC 或者只报 mAP。标题中的多任务工作之所以值得关注正是因为两个任务在同一个模型里互相影响单独评估任何一个都会掩盖真实表现。5.3 验证方法和预期输出训练完成后用测试集跑一段推理脚本输出结果应包含每个病例的图像级类别概率和每个病灶的边界框case_001.png image_logits: [0.03, 0.97] image_pred: malignant (prob0.97) detections: - classmalignant score0.88 box[320.5, 240.2, 180.1, 220.0] - classbenign score0.41 box[610.0, 500.0, 90.0, 80.0]验证时不能只看预测框是否覆盖病灶还要检查图像级分类错误的样本里病灶定位是否正确。如果分类错误但定位正确说明定位分支学得不错分类分支需要调整。定位错误的样本里分类是否正确。如果定位偏移但分类正确说明特征具备识别能力但框回归还不够精细。不同 BI-RADS 等级下的表现差异尤其要关注恶性程度高的样本是否被优先检出。6. 常见问题排查6.1 训练不收敛、loss 为 NaN现象训练刚开始几百步loss 直接变成 NaN或者 loss 长期不下降。可能原因和排查方式如下问题现象常见原因检查方式处理建议loss 为 NaN学习率过大查看训练日志前几十步的 loss 变化将学习率降低 10 倍重试loss 为 NaN输入图像包含异常像素值检查图像像素范围确认是否归一化统一归一化到 [0, 1]剔除全黑或全白图像loss 不下降匹配阶段失败分类分支没学到有效匹配检查匹配后的正样本数量是否为 0给定位损失更高权重或减少 num_queriesloss 不下降backbone 学习率过高导致预训练特征被破坏分别查看 backbone 和 transformer 的梯度将 backbone 学习率调为 transformer 的十分之一DETR 类模型对学习率很敏感这是排错时最优先怀疑的方向。另外乳腺X线图像多为 16 位灰度图转成 8 位 PNG 时如果不做窗口化处理大量信息会被压缩模型可能学不到有效特征表现为 loss 一直在高位波动。6.2 定位框偏移或漏检现象分类指标明显较好但预测框和标注框重叠率很低或者部分病灶完全没有框输出。排查路径检查标注框坐标是否和图像尺寸匹配。有的数据集标注坐标基于原始 DICOM 尺寸而训练时做了裁剪或缩放坐标没有同步转换就会导致系统性偏移。检查 num_queries 是否过少。乳腺图像中多病灶、多类型并存的情况虽然不多但如果 query 数量小于最大病灶数必然漏检。检查损失权重。L1 和 GIoU 权重偏低时模型会把更多精力放在分类上框回归精度下降。检查解码器输出是否经过了 sigmoid 归一化。DETR 输出框坐标通常归一化到 [0, 1]如果后续转回像素坐标时乘错了图像宽高也会出现框位置和实际不符。6.3 类别不平衡和样本不足乳腺X线数据集中正常样本通常远多于恶性病灶恶性病灶又远多于良性病灶。直接训练会造成模型倾向于把所有图像预测为正常病灶预测的召回率很低。处理方式包括图像级分类使用加权交叉熵让少数类样本获得更高梯度权重。病灶检测使用 focal loss 替代普通交叉熵缓解正负样本不平衡。对恶性病灶样本做离线复制增强而不是简单在线随机增强。如果数据集很小考虑先在公开数据集上预训练 DETR 检测任务再迁移到目标数据集微调。7. 从实验到生产医学影像落地的额外考虑7.1 数据合规与标注质量医学影像模型和普通视觉模型最大的区别在于数据和责任。乳腺X线数据属于个人健康数据使用前必须确认数据来源合法、脱敏完整、符合所在地区的数据保护规定。公开数据集的许可协议也要注意部分数据集只允许科研用途不允许商用。标注质量直接影响模型上限。建议在训练前对标注做一致性检查同一张图像由多名医生标注时坐标是否一致分类标签是否冲突。如果标注之间差异过大需要先修正标注再开始训练否则模型学到的是标注噪声。7.2 推理性能与部署DETR 在训练和推理上比 YOLO 这类轻量检测器重医学影像场景需要权衡图像尺寸大Transformer 的注意力计算量随特征图尺寸平方增长。推理时要控制 batch size避免显存溢出。模型导出为 ONNX 或 TensorRT 时动态尺寸和多层 Transformer 解码循环需要额外处理。如果部署端算力有限可以先用 ResNet-50 加较小 num_queries 的配置上线后续再逐步替换为更强 backbone。不要为了追求指标直接上最重的模型部署稳定性、延迟和显存占用同样是产品指标。7.3 多任务权衡和回归监控多任务模型的收益不是免费的。当分类任务和定位任务在训练中出现对抗时模型可能会在某个任务上退步。训练时应保存每个 epoch 的验证结果绘制两个任务指标的曲线观察是否存在某一时刻分类指标上升而定位指标下降的情况。生产环境还需要建立持续的指标监控机制。模型上线后采集新的预测结果定期抽样评估分类 AUC 和定位 IoU对比历史基线。如果发现指标漂移要有数据回流和重新训练的流程而不是部署完就不再关注。8. 可复用清单与扩展方向8.1 复现前检查清单无论是复现标题中的论文思路还是在自己项目里搭建多任务 DETR都可以先过一遍下面的清单[ ] 确认 PyTorch、CUDA、MMDetection 或 DETR 代码仓库的版本相互兼容。[ ] 确认数据集的许可协议允许当前用途。[ ] 完成 DICOM 到 PNG 的转换并统一像素值范围。[ ] 检查标注框坐标是否与转换后的图像尺寸匹配。[ ] 划分训练集、验证集和测试集保证同一病例的图像不会跨集合出现。[ ] 先用 ResNet-50 跑通完整训练链路保存基线模型。[ ] 配置分类和定位的损失权重记录每个实验的超参数。[ ] 训练完成后同时评估图像级分类指标和病灶定位指标。[ ] 检查典型错误样本判断分类分支和定位分支各自的瓶颈。[ ] 确认部署环境支持模型的推理尺寸和推理延迟要求。8.2 下一步可以尝试的方向在验证了 backbone 替换带来的收益之后可以继续尝试以下方向用 Deformable DETR 替换原始 DETR观察收敛速度和精度变化。引入多尺度特征在 backbone 的不同阶段同时提取病灶特征改善小病灶漏检问题。把病灶分割任务加入多任务框架输出像素级掩膜为医生提供更直观的参考。使用自监督预训练或 SimMIM 等方法在大量未标注乳腺X线图像上预训练 backbone缓解标注样本不足的问题。在图像级分类分支中加入 BI-RADS 分级的多分类输出而不是只做正常和恶性二分类。多任务 DETR 在乳腺X线分类和病灶定位上的价值在于它用一个模型同时完成两个临床任务既有全局判断又有局部定位。主干网络的选择决定了这个模型的特征质量而训练策略、损失权重和数据质量决定了最终能否把特征能力转化为临床可用的指标。复现时建议从最小工程开始先把流程跑通再逐步换更强的 backbone、引入更精细的多任务头每一步都保留实验结果对照这样得到结论才可靠。