当前位置: 首页 > news >正文

不会写代码怎么做网站指数基金

不会写代码怎么做网站,指数基金,WordPress网站子目录访问,wordpress 会员分销前言 文章标题:《SSA-Seg: Semantic and Spatial Adaptive Pixel-level Classiffer for Semantic Segmentation》 助力语义分割涨点!SSA:一种新颖的语义和空间自适应分类器,显著提高了基线模型的分割性能,比如SegNeXt、OCRNet和UperNet等模型…

前言

文章标题:《SSA-Seg: Semantic and Spatial Adaptive Pixel-level Classiffer for Semantic Segmentation》
助力语义分割涨点!SSA:一种新颖的语义和空间自适应分类器,显著提高了基线模型的分割性能,比如SegNeXt、OCRNet和UperNet等模型,而计算成本的增加却很小,代码已开源!
单位:华为诺亚,浙江大学
问题:

  1. 语义域特征偏差:由于测试图像的内容和分布可能与训练数据存在很大差异(如背景复杂、对象分布多样),测试图像中的像素特征可能与训练时学习的固定语义原型不一致,导致分类性能下降。
    举一个例子:金斧头,银斧头,你却只认得铁斧头
  1. 空间域信息丢失:传统方法未充分利用目标对象的空间结构信息,导致边界模糊以及对小目标的识别能力不足。

创新:
语义和空间自适应分类器(SSA-Seg):

  • 空间原型自适应(SPPA):利用位置编码获得空间特征,通过粗分割掩码计算空间域中心,建模像素特征与空间之间的关系,生成空间原型,改进像素与空间原型之间的关系,提升边界和小目标分割性能。
  • 语义原型自适应(SEPA):使用粗分割掩码计算语义域中心,生成自适应的语义原型,改进像素与语义原型之间的相似性,提升语义类别对齐能力。

源码下载

github:https://github.com/xwmaxwma/SSA-Seg

实现

在这里插入图片描述
SPPA:
对于从骨干和分类头输出的语义特征 S f S_f Sf,我们首先通过位置编码生成空间特征 P f P_f Pf。然后,我们保留原始的1x1卷积以生成粗级Mask: M c M_c Mc。在 M c M_c Mc的引导下,空间域的中心 P c P_c Pc,并将其与一个可学习的位置编码 P p P_p Pp融合生成空间原型
SEPA:
对于从骨干和分类头输出的语义特征 S f S_f Sf,我们保留原始的1x1卷积以生成粗级Mask: M c M_c Mc。在 M c M_c Mc的引导下,语义中心 S c S_c Sc,并将其与固定的语义原型 S S S S c S_c Sc融合,以生成语义原型 S p S_p Sp
SSA:
(空间原型 P p P_p Pp+语义原型 S p S_p Sp)*(语义特征 S f S_f Sf+空间特征 P f P_f Pf)=Output

