Multi-Scale and Detail-Enhanced Segment Anything-1-LMSA-轻量级多尺度适配器

news/2024/11/7 23:08:05/文章来源:https://www.cnblogs.com/plumIce/p/18534191

`
import torch.nn as nn
import torch
import torch.nn.functional as F
class ModifyPPM(nn.Module):
def init(self, in_dim, reduction_dim, bins):
super(ModifyPPM, self).init()
self.features = []
for bin in bins:
self.features.append(nn.Sequential(
nn.AdaptiveAvgPool2d(bin),
nn.Conv2d(in_dim, reduction_dim, kernel_size=1),
nn.GELU(),
nn.Conv2d(reduction_dim, reduction_dim, kernel_size=3, bias=False, groups=reduction_dim),
nn.GELU()
))
self.features = nn.ModuleList(self.features)
self.local_conv = nn.Sequential(
nn.Conv2d(in_dim, in_dim, kernel_size=3, padding=1, bias=False, groups=in_dim),
nn.GELU(),
)

def forward(self, x):x_size = x.size()out = [self.local_conv(x)]for f in self.features:out.append(F.interpolate(f(x), x_size[2:], mode='bilinear', align_corners=True))return torch.cat(out, 1)

class LMSA(nn.Module):
def init(self, in_dim, hidden_dim, patch_num):
super().init()
self.down_project = nn.Linear(in_dim,hidden_dim)
self.act = nn.GELU()
self.mppm = ModifyPPM(hidden_dim, hidden_dim //4, [3,6,9,12])
self.patch_num = patch_num
self.up_project = nn.Linear(hidden_dim, in_dim)
self.down_conv = nn.Sequential(nn.Conv2d(hidden_dim*2, hidden_dim, 1),
nn.GELU())

def forward(self, x):down_x = self.down_project(x)down_x = self.act(down_x)down_x = down_x.permute(0, 3, 1, 2).contiguous()down_x = self.mppm(down_x).contiguous()down_x = self.down_conv(down_x)down_x = down_x.permute(0, 2, 3, 1).contiguous()up_x = self.up_project(down_x)return x + up_x

if name == 'main':
in_dim=128
hidden_dim=64
patch_num=16

block = LMSA(in_dim,hidden_dim,patch_num).cuda()
input = torch.randn(1, patch_num, patch_num, in_dim).cuda() #输入 B C H W
output = block(input)print(input.size())
print(output.size())

`

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/828542.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线性dp

线性dp 线性dp是一种很常见的dp分析方式,关系之间具有线性的关系,状态之间相互递推,之后求出最终状态,今天完成了两道dp的题目第一个问题看似是四维打表实际上使用线性的方式分析可以很快的求出结果没必要维护三维的空间 第二个问题要记录数列的个数,我们首先要知道几个递推关系…

企业网站如何修改首页,如何在企业网站后台或代码编辑器中修改首页内容

修改企业网站的首页内容可以提升品牌形象和用户体验。以下是修改首页内容的步骤:登录网站后台:打开浏览器,输入网站的后台地址,例如 http://yourdomain.com/admin。 输入管理员账号和密码,点击“登录”。进入首页管理:登录后,点击顶部菜单栏中的“首页”或“页面”。 选…

uni-app组件知识记录

目录style标签的lang视图容器组件scroll-view的使用(滚动)组件swiper的使用(轮播)媒体组件组件image的使用(图片)路由与页面跳转navigatortabBar底部导航配置表单提交组件动态赋值子组件的属性字段propsVUE语法data 属性指令v-if/v-elsev-showv-for循环v-html标签v-bind动态绑定…

SpringBoot获取项目文件的绝对路径和相对路径

SpringBoot获取项目文件的绝对路径和相对路径@目录1.场景2.说明项目代码大致样式获取路径说明3.举例说明网上常见几种方法的路径获取结果 1.场景比如上传图片或者读取项目里的excel文件内容等,都需要准确获取文件路径2.说明 项目代码大致样式获取路径说明所谓获取的相对路径,…

团队作业3--需求改进系统设计(内补上团队任务2)

团队任务2:这个作业属于哪个课程 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34这个作业要求在哪里 https://edu.cnblogs.com/campus/gdgy/CSGrade22-34/homework/13232这个作业的目标 完成博客系统的需求规格说明书团队github链接 https://github.com/f-h-team/blog.git…

Maxwell学习笔记——学生版体验

Ansys提供了免费的学生版,在Ansys官网就可以下载,这里附上快捷链接:Ansys学生版 | 免费学生软件下载我也尝试下载了一下Ansys student和Ansys Electrionics Desktop Student,都是2024 R2版本,这里分享一下体验。  Ansys student在安装过程中没有模块选择界面,也就是说机…

后端MultipartFile接收文件转Base64

后端MultipartFile接收文件转Base64@目录背景说明测试案例+代码测试方法1测试方法2 背景说明 最开始写的版本代码删改较多且无法运行,在其他博主给我指出问题及改进措施之后,下面的是最新汇总并测试结果有效的接口,编写日期:2022年08月12日。下面代码是后端接收到文件,并把…

python项目记录

python python创建虚拟环境 (可以随便切换使用过程中的python版本_以避免出现要求版本的情况qaq) 1.在创建项目的时候,在vscode里面需要ctrl+shift+p,呼出面板 python: select interpreter create [virtual environment] select your needed version激活虚拟环境 激活虚拟环境…

CCNA

CCNA 学习链接:2019最新思科认证CCNA网络工程师网络基础精品全集教程(0基础入门必备教学视频) 注意事项: 1、第5课看不到老师的屏幕操作 2、第7课后的观看顺序需要自行调整一下,P7——P9——P8——P14——P10——P11——P12——P13——P16——P15——P17 路由与交换 计算机…

CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统

CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统说明 此文章为转发的,方便日后查看。 系统演示环境 http://www.cc-admin.top/#/home简介 CC-ADMIN 前端简介 现在市面的上后台管理系统很多,…

QT:简易文本编辑器

在Qt5中,主窗体(MainWindow)是应用程序的核心组件,它通常承载着应用的主要功能和界面元素。在这个"文本编辑器"案例中,我们将深入探讨如何利用Qt5库来创建一个功能丰富的文本编辑器。Qt是一个跨平台的C++图形用户界面应用程序框架,提供了丰富的API来处理UI设计…

鸿蒙开发案例:水平仪

【1】引言(完整代码在最后面) 高仿纯血鸿蒙Next的水平仪效果。主要功能包括: 1. 倾斜角度检测:通过注册加速度传感器事件监听器,实时获取设备的前后倾斜角度(pitch)和左右倾斜角度(roll)。 2. 角度计算与更新:根据传感器数据计算新的倾斜角度,如果新角度与旧角度的变…