Banana Vision Studio入门指南:快速掌握4种工业美学方案

核心内容摘要

5个维度全方位解析:颠覆式开源工具Bypass Paywalls Clean如何突破信息壁垒
RMBG-2.0与Cursor编辑器配合使用的开发技巧

导师又让重写?一键生成论文工具,千笔AI VS 知文AI,研究生专属!

前言本文介绍了一种在YOLO26目标检测模型中引入高效解码器模块EMCAD的创新方法以提升模型在资源受限场景下的性能与效率。

EMCAD由多个模块构成其中核心的EUCB高效上卷积块通过上采样、深度可分离卷积、激活归一化和通道调整等操作兼顾了特征质量与计算成本。

实验结果显示该模块在显著减少参数与FLOPs的同时仍具备优异性能。

文章还提供了完整的YOLO26模型集成流程、配置和训练实战。

文章目录 YOLO26改进大全卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总专栏链接: YOLO26改进专栏文章目录前言介绍摘要文章链接基本原理

EUCB 的核心功能

EUCB 的结构与工作流程

EUCB 的核心优势核心代码YOLO26引入代码注册步骤1:步骤2配置yolo26-EUCB.yaml实验脚本结果介绍摘要在医学图像分割中设计一种兼具高效性与高性能的解码机制尤为关键尤其是在计算资源受限的场景下。

针对传统解码器计算成本高的问题本文提出了一种新型高效多尺度卷积注意力解码器——EMCAD旨在在保证模型精度的同时显著降低计算开销。

EMCAD通过引入多尺度深度卷积块显著增强特征表达能力并结合通道注意力、空间注意力与大核门控注意力机制有效捕捉复杂空间关系并聚焦关键区域。

借助分组卷积与深度卷积的高效结构EMCAD在搭配标准编码器时仅需

91M参数和

381G FLOPs具备良好的扩展性和部署友好性。

在6类医学图像分割任务的12个公开数据集上EMCAD实现了当前先进水平SOTA的性能同时参数量减少

7

4%FLOPs降低

8

3%。

此外其对不同编码器的良好适配性和任务通用性进一步验证了其在医学图像分析领域的应用潜力。

项目开源地址https://github.com/SLDGroup/EMCAD文章链接论文地址论文地址代码地址代码地址基本原理在本文提出的 EMCADEfficient Multi-scale Convolutional Attention Decoder中EUCBEfficient Up-Convolution Block高效上卷积块是解码器实现特征图尺度对齐与高效上采样的核心组件旨在在提升特征分辨率的同时最大程度降低计算开销。

EUCB 的核心功能EUCB 主要负责逐步放大当前阶段的特征图以实现与跳跃连接Skip Connection中高分辨率特征图的尺寸匹配从而促进不同尺度特征的有效融合。

在医学图像分割任务中编码器通常输出多个尺度的特征图如 1/

1/

1/16 等解码器需通过上采样将其逐层还原。

EUCB 正是为此设计兼顾特征质量与计算效率规避了传统上卷积结构高计算量的问题。

EUCB 的结构与工作流程EUCB 由四个关键步骤组成其整体流程可概括为上采样 → 特征增强 → 通道调整上采样UpSampling使用缩放因子为 2 的上采样操作如双线性插值将低分辨率特征图放大一倍实现初步尺度对齐。

特征增强Depth-wise Convolution引入 3×3 深度可分离卷积替代传统卷积显著降低参数量与 FLOPs同时增强局部空间细节表达能力。

归一化与激活BN ReLU应用批归一化和 ReLU 激活函数提高训练稳定性和模型非线性表达能力。

通道调整1×1 卷积通过 1×1 卷积调整通道维度确保后续特征融合时维度一致。

EUCB 的核心优势高效计算借助深度可分离卷积EUCB 显著降低计算成本在保持特征增强能力的同时大幅减少参数与 FLOPs适用于嵌入式与边缘设备部署。

特征质量保障上采样后结合局部增强与归一化激活有效弥补特征模糊问题保持语义与空间信息完整。

结构通用性强EUCB 模块结构简洁适配性强能够灵活集成至多种 U-Net 变体与编码器架构支持不同输入分辨率的医学图像分割任务。