class SEPA_SPPA(nn.Module):def __init__(self, num_classes, channels):super(SEPA_SPPA, self).__init__()self.channels = channels  # 通道数,用于特征图的维度self.num_classes = num_classes  # 类别数,用于位置嵌入和预测# SEPA模块:生成特征位置编码self.get_feat_pos = nn.Conv2d(self.channels, self.channels, 3, 1, 1, bias=True, groups=self.channels)  # 使用深度可分离卷积生成特征位置编码self.center_pos = nn.Embedding(self.num_classes, self.channels)  # 可学习的向量类别位置嵌入,大小为(类别数, 通道数)self.center_pos_proj = nn.Sequential(nn.Linear(self.channels * 2, self.channels // 2, bias=False),  # 降维nn.ReLU(inplace=True),  # 激活函数nn.Linear(self.channels // 2, self.channels),  # 恢复到原通道维度)self.feat_proj = nn.Identity()  # 特征映射,不做额外操作# SPPA模块:生成语义原型self.center_content_proj = nn.Sequential(nn.Linear(self.channels * 2, self.channels // 2, bias=False),  # 原型降维nn.ReLU(inplace=True),  # 激活函数nn.Linear(self.channels // 2, self.channels),  # 恢复到原通道数)self.center_proj = nn.Linear(self.channels, self.channels, bias=False)  # 最终类中心特征的线性映射# 获取中心位置编码def get_center_pos(self, attn, feat_pos):"""根据注意力图(attn)和特征位置编码(feat_pos)计算中心位置编码"""center_pos = self.center_pos.weight  # 获取类中心位置嵌入b, k, h, w = attn.size()  # 批量大小、类别数、高度、宽度c = feat_pos.shape[1]  # 特征图通道数# 将注意力和特征图展平,用于矩阵计算attn = attn.reshape(b, k, -1)  # (b, k, h*w)feat_pos = feat_pos.reshape(b, c, -1).permute(0, 2, 1)  # (b, h*w, c)# 归一化注意力并计算中心位置attn = F.softmax(attn, dim=-1)  # 在像素维度上进行softmaxcenter_pos = center_pos.unsqueeze(0).repeat(b, 1, 1)  # 扩展为(b, k, c)center_pos = torch.cat([center_pos, torch.matmul(attn, feat_pos)], dim=-1)  # 拼接原始位置编码和计算出的编码 (b, k, 2c)center_pos = self.center_pos_proj(center_pos)  # 投影到中心位置编码 (b, k, c)return center_pos# 生成像素分类预测def get_pred(self, x, proto):"""根据特征图和语义原型生成像素分类预测"""b, c, h, w = x.size()  # 批量大小、通道数、高度、宽度if len(proto.shape) == 3:  # 如果原型是三维的 (b, k, c)cls_num = proto.size(1)  # 类别数x = x / (torch.norm(x, 2, 1, True) + 1e-12)  # 对特征进行L2归一化proto = proto / (torch.norm(proto, 2, -1, True) + 1e-12)  # 对原型进行L2归一化x = x.contiguous().view(b, c, h * w)  # 展平特征 (b, c, h*w)pred = proto @ x  # 点乘生成预测 (b, cls, h*w)elif len(proto.shape) == 2:  # 如果原型是二维的 (k, c)cls_num = proto.size(0)  # 类别数x = x / (torch.norm(x, 2, 1, True) + 1e-12)  # 特征归一化proto = proto / (torch.norm(proto, 2, 1, True) + 1e-12)  # 原型归一化x = x.contiguous().view(b, c, h * w)  # 展平特征proto = proto.unsqueeze(0)  # 扩展维度为 (1, cls, c)pred = proto @ x  # 点乘生成预测 (b, cls, h*w)pred = pred.contiguous().view(b, cls_num, h, w)  # 恢复为原始大小return pred * 15  # 放大预测值# 前向传播def forward(self, feat, pred, proto):"""输入特征图、注意力图和原型,输出像素分类预测语义特征featpred是预测输出值proto固定的语义原型,通过调用主干网络的分割头权重赋值self.conv_seg.weight.squeeze()"""# SPPA模块feat_pos = self.get_feat_pos(feat)  # 获取特征位置编码center_pos = self.get_center_pos(attn=pred, feat_pos=feat_pos)  # 空间原型# SEPA模块raw_x = feat.clone()b, c, h, w = raw_x.shape[:]pred = pred.view(b, proto.shape[0], h * w)pred = F.softmax(pred, 1)  # b, n, hwpred_proto = (pred @ raw_x.view(b, c, h * w).permute(0, 2, 1)) / (pred.sum(-1).unsqueeze(-1) + 1e-12)pred_proto = torch.cat([pred_proto, proto.unsqueeze(0).repeat(pred_proto.shape[0], 1, 1)], -1)  # b, n, 2cpred_proto = self.center_content_proj(pred_proto) #语义原型# 语义特征feat,feat_pos空间特征feat = self.feat_proj(feat+feat_pos)  # 对特征图进行投影# pred_proto语义原型 center_pos空间原型center = self.center_proj(pred_proto + center_pos)  # 结合语义原型和位置编码生成类中心特征pred = self.get_pred(feat, center)  # 根据类中心特征生成像素分类预测return pred
if __name__ == "__main__":# 初始化模型num_classes = 21  # 类别数channels = 256  # 特征图通道数model = SEPA_SPPA(num_classes=num_classes, channels=channels)  # 实例化模型# 构造测试输入b, c, h, w = 4, 256, 64, 64  # 批量大小、通道数、高度、宽度k = num_classes  # 类别数feat = torch.randn(b, c, h, w)  # 模拟特征图attn = torch.randn(b, k, h, w)  # 模拟注意力图proto = torch.randn(k, c)  # 模拟语义原型# 前向传播测试pred = model(feat, attn, proto)  # 获取预测结果print(f"预测结果形状: {pred.shape}")  # 打印预测结果的形状

实验

SSA-Seg在最新通用(顶部)和轻量化(底部)方法上的性能比较。FLOPS(G)的计算基于ADE20KCOCO-Stuff-10K的512x512输入大小,以及PASCAL-Context的480x480输入大小。延迟(ms)的计算基于V100 GPU的512x512的输入大小。绿色数字表示相对于基线的增加
在这里插入图片描述

http://www.hkea.cn/news/353825/

相关文章:

  • 大学网站建设管理办法推广技巧
  • 长春做网站公司seo关键词排名优化软件怎么选
  • 网站开发未按合同约定工期完工seo关键词排名怎么提升
  • 创可贴app海报制作网站百度seo优化方法
  • 龙岗品牌网站建设2024年新闻摘抄
  • 南阳住房和城乡建设厅网站招聘网站排名
  • 如何做网站活动封面建站的公司
  • 温州网站建设培训营销推广方案包括哪些内容
  • 厦门 建网站商业软文案例
  • wordpress读者墙站长之家seo工具包
  • 网站建设哪家好灵活苏州久远网络北京搜索引擎关键词优化
  • 网站优化怎么做 有什么技巧东莞seo建站
  • 什么网站可以做游戏机疫情最新数据消息
  • 企业网站开发报价单巩义网络推广
  • 网站开发技术交流群免费域名申请网站
  • 手机网站一键分享怎么知道自己的域名
  • 做网站 做好把我踢开北京网站搭建哪家好
  • 网站如何做引流刷外链网站
  • wordpress 站点地址关注公众号一单一结兼职
  • 合肥网站建设第一品牌个人seo外包
  • 省心的免费建站服务热线四川seo关键词工具
  • 网站总是跳转dede58seo对网络推广的作用是
  • seo排名怎么提高seo排名优化软件有用
  • 江门论坛建站模板黑帽seo联系方式
  • 政府网站信息内容建设专项检查搜索引擎排名优化seo课后题
  • 个人做的好的淘宝客网站软文营销推广
  • 城乡建设委员会网站河北seo推广公司
  • 某网站栏目策划2022十大热点事件及评析
  • 德清网站建设中心优化大师官方免费下载
  • 生日网页制作免费网站制作代做网页设计平台