网站 关键词库wordpress超级留言板路径

张小明 2025/12/28 22:45:00
网站 关键词库,wordpress超级留言板路径,4昌平区网站建设,注册实名认证前言 本文介绍了分层多头注意力驱动的Transformer模型HINT中的核心模块HMHA#xff0c;并将其集成到YOLOv11中。传统多头注意力机制#xff08;MHA#xff09;存在冗余问题#xff0c;HMHA通过“通道重排序分层子空间划分”#xff0c;使注意力头在不同子空间学习#x…前言本文介绍了分层多头注意力驱动的Transformer模型HINT中的核心模块HMHA并将其集成到YOLOv11中。传统多头注意力机制MHA存在冗余问题HMHA通过“通道重排序分层子空间划分”使注意力头在不同子空间学习避免冗余提取多样化上下文特征。其流程包括通道重排序、分层子空间划分与注意力计算、特征聚合三步。我们将HMHA集成到YOLOv11构建C3k2_HMHA模块经注册和配置yaml文件后进行实验以验证其在目标检测任务中的有效性。文章目录 YOLOv11改进大全卷积层、轻量化、注意力机制、损失函数、Backbone、SPPF、Neck、检测头全方位优化汇总专栏链接: YOLOv11改进专栏介绍摘要Transformer-based 方法在图像修复任务中受到了广泛关注其中核心组件——多头注意力机制Multi-Head Attention, MHA在提取多样特征和恢复高质量图像方面发挥了关键作用。在 MHA 中各个注意力头在统一划分的子空间上独立计算这种方式会引发冗余问题从而影响模型的最终表现。为了解决这一问题本文提出了一种改进的多头注意力机制通过引入多样化的学习器和头之间的多种交互方式构建了一个分层多头注意力驱动的 Transformer 模型命名为HINT用于图像修复任务。HINT 包含两个核心模块分层多头注意力模块HMHA和查询-键缓存更新模块QKCU旨在从根本上缓解传统 MHA 中的冗余问题。具体而言HMHA 通过使注意力头在不同规模、包含不同信息的子空间中进行学习提取更加多样的上下文特征。而 QKCU 模块则包括层内与层间的更新机制进一步通过增强注意力头之间的交互有效降低冗余。我们在图像低光增强、去雾、去雪、去噪和去雨这五类图像修复任务中的12 个基准数据集上进行了大量实验结果充分证明了 HINT 的优越性。源代码将开放获取地址为https://github.com/joshyZhou/HINT。创新HMHA 是 HINT 模型的核心模块核心目标是解决传统 MHA多头注意力的冗余问题——传统 MHA 中所有注意力头从尺寸统一、信息相似的子空间学习导致多头聚焦同一区域、遗漏退化区域修复最终影响图像恢复质量。其核心设计思路是通过“通道重排序分层子空间划分”让每个注意力头学习差异化、独立的上下文特征同时保持高效计算。一、核心设计背景与目标1. 传统 MHA 的核心缺陷传统 MHA 对输入特征的通道维度进行均匀划分例如将总通道数 C 平均分为 h 份每份尺寸为 C/h所有注意力头在尺寸相同、信息重叠的子空间中独立计算注意力。这种设计导致注意力头倾向于关注图像中相同的“易修复区域”如明亮、清晰区域造成计算冗余忽略退化严重的区域如暗角、雾气覆盖区域导致修复不完整、细节丢失。2. HMHA 的核心目标让每个注意力头学习独立且多样化的上下文特征避免多头冗余通过分层子空间设计覆盖不同尺度、不同语义的特征信息如细节纹理、全局结构保持与传统 MHA 相当的计算效率不显著增加模型复杂度。二、关键技术步骤与实现细节HMHA 的工作流程可分为“通道重排序”和“分层子空间划分与注意力计算”两步具体如下1. 步骤1通道重排序Reranking—— 确保子空间独立性传统 MHA 直接均匀划分通道导致子空间信息重叠。HMHA 先对通道进行“相似度重排序”核心目的是让相似信息的通道聚集不同子空间的信息差异最大化排序依据基于皮尔逊相关系数Pearson Correlation计算通道间的相似度操作逻辑将相似度高的通道归为同一组相似度低的通道分配到不同组确保后续划分的每个子空间包含“独特语义信息”如部分通道聚焦纹理、部分聚焦亮度核心作用从源头减少子空间信息冗余为每个注意力头分配“专属任务”。2. 步骤2分层子空间划分—— 差异化头分配重排序后HMHA 对通道进行非均匀的分层划分而非传统 MHA 的均匀划分划分规则将总通道数 C 划分为 h 个不同尺寸的子空间即 ( C [C_1, C_2, …, C_h] )且满足 ( C_1 ≤ C_2 ≤ … ≤ C_h )例如 4 个注意力头的子空间尺寸比例为 [1,2,2,3]头与子空间映射每个注意力头独占一个子空间在自身子空间内独立执行“缩放点积注意力”Scaled Dot-Product Attention数学表达给定归一化输入特征 ( X \in \mathbb{R}^{H×W×C} )H高度、W宽度、C通道数第 i 个注意力头的计算为H i A t t e n t i o n ( X W Q i , X W K i , X W V i ) H_i Attention(X W_Q^i, X W_K^i, X W_V^i)Hi​Attention(XWQi​,XWKi​,XWVi​)其中W Q i ∈ R C × C i W_Q^i \in \mathbb{R}^{C×C_i}WQi​∈RC×Ci​、W K i ∈ R C × C i W_K^i \in \mathbb{R}^{C×C_i}WKi​∈RC×Ci​、W V i ∈ R C × C i W_V^i \in \mathbb{R}^{C×C_i}WVi​∈RC×Ci​是第 i 个头的查询Q、键K、值V投影矩阵维度随子空间尺寸C i C_iCi​自适应调整A t t e n t i o n ( ⋅ ) Attention(\cdot)Attention(⋅)为标准缩放点积注意力即A t t e n t i o n ( Q , K , V ) S o f t m a x ( Q K T C i ) V Attention(Q,K,V) Softmax(\frac{QK^T}{\sqrt{C_i}})VAttention(Q,K,V)Softmax(Ci​​QKT​)V分母为子空间尺寸的平方根确保梯度稳定。3. 步骤3特征聚合—— 整合多样化特征所有注意力头计算完成后通过“拼接Concat 线性投影Projection”整合所有头的输出得到最终的 HMHA 特征H M H A ( X ) C o n c a t ( H 1 , H 2 , . . . , H h ) W p HMHA(X) Concat(H_1, H_2, ..., H_h) W_pHMHA(X)Concat(H1​,H2​,...,Hh​)Wp​其中W p ∈ R ( C 1 C 2 . . . C h ) × C W_p \in \mathbb{R}^{(C_1C_2...C_h)×C}Wp​∈R(C1​C2​...Ch​)×C是输出投影矩阵将拼接后的特征映射回原始通道维度 C确保与后续网络层兼容。文章链接论文地址论文地址代码地址代码地址基本原理核心代码classHMHA(nn.Module):def__init__(self,dim,num_heads8,biasFalse):super(HMHA,self).__init__()self.num_headsnum_heads self.temperaturenn.Parameter(torch.ones(4,1,1))self.qkvnn.Conv2d(dim,dim*3,kernel_size1,biasbias)self.qkv_dwconvnn.Conv2d(dim*3,dim*3,kernel_size3,stride1,padding1,groupsdim*3,biasbias)self.project_outnn.Conv2d(dim,dim,kernel_size1,biasbias)self.group[1,2,2,3]self.intra_modulatorIntra_CacheModulation(embed_dimdim)self.inter_modulator1Inter_CacheModulation(in_c1*dim//8)self.inter_modulator2Inter_CacheModulation(in_c2*dim//8)self.inter_modulator3Inter_CacheModulation(in_c2*dim//8)self.inter_modulator4Inter_CacheModulation(in_c3*dim//8)self.inter_modulators[self.inter_modulator1,self.inter_modulator2,self.inter_modulator3,self.inter_modulator4]self.regroupReGroup(self.group)self.dimdimdefforward(self,x):b,c,h,wx.shape qv_cacheNoneqkvself.qkv_dwconv(self.qkv(x))q,k,vqkv.chunk(3,dim1)qrearrange(q,b c h w - b c (h w))krearrange(k,b c h w - b c (h w))vrearrange(v,b c h w - b c (h w))qu,ke,vaself.regroup(q,k,v)attScore[]tmp_cache[]forindexinrange(len(self.group)):query_headqu[index]key_headke[index]query_headtorch.nn.functional.normalize(query_head,dim-1)key_headtorch.nn.functional.normalize(key_head,dim-1)attn(query_head key_head.transpose(-2,-1))*self.temperature[index,:,:]attnattn.softmax(dim-1)attScore.append(attn)# CxCt_cachequery_head.clone().detach()key_head.clone().detach()tmp_cache.append(t_cache)tmp_cachestorch.cat(tmp_cache,1)out[]ifqv_cacheisnotNone:ifqv_cache.shape[-1]!c:qv_cacheF.adaptive_avg_pool2d(qv_cache,c)foriinrange(4):ifqv_cacheisnotNone:inter_modulatorself.inter_modulators[i]attScore[i]inter_modulator(attScore[i],qv_cache)attScore[i]out.append(attScore[i] va[i])else:out.append(attScore[i] va[i])update_factor0.9ifqv_cacheisnotNone:update_elementsCalculateCurrentLayerCache(attScore,c,self.group)qv_cacheqv_cache*update_factorupdate_elements*(1-update_factor)else:qv_cacheCalculateCurrentLayerCache(attScore,c,self.group)qv_cacheqv_cache*update_factor out_alltorch.concat(out,1)# Intra Modulationout_allself.intra_modulator(out_all,tmp_caches)out_all out_allrearrange(out_all,b c (h w) - b c h w,hh,ww)out_allself.project_out(out_all)returnout_allYOLO11引入代码在根目录下的ultralytics/nn/目录新建一个C3k2目录然后新建一个以C3k2_HMHA为文件名的py文件 把代码拷贝进去。importtorchimporttorch.nnasnnimporttorch.nn.functionalasFimportnumbersfromeinopsimportrearrangedefto_3d(x):returnrearrange(x,b c h w - b (h w) c)defto_4d(x,h,w):returnrearrange(x,b (h w) c - b c h w,hh,ww)classBiasFree_LayerNorm(nn.Module):def__init__(self,normalized_shape):super(BiasFree_LayerNorm,self).__init__()ifisinstance(normalized_shape,numbers.Integral):normalized_shape(normalized_shape,)normalized_shapetorch.Size(normalized_shape)assertlen(normalized_shape)1self.weightnn.Parameter(torch.ones(normalized_shape))self.normalized_shapenormalized_shapedefforward(self,x):sigmax.var(-1,keepdimTrue,unbiasedFalse)returnx/torch.sqrt(sigma1e-5)*self.weightclassWithBias_LayerNorm(nn.Module):def__init__(self,normalized_shape):super(WithBias_LayerNorm,self).__init__()ifisinstance(normalized_shape,numbers.Integral):normalized_shape(normalized_shape,)normalized_shapetorch.Size(normalized_shape)assertlen(normalized_shape)1self.weightnn.Parameter(torch.ones(normalized_shape))self.biasnn.Parameter(torch.zeros(normalized_shape))self.normalized_shapenormalized_shapedefforward(self,x):mux.mean(-1,keepdimTrue)sigmax.var(-1,keepdimTrue,unbiasedFalse)return(x-mu)/torch.sqrt(sigma1e-5)*self.weightself.biasclassLayerNorm(nn.Module):def__init__(self,dim,LayerNorm_type):super(LayerNorm,self).__init__()ifLayerNorm_typeBiasFree:self.bodyBiasFree_LayerNorm(dim)else:self.bodyWithBias_LayerNorm(dim)defforward(self,x):h,wx.shape[-2:]returnto_4d(self.body(to_3d(x)),h,w)classFeedForward(nn.Module):def__init__(self,dim,ffn_expansion_factor,bias):super(FeedForward,self).__init__()hidden_featuresint(dim*ffn_expansion_factor)self.project_innn.Conv2d(dim,hidden_features*2,kernel_size1,biasbias)self.dwconvnn.Conv2d(hidden_features*2,hidden_features*2,kernel_size3,stride1,padding1,groupshidden_features*2,biasbias)self.project_outnn.Conv2d(hidden_features,dim,kernel_size1,biasbias)defforward(self,x):xself.project_in(x)x1,x2self.dwconv(x).chunk(2,dim1)xF.gelu(x1)*x2 xself.project_out(x)returnxclassInter_CacheModulation(nn.Module):def__init__(self,in_c3):super(Inter_CacheModulation,self).__init__()self.alignnn.AdaptiveAvgPool2d(in_c)self.conv_widthnn.Conv1d(in_channelsin_c,out_channels2*in_c,kernel_size1)self.gatingConvnn.Conv1d(in_channelsin_c,out_channelsin_c,kernel_size1)defforward(self,x1,x2):Cx1.shape[-1]x2_pWself.conv_width(self.align(x2)x1)scale,shiftx2_pW.chunk(2,dim1)x1_px1*scaleshift x1_px1_p*F.gelu(self.gatingConv(x1_p))returnx1_pclassIntra_CacheModulation(nn.Module):def__init__(self,embed_dim48):super(Intra_CacheModulation,self).__init__()self.downnn.Conv1d(embed_dim,embed_dim//2,kernel_size1)self.upnn.Conv1d(embed_dim//2,embed_dim,kernel_size1)self.gatingConvnn.Conv1d(in_channelsembed_dim,out_channelsembed_dim,kernel_size1)defforward(self,x1,x2):x_gatedF.gelu(self.gatingConv(x2x1))*(x2x1)x_pself.up(self.down(x_gated))returnx_pclassReGroup(nn.Module):def__init__(self,groups[1,1,2,4]):super(ReGroup,self).__init__()self.gourpsgroupsdefforward(self,query,key,value):Cquery.shape[1]channel_featuresquery.mean(dim0)correlation_matrixtorch.corrcoef(channel_features)mean_similaritycorrelation_matrix.mean(dim1)_,sorted_indicestorch.sort(mean_similarity,descendingTrue)query_sortedquery[:,sorted_indices,:]key_sortedkey[:,sorted_indices,:]value_sortedvalue[:,sorted_indices,:]query_groups[]key_groups[]value_groups[]start_idx0total_ratiosum(self.gourps)group_sizes[int(ratio/total_ratio*C)forratioinself.gourps]forgroup_sizeingroup_sizes:end_idxstart_idxgroup_size query_groups.append(query_sorted[:,start_idx:end_idx,:])key_groups.append(key_sorted[:,start_idx:end_idx,:])value_groups.append(value_sorted[:,start_idx:end_idx,:])start_idxend_idxreturnquery_groups,key_groups,value_groupsdefCalculateCurrentLayerCache(x,dim128,groups[1,1,2,4]):lenslen(groups)ceil_dimdim# * max_value // sum_valueforiinrange(lens):qv_cache_fx[i].clone().detach()qv_cache_ftorch.mean(qv_cache_f,dim0,keepdimTrue).detach()update_elementsF.interpolate(qv_cache_f.unsqueeze(1),size(ceil_dim,ceil_dim),modebilinear,align_cornersFalse)c_iqv_cache_f.shape[-1]ifi0:qv_cacheupdate_elements*c_i//dimelse:qv_cacheqv_cacheupdate_elements*c_i//dimreturnqv_cache.squeeze(1)classHMHA(nn.Module):def__init__(self,dim,num_heads8,biasFalse):super(HMHA,self).__init__()self.num_headsnum_heads self.temperaturenn.Parameter(torch.ones(4,1,1))self.qkvnn.Conv2d(dim,dim*3,kernel_size1,biasbias)self.qkv_dwconvnn.Conv2d(dim*3,dim*3,kernel_size3,stride1,padding1,groupsdim*3,biasbias)self.project_outnn.Conv2d(dim,dim,kernel_size1,biasbias)self.group[1,2,2,3]self.intra_modulatorIntra_CacheModulation(embed_dimdim)self.inter_modulator1Inter_CacheModulation(in_c1*dim//8)self.inter_modulator2Inter_CacheModulation(in_c2*dim//8)self.inter_modulator3Inter_CacheModulation(in_c2*dim//8)self.inter_modulator4Inter_CacheModulation(in_c3*dim//8)self.inter_modulators[self.inter_modulator1,self.inter_modulator2,self.inter_modulator3,self.inter_modulator4]self.regroupReGroup(self.group)self.dimdimdefforward(self,x):b,c,h,wx.shape qv_cacheNoneqkvself.qkv_dwconv(self.qkv(x))q,k,vqkv.chunk(3,dim1)qrearrange(q,b c h w - b c (h w))krearrange(k,b c h w - b c (h w))vrearrange(v,b c h w - b c (h w))qu,ke,vaself.regroup(q,k,v)attScore[]tmp_cache[]forindexinrange(len(self.group)):query_headqu[index]key_headke[index]query_headtorch.nn.functional.normalize(query_head,dim-1)key_headtorch.nn.functional.normalize(key_head,dim-1)attn(query_head key_head.transpose(-2,-1))*self.temperature[index,:,:]attnattn.softmax(dim-1)attScore.append(attn)# CxCt_cachequery_head.clone().detach()key_head.clone().detach()tmp_cache.append(t_cache)tmp_cachestorch.cat(tmp_cache,1)out[]ifqv_cacheisnotNone:ifqv_cache.shape[-1]!c:qv_cacheF.adaptive_avg_pool2d(qv_cache,c)foriinrange(4):ifqv_cacheisnotNone:inter_modulatorself.inter_modulators[i]attScore[i]inter_modulator(attScore[i],qv_cache)attScore[i]out.append(attScore[i] va[i])else:out.append(attScore[i] va[i])update_factor0.9ifqv_cacheisnotNone:update_elementsCalculateCurrentLayerCache(attScore,c,self.group)qv_cacheqv_cache*update_factorupdate_elements*(1-update_factor)else:qv_cacheCalculateCurrentLayerCache(attScore,c,self.group)qv_cacheqv_cache*update_factor out_alltorch.concat(out,1)# Intra Modulationout_allself.intra_modulator(out_all,tmp_caches)out_all out_allrearrange(out_all,b c (h w) - b c h w,hh,ww)out_allself.project_out(out_all)returnout_alldefautopad(k,pNone,d1):Pad to same shape outputs.ifd1:kd*(k-1)1ifisinstance(k,int)else[d*(x-1)1forxink]ifpisNone:pk//2ifisinstance(k,int)else[x//2forxink]returnpclassConv(nn.Module):Standard convolution with args(ch_in, ch_out, kernel, stride, padding, groups, dilation, activation).default_actnn.SiLU()def__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(c2)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))classBottleneck(nn.Module):Standard bottleneck.def__init__(self,c1,c2,shortcutTrue,g1,k(3,3),e0.5):Initializes a standard bottleneck module with optional shortcut connection and configurable parameters.super().__init__()c_int(c2*e)self.cv1Conv(c1,c_,k[0],1)self.cv2Conv(c_,c2,k[1],1,gg)self.addshortcutandc1c2defforward(self,x):Applies the YOLO FPN to input data.returnxself.cv2(self.cv1(x))ifself.addelseself.cv2(self.cv1(x))classC2f(nn.Module):Faster Implementation of CSP Bottleneck with 2 convolutions.def__init__(self,c1,c2,n1,shortcutFalse,g1,e0.5):Initializes a CSP bottleneck with 2 convolutions and n Bottleneck blocks for faster processing.super().__init__()self.cint(c2*e)self.cv1Conv(c1,2*self.c,1,1)self.cv2Conv((2n)*self.c,c2,1)self.mnn.ModuleList(Bottleneck(self.c,self.c,shortcut,g,k((3,3),(3,3)),e1.0)for_inrange(n))defforward(self,x):Forward pass through C2f layer.ylist(self.cv1(x).chunk(2,1))y.extend(m(y[-1])forminself.m)returnself.cv2(torch.cat(y,1))defforward_split(self,x):Forward pass using split() instead of chunk().ylist(self.cv1(x).split((self.c,self.c),1))y.extend(m(y[-1])forminself.m)returnself.cv2(torch.cat(y,1))classC3(nn.Module):CSP Bottleneck with 3 convolutions.def__init__(self,c1,c2,n1,shortcutTrue,g1,e0.5):Initialize the CSP Bottleneck with given channels, number, shortcut, groups, and expansion values.super().__init__()c_int(c2*e)self.cv1Conv(c1,c_,1,1)self.cv2Conv(c1,c_,1,1)self.cv3Conv(2*c_,c2,1)self.mnn.Sequential(*(Bottleneck(c_,c_,shortcut,g,k((1,1),(3,3)),e1.0)for_inrange(n)))defforward(self,x):Forward pass through the CSP bottleneck with 2 convolutions.returnself.cv3(torch.cat((self.m(self.cv1(x)),self.cv2(x)),1))classC3k(C3):C3k is a CSP bottleneck module with customizable kernel sizes for feature extraction in neural networks.def__init__(self,c1,c2,n1,shortcutTrue,g1,e0.5,k3):Initializes the C3k module with specified channels, number of layers, and configurations.super().__init__(c1,c2,n,shortcut,g,e)c_int(c2*e)self.mnn.Sequential(*(Bottleneck(c_,c_,shortcut,g,k(k,k),e1.0)for_inrange(n)))classC2f_HMHA(nn.Module):Faster Implementation of CSP Bottleneck with 2 convolutions.def__init__(self,c1,c2,n1,shortcutFalse,g1,e0.5):Initialize CSP bottleneck layer with two convolutions with arguments ch_in, ch_out, number, shortcut, groups, expansion. super().__init__()self.cint(c2*e)# hidden channelsself.cv1Conv(c1,2*self.c,1,1)self.cv2Conv((2n)*self.c,c2,1)# optional actFReLU(c2)self.mnn.ModuleList(Bottleneck_HMHA(self.c,self.c,shortcut,g,k((3,3),(3,3)),e1.0)for_inrange(n))defforward(self,x):Forward pass through C2f layer.ylist(self.cv1(x).chunk(2,1))y.extend(m(y[-1])forminself.m)returnself.cv2(torch.cat(y,1))defforward_split(self,x):Forward pass using split() instead of chunk().ylist(self.cv1(x).split((self.c,self.c),1))y.extend(m(y[-1])forminself.m)returnself.cv2(torch.cat(y,1))classBottleneck_HMHA(nn.Module):Standard bottleneck.def__init__(self,c1,c2,shortcutTrue,g1,k(3,3),e0.5):Initializes a bottleneck module with given input/output channels, shortcut option, group, kernels, and expansion. super().__init__()c_int(c2*e)# hidden channelsself.cv1Conv(c1,c_,k[0],1)self.cv2Conv(c_,c2,k[1],1,gg)self.addshortcutandc1c2 self.AttentionHMHA(c2)defforward(self,x):forward() applies the YOLO FPN to input data.returnxself.Attention(self.cv2(self.cv1(x)))ifself.addelseself.Attention(self.cv2(self.cv1(x)))classC3k_HMHA(C3):C3k is a CSP bottleneck module with customizable kernel sizes for feature extraction in neural networks.def__init__(self,c1,c2,n1,shortcutTrue,g1,e0.5,k3):Initializes the C3k module with specified channels, number of layers, and configurations.super().__init__(c1,c2,n,shortcut,g,e)c_int(c2*e)# hidden channelsself.mnn.Sequential(*(Bottleneck_HMHA(c_,c_,shortcut,g,k((3,3),(3,3)),e1.0)for_inrange(n)))classC3k2_HMHA(C2f_HMHA):Faster Implementation of CSP Bottleneck with 2 convolutions.def__init__(self,c1,c2,n1,c3kFalse,e0.5,g1,shortcutTrue):Initializes the C3k2 module, a faster CSP Bottleneck with 2 convolutions and optional C3k blocks.super().__init__(c1,c2,n,shortcut,g,e)self.mnn.ModuleList(C3k_HMHA(self.c,self.c,2,shortcut,g)ifc3kelseBottleneck_HMHA(self.c,self.c,shortcut,g,k((3,3),(3,3)),e1.0)for_inrange(n))注册在ultralytics/nn/tasks.py中进行如下操作步骤1:fromultralytics.nn.C3k2.C3k2_HMHAimportC3k2_HMHA步骤2修改def parse_model(d, ch, verboseTrue):C3k2_HMHA配置yolov11-C3k2_HMHA.yamlultralytics/cfg/models/11/yolov11-C3k2_HMHA.yaml# Ultralytics YOLO , AGPL-3.0 license# YOLO11 object detection model with P3-P5 outputs. For Usage examples see 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: 319 layers, 2624080 parameters, 2624064 gradients, 6.6 GFLOPss:[0.50,0.50,1024]# summary: 319 layers, 9458752 parameters, 9458736 gradients, 21.7 GFLOPsm:[0.50,1.00,512]# summary: 409 layers, 20114688 parameters, 20114672 gradients, 68.5 GFLOPsl:[1.00,1.00,512]# summary: 631 layers, 25372160 parameters, 25372144 gradients, 87.6 GFLOPsx:[1.00,1.50,512]# summary: 631 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_HMHA,[256,False,0.25]]-[-1,1,Conv,[256,3,2]]# 3-P3/8-[-1,2,C3k2_HMHA,[512,False,0.25]]-[-1,1,Conv,[512,3,2]]# 5-P4/16-[-1,2,C3k2_HMHA,[512,True]]-[-1,1,Conv,[1024,3,2]]# 7-P5/32-[-1,2,C3k2_HMHA,[1024,True]]-[-1,1,SPPF,[1024,5]]# 9-[-1,2,C2PSA,[1024]]# 10# YOLO11n headhead:-[-1,1,nn.Upsample,[None,2,nearest]]-[[-1,6],1,Concat,[1]]# cat backbone P4-[-1,2,C3k2_HMHA,[512,False]]# 13-[-1,1,nn.Upsample,[None,2,nearest]]-[[-1,4],1,Concat,[1]]# cat backbone P3-[-1,2,C3k2_HMHA,[256,False]]# 16 (P3/8-small)-[-1,1,Conv,[256,3,2]]-[[-1,13],1,Concat,[1]]# cat head P4-[-1,2,C3k2_HMHA,[512,False]]# 19 (P4/16-medium)-[-1,1,Conv,[512,3,2]]-[[-1,10],1,Concat,[1]]# cat head P5-[-1,2,C3k2_HMHA,[1024,True]]# 22 (P5/32-large)-[[16,19,22],1,Detect,[nc]]# Detect(P3, P4, P5)实验脚本importwarnings warnings.filterwarnings(ignore)fromultralyticsimportYOLO#if__name____main__:# 修改为自己的配置文件地址modelYOLO(./ultralytics/cfg/models/11/yolov11-C3k2_HMHA.yaml)# 修改为自己的数据集地址model.train(data./ultralytics/cfg/datasets/coco8.yaml,cacheFalse,imgsz640,epochs10,single_clsFalse,# 是否是单类别检测batch8,close_mosaic10,workers0,optimizerSGD,ampTrue,projectruns/train,nameC3k2_HMHA,)结果
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

