YOLO11语义分割注意力机制改进:全网首发--使用CASAB多层注入增强多尺度特征筛选(方案3)
1. 工程简介 本工程基于 Ultralytics 框架扩展面向语义分割与 YOLO 系列模型改进实验。核心特点是通过切换yaml配置文件即可快速完成不同网络结构的训练、对比与验证无需为每个模型单独编写训练脚本。当前已支持的主要模型家族 语义分割模型UNet、UNet、DeepLabV3、DPT、FPN、PSPNet、MAnet、PAN、Linknet、UPerNet、SegformerYOLO 系列模型YOLOv8、YOLOv10、YOLO11、YOLO12、YOLO262. 本工程的优势 ✨只需替换ultralytics/cfg/models/...下的模型yaml就可以在相同数据集、相同训练入口、相同评估流程下完成不同结构的对比实验。本框架最大的特点是支持通过切换 YAML 快速完成不同结构的对比实验。3. 模块信息卡片 项目内容YAML 文件yolo11/yolo11-CASAB-3.yaml模块名称CASAB模型系列YOLO11变体编号方案3原始代码位置ultralytics/nn/extra_modules/attention/CASAB.py当前接入思路在P4、P3、回流P4、P5多个关键节点连续插入CASAB4. 论文介绍 4.1 文章地址 https://openaccess.thecvf.com/content/CVPR2025/papers/Wazir_Rethinking_Decoder_Design_Improving_Biomarker_Segmentation_Using_Depth-to-Space_Restoration_and_CVPR_2025_paper.pdf4.2 论文简介 对应论文Rethinking Decoder Design: Improving Biomarker Segmentation Using Depth-to-Space Restoration and Residual Linear Attention。这篇论文强调分割网络的上限并不只取决于编码器强不强解码阶段如何恢复空间结构、如何整合不同层语义、如何突出关键区域同样会直接影响最终分割质量。作者因此把研究重点放在解码器重构上希望在细节恢复和上下文融合之间找到更高效的平衡。论文通过改进空间恢复方式并结合更有效的注意力机制提升了局部结构表达、边界质量和多尺度信息利用效率。它并不是单独做一个注意力块而是从整个解码器信息流角度重新思考特征恢复问题。⚠️ 说明当前工程中的CASAB是从这类设计中抽取出的联合注意力子模块并非整篇论文完整解码器的逐层还原。对于本工程而言更重要的是把这种模块化注意力接入 YOLO再通过切换 YAML 快速比较“单层接入”和“多层接入”的实验效果。4.3 模块核心思想 ✨CASAB可以在多个尺度节点重复使用对不同阶段的特征分别做通道与空间双重筛选。当它被布置到整条多尺度传播链路中时更适合观察累计增强效果。在本工程里这种设计非常适合做结构消融和接入位置对比。5. 改进步骤 ️步骤1定位并加入原始模块代码 这一步先确认CASAB的原始实现位置再把对应代码加入当前工程作为后续模块导入、tasks.py注册和 YAML 调用的基础。原始代码位置ultralytics/nn/extra_modules/attention/CASAB.py当前模块类别attention本步骤作用将CASAB联合注意力模块加入注意力模块目录供 YOLO11 语义分割结构直接调用importos,sys sys.path.append(os.path.dirname(os.path.abspath(__file__))/../../../..)importwarnings warnings.filterwarnings(ignore)fromcalflopsimportcalculate_flopsimporttorchimporttorch.nnasnnimporttorch.nn.functionalasFfromultralytics.nn.modules.convimportConv,DSConvclassCASAB(nn.Module):def__init__(self,in_channels,reduction_ratio16):super(CASAB,self).__init__()self.global_avg_poolnn.AdaptiveAvgPool2d(1)self.global_max_poolnn.AdaptiveMaxPool2d(1)self.fc1nn.Linear(in_channels,in_channels//reduction_ratio)self.fc2nn.Linear(in_channels//reduction_ratio,in_channels)self.spatial_convnn.Conv2d(4,1,kernel_size7,padding3,groups1)self.swishnn.SiLU()self.sigmoidnn.Sigmoid()self.feature_refineDSConv(in_channels,in_channels,actnn.LeakyReLU)defchannel_attention(self,x):b,c,h,wx.size()gapself.global_avg_pool(x).view(b,c)gmpself.global_max_pool(x).view(b,c)combinedgapgmp channel_attself.fc1(combined)channel_attself.swish(channel_att)channel_attself.fc2(channel_att)channel_attself.sigmoid(channel_att)channel_attchannel_att.view(b,c,1,1)returnx*channel_attdefspatial_attention(self,x):mean_pooltorch.mean(x,dim1,keepdimTrue)max_pool,_torch.max(x,dim1,keepdimTrue)min_pool,_torch.min(x,dim1,keepdimTrue)sum_pooltorch.sum(x,dim1,keepdimTrue)pooled_featurestorch.cat([mean_pool,max_pool,min_pool,sum_pool],dim1)spatial_attself.spatial_conv(pooled_features)spatial_attself.swish(spatial_att)spatial_attself.sigmoid(spatial_att)returnx*spatial_attdefforward(self,x):x_refinedself.feature_refine(x)x_channelself.channel_attention(x_refined)x_spatialself.spatial_attention(x_refined)outputx_channelx_spatialreturnoutputif__name____main__:RED,GREEN,BLUE,YELLOW,ORANGE,RESET\033[91m,\033[92m,\033[94m,\033[93m,\033[38;5;208m,\033[0mdevicetorch.device(cuda)iftorch.cuda.is_available()elsetorch.device(cpu)batch_size,channel,height,width1,16,32,32inputstorch.randn((batch_size,channel,height,width)).to(device)moduleCASAB(channel).to(device)outputsmodule(inputs)print(GREENfinputs.size:{inputs.size()}outputs.size:{outputs.size()}RESET)print(ORANGE)flops,macs,_calculate_flops(modelmodule,input_shape(batch_size,channel,height,width),output_as_stringTrue,output_precision4,print_detailedTrue,)print(RESET)步骤2在聚合导出文件中导入模块 需要在ultralytics/nn/extra_modules/__init__.py中补充导入让后续模块注册和 YAML 解析都能正确识别CASAB。from.attention.CASABimportCASAB步骤3在ultralytics/nn/tasks.py中注册模块 ⚙️需要把该模块加入注意力模块注册集合这样parse_model()在解析 YAML 时才能正确实例化CASAB。attention_modulesfrozenset({extra_modules.ACA,extra_modules.ACAB,extra_modules.CoordAtt,extra_modules.CASAB,extra_modules.ContrastDrivenFeatureAggregation,extra_modules.DeformableLKA,extra_modules.DHPF,extra_modules.EMA,extra_modules.FSA,extra_modules.KSFA,extra_modules.LSKBlock,extra_modules.MCA,extra_modules.MLCA,extra_modules.MultiSEAM,extra_modules.SimAM,})步骤4新增或修改 YAML 配置文件 当前方案对应的 YAML 位于ultralytics/cfg/models/improve/attention/yolo11/目录下。方案3的特点是在P4、P3、回流P4与P5多个节点都插入CASAB属于更激进的多层注入方式适合验证该联合注意力在整条多尺度传播链上的累计增强作用。# Ultralytics AGPL-3.0 License - https://ultralytics.com/license# Ultralytics YOLO11 object detection model with P3/8 - P5/32 outputs# Model docs: https://docs.ultralytics.com/models/yolo11# Task docs: https://docs.ultralytics.com/tasks/detect# Parametersnc:80# number of classesscales:# model compound scaling constants, i.e. modelyolo11n.yaml will call yolo11.yaml with scale n# [depth, width, max_channels]n:[0.50,0.25,1024]# summary: 181 layers, 2624080 parameters, 2624064 gradients, 6.6 GFLOPss:[0.50,0.50,1024]# summary: 181 layers, 9458752 parameters, 9458736 gradients, 21.7 GFLOPsm:[0.50,1.00,512]# summary: 231 layers, 20114688 parameters, 20114672 gradients, 68.5 GFLOPsl:[1.00,1.00,512]# summary: 357 layers, 25372160 parameters, 25372144 gradients, 87.6 GFLOPsx:[1.00,1.50,512]# summary: 357 layers, 56966176 parameters, 56966160 gradients, 196.0 GFLOPs# YOLO11n backbonebackbone:# [from, repeats, module, args]-[-1,1,Conv,[64,3,2]]# 0-P1/2-[-1,1,Conv,[128,3,2]]# 1-P2/4-[-1,2,C3k2,[256,False,0.25]]# 2-P2/4-[-1,1,Conv,[256,3,2]]# 3-P3/8-[-1,2,C3k2,[512,False,0.25]]# 4-P3/8-[-1,1,Conv,[512,3,2]]# 5-P4/16-[-1,2,C3k2,[512,True]]# 6-P4/16-[-1,1,Conv,[1024,3,2]]# 7-P5/32-[-1,2,C3k2,[1024,True]]# 8-P5/32-[-1,1,SPPF,[1024,5]]# 9-P5/32-[-1,2,C2PSA,[1024]]# 10-P5/32# YOLO11n headhead:-[-1,1,nn.Upsample,[None,2,nearest]]# 11-P4/16-[[-1,6],1,Concat,[1]]# 12-P4/16-[-1,1,CASAB,[]]# 13-P4/16-[-1,2,C3k2,[512,False]]# 14-P4/16-[-1,1,nn.Upsample,[None,2,nearest]]# 15-P3/8-[[-1,4],1,Concat,[1]]# 16-P3/8-[-1,1,CASAB,[]]# 17-P3/8-[-1,2,C3k2,[256,False]]# 18-P3/8-[-1,1,Conv,[256,3,2]]# 19-P4/16-[[-1,14],1,Concat,[1]]# 20-P4/16-[-1,1,CASAB,[]]# 21-P4/16-[-1,2,C3k2,[512,False]]# 22-P4/16-[-1,1,Conv,[512,3,2]]# 23-P5/32-[[-1,10],1,Concat,[1]]# 24-P5/32-[-1,1,CASAB,[]]# 25-P5/32-[-1,2,C3k2,[1024,True]]# 26-P5/32-[[18,22,26],1,SemanticSegmentHead,[nc]]# SemanticSegmentHead(P3, P4, P5)步骤5开始训练 # -*- coding: utf-8 -*- Auth AICurator File train.py importwarnings warnings.filterwarnings(ignore)fromultralyticsimportYOLOif__name____main__:modelYOLO(modelrG:\improve\segment\ultralytics-main\ultralytics\cfg\models\improve\attention\yolo11\yolo11-CASAB-3.yaml)# model.load()model.train(datardataset\data.yaml,imgsz640,epochs50,batch4,workers0,device0,optimizerSGD,close_mosaic10,resumeFalse,projectruns/train,nameexp,single_clsFalse,cacheFalse,)6. 总结 这份文档对应的是yolo11-CASAB-3这套配置重点是通过多层多点插入CASAB系统评估该联合注意力模块对多尺度特征传播链路的增强作用。你可以直接切换 YAML把它和方案1、方案2放到同一训练入口下做结构消融与横向对比。订阅专栏后添加博主微信领取完整代码
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2561226.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!