在处理乳腺癌组织病理图像时,现有方法在特征提取和融合方面存在不足。一方面,许多单超分辨率方法只有固定的感受野,难以捕捉多尺度特征,无法很好地解决不同放大倍数下低分辨率图像带来的问题。另一方面,在图像分类任务中,虽然有一些方法考虑了多尺度特征提取,但在特征融合方面存在缺陷,如 SSCA 仅拼接多尺度特征而未充分融合。因此,需要设计一种新的模块来有效融合高分辨率和低分辨率特征,提升模型对乳腺癌组织病理图像分类的性能,。
上面是原模型,下面是改进模型

1. 跨尺度选择性融合模块CSFblock介绍
CSFblock 的设计基于多尺度特征融合的理论。它认为不同分辨率的特征都包含着对图像分类有价值的信息,通过将高分辨率特征和经过上采样处理后的低分辨率特征进行融合,可以充分利用这些信息。具体来说,利用全局平均池化(GAP)获取特征的全局信息,再通过全连接层生成紧凑特征向量来引导特征选择过程,最终通过注意力机制对不同分辨率的特征进行加权融合,使得模型能够更好地捕捉图像的多尺度特征,从而提高分类的准确性。
从提供的图片来看,CSFblock模块主要包含以下几个部分:
MCA 模块由三个并行分支组成,每个分支负责不同维度的注意力建模。在信息传播过程中,输入特征图F∈RC×H×W分别进入三个分支,经过旋转、挤压变换、激励变换等操作生成不同维度的注意力权重,对原特征图进行增强,最后通过简单平均聚合三个分支的输出得到最终精炼特征图。
双向输入:CSFblock 有两个输入方向,分别接收高分辨率特征和低分辨率特征。这是因为在处理乳腺癌组织病理图像时,不同分辨率的特征都包含着重要信息,高分辨率特征包含更多细节,低分辨率特征能反映整体结构,两者结合有助于提升分类准确性。
上采样统一维度:为了让低分辨率特征和高分辨率特征能更好地融合,先对低分辨率特征进行上采样操作,使其在尺寸和维度上与高分辨率特征保持一致。这一步就像是把小拼图放大到和大拼图一样的尺寸,方便后续拼接。
初步融合:将经过上采样的低分辨率特征和高分辨率特征进行相加,实现初步的特征融合,得到融合后的特征。
获取全局信息:对初步融合后的特征,沿着通道维度进行全局平均池化操作,得到关于这些特征的全局信息。这一步相当于对整个拼图的内容做一个概括总结,方便后续处理。
生成引导向量与权重向量:把全局信息输入到全连接层,生成一个紧凑的特征向量,这个向量会引导后续的特征选择过程。然后,通过另外两个全连接层,将这个引导向量转化为两个权重向量。
最终加权融合:对这两个权重向量进行 softmax 操作,让它们的值变成可以用于加权的概率形式。最后,根据这些权重,对高分辨率特征和上采样后的低分辨率特征进行加权融合,得到最终用于分类的融合特征图。
2. YOLOv11与多维协同注意力机制MCA的结合
将 YOLOv11 中 neck 层的 contact 替换,能改进特征融合方式。它能更精细地融合不同尺度特征,增强模型对多尺度目标的感知,提升检测精度,还能减少过拟合,提高模型泛化能力,使其在复杂场景下表现更优。
3. 跨尺度选择性融合模块CSFblock代码部分
视频讲解:
YOLOv8_improve/YOLOv11.md at master · tgf123/YOLOv8_improve · GitHub
YOLOv11模型改进讲解,教您如何修改YOLOv11_哔哩哔哩_bilibili
YOLOv11全部代码,现有几十种改进机制。
4. 跨尺度选择性融合模块CSFblock引入到YOLOv11中
第一: 将下面的核心代码复制到D:\model\yolov11\ultralytics\change_model路径下,如下图所示。
第二:在task.py中导入包
第三:在task.py中的模型配置部分下面代码
第四:将模型配置文件复制到YOLOV11.YAMY文件中
第五:运行成功
from sympy import falsefrom ultralytics.models import NAS, RTDETR, SAM, YOLO, FastSAM, YOLOWorldif __name__=="__main__":# 使用自己的YOLOv8.yamy文件搭建模型并加载预训练权重训练模型model = YOLO(r"E:\Part_time_job_orders\YOLO\YOLOv11\ultralytics\cfg\models\11\yolo11_CSFblock.yamy")\.load(r'E:\Part_time_job_orders\YOLO\YOLOv11\yolo11n.pt') # build from YAML and transfer weightsresults = model.train(data=r'E:\Part_time_job_orders\YOLO\YOLOv11\ultralytics\cfg\datasets\VOC_my.yaml',epochs=300,imgsz=640,batch=64,# cache = False,# single_cls = False, # 是否是单类别检测# workers = 0,# resume=r'D:/model/yolov8/runs/detect/train/weights/last.pt',amp = True)