学校网站空间建设情况asp 网站 模板

本地和网络打印机设置全解析 1. 打印功能概述 打印,尤其是网络打印,是操作系统的主要功能之一。Windows 2000 在这方面提供了出色的支持,包括用于安装打印机、分配打印机端口和管理打印机属性的图形用户界面(GUI)。 2. 打印机安装 通常,打印机被视为物理对象并作为硬…

张小明 2025/12/26 22:42:33 网站建设

商城app下载东营seo网站推广

单相光伏mppt并网模型 根据网上视频搭建的,可以跟着学,内有一些自己的理解注释。 2018b最近在研究光伏相关的内容,成功搭建了一个单相光伏MPPT并网模型,这个模型是参照网上视频一步步构建起来的,过程中加入了不少自己的…

张小明 2025/12/27 5:04:30 网站建设

石家庄网站建设公司黄页重庆开发网站

在企业管理中,固定资产管理直接影响运营效率与成本控制。传统手工盘点模式因效率低、易出错等问题,逐渐被RFID(射频识别)技术取代。然而,不同厂商的RFID资产管理系统在功能设计、技术架构、应用场景适配性等方面存在显…

张小明 2025/12/26 19:05:47 网站建设

海外购物网站排名山东知名网络传媒有限公司

颠覆性突破:腾讯混元3D Studio如何重构AI 3D创作生态 【免费下载链接】Hunyuan3D-2 Hunyuan3D 2.0:高分辨率三维生成系统,支持精准形状建模与生动纹理合成,简化资产再创作流程。 项目地址: https://ai.gitcode.com/tencent_huny…

张小明 2025/12/27 4:59:15 网站建设

如何添加网站关键词vi企业形象设计是什么

DeepSeek-V2-Chat-0628模型性能实测:Q2量化版本兼容性与推理速度深度解析 【免费下载链接】DeepSeek-V2-Chat-0628 DeepSeek-V2-Chat-0628,开源创新之作,AI聊天机器人性能卓越,编码能力出众。在LMSYS Chatbot Arena榜单脱颖而出&a…

张小明 2025/12/27 4:59:44 网站建设

外贸网站交易平台做网站用什么格式的图片

闲鱼数据采集工具使用指南 【免费下载链接】xianyu_spider 闲鱼APP数据爬虫 项目地址: https://gitcode.com/gh_mirrors/xia/xianyu_spider 闲鱼数据采集工具是一款基于uiautomator2开发的自动化采集工具,能够帮助用户快速获取闲鱼平台上的商品数据。该工具通…

张小明 2025/12/27 5:48:08 网站建设