核心代码classEUCB(nn.Module):def__init__(self,in_channels,out_channels,kernel_size3,stride1,activationrelu):super(EUCB,self).__init__()self.in_channelsin_channels self.out_channelsout_channels self.up_dwcnn.Sequential(nn.Upsample(scale_factor

,nn.Conv2d(self.in_channels,self.in_channels,kernel_sizekernel_size,stridestride,paddingkernel_size//2,groupsself.in_channels,biasFalse),nn.BatchNorm2d(self.in_channels),act_layer(activation,inplaceTrue))self.pwcnn.Sequential(nn.Conv2d(self.in_channels,self.out_channels,kernel_size1,stride1,padding0,biasTrue))self.init_weights(normal)definit_weights(self,scheme):named_apply(partial(_init_weights,schemescheme),self)defforward(self,x):xself.up_dwc(x)xchannel_shuffle(x,self.in_channels)xself.pwc(x)returnxYOLO26引入代码在根目录下的ultralytics/nn/目录新建一个sample目录然后新建一个以EUCB为文件名的py文件 把代码拷贝进去。

importtorchimporttorch.nnasnndefautopad(k,pNone,d

:# kernel, padding, dilationPad to same shape outputs.ifd1:kd*(k-

1ifisinstance(k,int)else[d*(x-

1forxink]# actual kernel-sizeifpisNone:pk//2ifisinstance(k,int)else[x//2forxink]# auto-padreturnpclassConv(nn.Module):Standard convolution with args(ch_in, ch_out, kernel, stride, padding, groups, dilation, activation).default_actnn.SiLU()# default activationdef__init__(self,c1,c2,k1,s1,pNone,g1,d1,actTrue):Initialize Conv layer with given arguments including activation.super().__init__()self.convnn.Conv2d(c1,c2,k,s,autopad(k,p,d),groupsg,dilationd,biasFalse)self.bnnn.BatchNorm2d(c

self.actself.default_actifactisTrueelseactifisinstance(act,nn.Module)elsenn.Identity()defforward(self,x):Apply convolution, batch normalization and activation to input tensor.returnself.act(self.bn(self.conv(x)))defforward_fuse(self,x):Perform transposed convolution of 2D data.returnself.act(self.conv(x))# Efficient up-convolution block (EUCB)classEUCB(nn.Module):def__init__(self,in_channels,kernel_size3,stride

:super(EUCB,self).__init__()self.in_channelsin_channels self.out_channelsin_channels self.up_dwcnn.Sequential(nn.Upsample(scale_factor

,Conv(self.in_channels,self.in_channels,kernel_size,gself.in_channels,sstride))self.pwcnn.Sequential(nn.Conv2d(self.in_channels,self.out_channels,kernel_size1,stride1,padding0,biasTrue))defforward(self,x):xself.up_dwc(x)xself.channel_shuffle(x,self.in_channels)xself.pwc(x)returnxdefchannel_shuffle(self,x,groups):batchsize,num_channels,height,widthx.data.size()channels_per_groupnum_channels//groups xx.view(batchsize,groups,channels_per_group,height,width)xtorch.transpose(x,1,

.contiguous()xx.view(batchsize,-1,height,width)returnx注册在ultralytics/nn/tasks.py中进行如下操作步骤1:fromultralytics.nn.sample.EUCBimportEUCB步骤2修改def parse_model(d, ch, verboseTrue):elifmisEUCB:c2ch[f]args[c2,*args]配置yolo26-EUCB.yamlultralytics/cfg/models/26/yolo26-EUCB.yaml# Ultralytics AGPL-

0 License - https://ultralytics.com/license# Ultralytics YOLO26 object detection model with P3/8 - P5/32 outputs# Model docs: https://docs.ultralytics.com/models/yolo26# Task docs: https://docs.ultralytics.com/tasks/detect# Parametersnc:80# number of classesend2end:True# whether to use end-to-end modereg_max:1# DFL binsscales:# model compound scaling constants, i.e. modelyolo26n.yaml will call yolo

yaml with scale n# [depth, width, max_channels]n:[

50,

25,1024]# summary: 260 layers, 2,572,280 parameters, 2,572,280 gradients,

1 GFLOPss:[

50,

50,1024]# summary: 260 layers, 10,009,784 parameters, 10,009,784 gradients,

2

8 GFLOPsm:[

50,

00,512]# summary: 280 layers, 21,896,248 parameters, 21,896,248 gradients,

7

4 GFLOPsl:[

00,

00,512]# summary: 392 layers, 26,299,704 parameters, 26,299,704 gradients,

9

8 GFLOPsx:[

00,

50,512]# summary: 392 layers, 58,993,368 parameters, 58,993,368 gradients,

2

5 GFLOPs# YOLO26n 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,

25]]-[-1,1,Conv,[256,3,2]]# 3-P3/8-[-1,2,C3k2,[512,False,

25]]-[-1,1,Conv,[512,3,2]]# 5-P4/16-[-1,2,C3k2,[512,True]]-[-1,1,Conv,[1024,3,2]]# 7-P5/32-[-1,2,C3k2,[1024,True]]-[-1,1,SPPF,[1024,5,3,True]]# 9-[-1,2,C2PSA,[1024]]# 10# YOLO26n headhead:-[-1,1,EUCB,[]]-[[-1,6],1,Concat,[1]]# cat backbone P4-[-1,2,C3k2,[512,True]]# 13-[-1,1,EUCB,[]]-[[-1,4],1,Concat,[1]]# cat backbone P3-[-1,2,C3k2,[256,True]]# 16 (P3/8-small)-[-1,1,Conv,[256,3,2]]-[[-1,13],1,Concat,[1]]# cat head P4-[-1,2,C3k2,[512,True]]# 19 (P4/16-medium)-[-1,1,Conv,[512,3,2]]-[[-1,10],1,Concat,[1]]# cat head P5-[-1,1,C3k2,[1024,True,

5,True]]# 22 (P5/32-large)-[[16,19,22],1,Detect,[nc]]# Detect(P3, P4, P

实验脚本importwarnings warnings.filterwarnings(ignore)fromultralyticsimportYOLOif__name____main__:# 修改为自己的配置文件地址modelYOLO(./ultralytics/cfg/models/26/yolo26-EUCB.yaml)# 修改为自己的数据集地址model.train(data./ultralytics/cfg/datasets/coco

yaml,cacheFalse,imgsz640,epochs10,single_clsFalse,# 是否是单类别检测batch8,close_mosaic10,workers0,optimizerMuSGD,# optimizerSGD,ampFalse,projectruns/train,nameyolo26-EUCB,)结果

抖漫动漫免费版-抖漫动漫免费版应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123