位置: IT常识 - 正文

unet模型及代码解析(unet模型代码matlab)

编辑:rootadmin
unet模型及代码解析 什么是unet

推荐整理分享unet模型及代码解析(unet模型代码matlab),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:unet原理,unet算法,unet算法,unet模型融合,unet算法,unet模型代码matlab,unet++模型,unet++模型,内容如对您有帮助,希望把文章链接给更多的朋友!

一个U型网络结构,2015年在图像分割领域大放异彩,unet被大量应用在分割领域。它是在FCN的基础上构建,它的U型结构解决了FCN无法上下文的信息和位置信息的弊端

Unet网络结构

主干结构解析

左边为特征提取网络(编码器),右边为特征融合网络(解码器)

高分辨率—编码—低分辨率—解码—高分辨率

特征提取网络

高分辨率—编码—低分辨率

前半部分是编码, 它的作用是特征提取(获取局部特征,并做图片级分类),得到抽象语义特征

由两个3x3的卷积层(RELU)再加上一个2x2的maxpooling层组成一个下采样的模块,一共经过4次这样的操作

特征融合网络

低分辨率—解码—高分辨率

利用前面编码的抽象特征来恢复到原图尺寸的过程, 最终得到分割结果(掩码图片)

由一层反卷积+特征拼接concat+两个3x3的卷积层(ReLU)反复构成,一共经过4次这样的操作,与特征提取网络刚好相对应,最后接一层1*1卷积,降维处理,即将通道数降低至特定的数量,得到目标图,具体内容可以参考这篇文章 一文读懂卷积神经网络中的1x1卷积核

FCN与UNet特征融合操作对比解析unet模型及代码解析(unet模型代码matlab)

FCN是通过特征图对应像素值的相加来融合特征的

torch代码:

concat1 = out1+out2# 其中out1与out2都是torch中的tensor格式

unet是通过同维度矩阵拼接来融合特征的

torch代码:

concat2 = torch.cat([convt1,conv4],dim=1)# dim = 1 意味着在第1维度方向(第1维也就是列为4的方向)进行叠加# 对于更高维的数据,也就是在dim = x 时,即x所对应维度方向进行叠加UNet主要创新点

采取将低级特征图与后面的高级特征图进行融合操作

完全对称的U型结构使得前后特征融合更为彻底,使得高分辨率信息与低分辨率信息在目标图片中增加

结合了下采样时的低分辨率信息(提供物体类别识别依据)和上采样时的高分辨率信息(提供精准分割定位依据),此外还通过融合操作(跳跃结构)填补底层信息以提高分割精度.(分辨率就是图片的尺寸)

对高层语义特征与底层空间信息的理解

越底层的特征蕴含的空间信息(分割定位特征)更多,语义特征(就是类别判断特征,像素点可以分到哪一个类别中去)更少,越高级的特征蕴含的空间信息更少,语义特征更多

底层特征图片更偏向于组成图像的基本单元,如点,线,边缘轮廓

高层抽象的特征就更抽象,更近似于表示的是图像的语义信息

注:图片来源于神经网络可视化论文《Visualizing and Understanding Convolutional Networks》

UNet与FCN的比较1.编解码结构

它们的结构都用了一个比较经典的思路,也就是编码和解码(encoder-decoder)结构,该结构早在2006年就被Hinton提出来发表在了nature上。当时这个encoder-decoder结构提出的主要作用并不是分割,而是压缩图像和去噪声。输入是一幅图,经过下采样的编码,得到一串比原先图像更小的特征,相当于压缩,然后再经过一个解码,理想状况就是能还原到原来的图像。这样的话我们存一幅图的时候就只需要存一个特征和一个解码器即可。同理,这个思路也可以用在原图像去噪,做法就是在训练的阶段在原图人为地加上噪声,然后放到这个编码解码器中,目标是可以还原得到原图。在UNet与FCN的目标任务中,是得到一张Mask掩码图,实现端到端(由图得到图),这与Hinton提出的编解码操作不谋而合。

和FCN相比,U-Net的第一个特点是完全对称,也就是左边和右边是很类似的,而FCN的解码器部分相对简单,只用了一个反卷积的操作,之后并没有跟上卷积结构。

2.全卷积结构UNet和FCN一样, 是全卷积形式, 没有全连接层(即没有固定图的尺寸)——全连接层输入是提前固定好的,所以容易适应很多输入尺寸大小3.跳跃结构,即特征融合操作UNet相比FCN,跳跃结构更多,更彻底,每一层下采样都与后面每一次上采样对应,一个经验的解释(大量实验)就是跳级连接能够保证特征更加精细UNet是拼接操作,而FCN是加操作模型torch代码解析import torch.nn as nnimport torch.nn.functional as Fimport torch.utils.dataimport torch""" 构造上采样模块--左边特征提取基础模块 """class conv_block(nn.Module): """ Convolution Block """ def __init__(self, in_ch, out_ch): super(conv_block, self).__init__() self.conv = nn.Sequential( nn.Conv2d(in_ch, out_ch, kernel_size=3, stride=1, padding=1, bias=True), # 在卷积神经网络的卷积层之后总会添加BatchNorm2d进行数据的归一化处理,这使得数据在进行Relu之前不会因为数据过大而导致网络性能的不稳定 nn.BatchNorm2d(out_ch), nn.ReLU(inplace=True), nn.Conv2d(out_ch, out_ch, kernel_size=3, stride=1, padding=1, bias=True), nn.BatchNorm2d(out_ch), nn.ReLU(inplace=True)) def forward(self, x): x = self.conv(x) return x""" 构造下采样模块--右边特征融合基础模块 """class up_conv(nn.Module): """ Up Convolution Block """ def __init__(self, in_ch, out_ch): super(up_conv, self).__init__() self.up = nn.Sequential( nn.Upsample(scale_factor=2), nn.Conv2d(in_ch, out_ch, kernel_size=3, stride=1, padding=1, bias=True), nn.BatchNorm2d(out_ch), nn.ReLU(inplace=True) ) def forward(self, x): x = self.up(x) return x""" 模型主架构"""class U_Net(nn.Module): """ UNet - Basic Implementation Paper : https://arxiv.org/abs/1505.04597 """ # 输入是3个通道的RGB图,输出是0或1——因为我的任务是2分类任务 def __init__(self, in_ch=3, out_ch=2): super(U_Net, self).__init__() # 卷积参数设置 n1 = 64 filters = [n1, n1 * 2, n1 * 4, n1 * 8, n1 * 16] # 最大池化层 self.Maxpool1 = nn.MaxPool2d(kernel_size=2, stride=2) self.Maxpool2 = nn.MaxPool2d(kernel_size=2, stride=2) self.Maxpool3 = nn.MaxPool2d(kernel_size=2, stride=2) self.Maxpool4 = nn.MaxPool2d(kernel_size=2, stride=2) # 左边特征提取卷积层 self.Conv1 = conv_block(in_ch, filters[0]) self.Conv2 = conv_block(filters[0], filters[1]) self.Conv3 = conv_block(filters[1], filters[2]) self.Conv4 = conv_block(filters[2], filters[3]) self.Conv5 = conv_block(filters[3], filters[4]) # 右边特征融合反卷积层 self.Up5 = up_conv(filters[4], filters[3]) self.Up_conv5 = conv_block(filters[4], filters[3]) self.Up4 = up_conv(filters[3], filters[2]) self.Up_conv4 = conv_block(filters[3], filters[2]) self.Up3 = up_conv(filters[2], filters[1]) self.Up_conv3 = conv_block(filters[2], filters[1]) self.Up2 = up_conv(filters[1], filters[0]) self.Up_conv2 = conv_block(filters[1], filters[0]) self.Conv = nn.Conv2d(filters[0], out_ch, kernel_size=1, stride=1, padding=0)# 前向计算,输出一张与原图相同尺寸的图片矩阵 def forward(self, x): e1 = self.Conv1(x) e2 = self.Maxpool1(e1) e2 = self.Conv2(e2) e3 = self.Maxpool2(e2) e3 = self.Conv3(e3) e4 = self.Maxpool3(e3) e4 = self.Conv4(e4) e5 = self.Maxpool4(e4) e5 = self.Conv5(e5) d5 = self.Up5(e5) d5 = torch.cat((e4, d5), dim=1) # 将e4特征图与d5特征图横向拼接 d5 = self.Up_conv5(d5) d4 = self.Up4(d5) d4 = torch.cat((e3, d4), dim=1) # 将e3特征图与d4特征图横向拼接 d4 = self.Up_conv4(d4) d3 = self.Up3(d4) d3 = torch.cat((e2, d3), dim=1) # 将e2特征图与d3特征图横向拼接 d3 = self.Up_conv3(d3) d2 = self.Up2(d3) d2 = torch.cat((e1, d2), dim=1) # 将e1特征图与d1特征图横向拼接 d2 = self.Up_conv2(d2) out = self.Conv(d2) return out

参考文章:

https://blog.csdn.net/weixin_40519315/article/details/104408388

本文链接地址:https://www.jiuchutong.com/zhishi/299999.html 转载请保留说明!

上一篇:axios 中如何取消请求_从不会使用到精通原理_番茄出品(如何取消axios请求)

下一篇:JS数组方法中哪些会改变原数组,哪些不会?(js中数组方法有哪些)

  • 快手极速版怎么获得金币(快手极速版怎么卡无限金币)

    快手极速版怎么获得金币(快手极速版怎么卡无限金币)

  • 9900k支持多少内存频率(9900k支持多大内存频率)

    9900k支持多少内存频率(9900k支持多大内存频率)

  • 小红书停止运行(小红书停止推送)

    小红书停止运行(小红书停止推送)

  • 升级到icloud云盘打不开(升级到icloud云盘 点升级没反应)

    升级到icloud云盘打不开(升级到icloud云盘 点升级没反应)

  • a5处理器相当于骁龙几(a5 处理器)

    a5处理器相当于骁龙几(a5 处理器)

  • 步步高家教机黑屏原因(步步高家教机黑屏死机)

    步步高家教机黑屏原因(步步高家教机黑屏死机)

  • 平板登录不了腾讯会员(腾讯ipad登录不了)

    平板登录不了腾讯会员(腾讯ipad登录不了)

  • 使用屏幕保护程序是为了什么(使用屏幕保护程序的目的是)

    使用屏幕保护程序是为了什么(使用屏幕保护程序的目的是)

  • 用户被锁定是什么意思(用户也被锁定)

    用户被锁定是什么意思(用户也被锁定)

  • 正在准备windows请不要关机需要多久(正在准备windows请勿关闭计算机 卡住)

    正在准备windows请不要关机需要多久(正在准备windows请勿关闭计算机 卡住)

  • 充电器没坏手机充不进去电怎么办(充电器没坏手机充不进去电怎么办苹果)

    充电器没坏手机充不进去电怎么办(充电器没坏手机充不进去电怎么办苹果)

  • 讯飞输入法繁体字改成简体怎么改(讯飞输入法繁体字怎么打)

    讯飞输入法繁体字改成简体怎么改(讯飞输入法繁体字怎么打)

  • 微信没有转账图标消失(微信中没有转账)

    微信没有转账图标消失(微信中没有转账)

  • 苹果7p红色是限量的吗(苹果手机7p红色是限量版)

    苹果7p红色是限量的吗(苹果手机7p红色是限量版)

  • 火山小视频亚健康一般封几天(…火山小视频 原版)

    火山小视频亚健康一般封几天(…火山小视频 原版)

  • 微信视频正常多久过期(微信视频时间多长)

    微信视频正常多久过期(微信视频时间多长)

  • 微信发送视频最长时间是多少(微信发送视频最多几分钟)

    微信发送视频最长时间是多少(微信发送视频最多几分钟)

  • soul如何恢复旧版本(如何恢复soul的数据数据)

    soul如何恢复旧版本(如何恢复soul的数据数据)

  • 荣耀20支持指纹解锁吗(荣耀20支持指纹支付吗)

    荣耀20支持指纹解锁吗(荣耀20支持指纹支付吗)

  • 酷狗vip可以2人一起用吗(酷狗vip可以2人应该怎么登陆)

    酷狗vip可以2人一起用吗(酷狗vip可以2人应该怎么登陆)

  • 没接通自动通话结束(未接电话打过去自动挂断)

    没接通自动通话结束(未接电话打过去自动挂断)

  • 车载蓝牙接收器怎么连接汽车音响(车载蓝牙接收器怎么调频率)

    车载蓝牙接收器怎么连接汽车音响(车载蓝牙接收器怎么调频率)

  • 三星s9怎么打开开发者模式(三星s9怎么打开开发者选项)

    三星s9怎么打开开发者模式(三星s9怎么打开开发者选项)

  • 来电显示美国电话号码是怎么回事(来电显示美国电话打了好几个)

    来电显示美国电话号码是怎么回事(来电显示美国电话打了好几个)

  • 拼多多悬浮窗怎么删除(拼多多悬浮窗怎么关掉三星手机)

    拼多多悬浮窗怎么删除(拼多多悬浮窗怎么关掉三星手机)

  • 陌陌怎么能定位到外地(陌陌怎么能定位到外地搜附近的人)

    陌陌怎么能定位到外地(陌陌怎么能定位到外地搜附近的人)

  • Linux系统怎么查看主机的cpu总个数和总内存?(linux系统怎么查看mac地址)

    Linux系统怎么查看主机的cpu总个数和总内存?(linux系统怎么查看mac地址)

  • scanregistry.exe - scanregistry是什么进程 有什么用

    scanregistry.exe - scanregistry是什么进程 有什么用

  • RealSense D435i深度相机介绍(realsense d415参数)

    RealSense D435i深度相机介绍(realsense d415参数)

  • 帝国cms怎么百度自动提交(帝国cms视频教程)

    帝国cms怎么百度自动提交(帝国cms视频教程)

  • 增值税专用发票可以开电子发票吗
  • 建筑发票开具与土增税扣有什么关系?
  • 个人所得税查询工资与实际工资不符是为何
  • 老板自己出钱买股票
  • 综合所得申报如何手工填写信息
  • 如何证明自己是低保户
  • 小规模纳税人劳务分包税率
  • 政府预算年度
  • 小规模纳税人季度多少免税
  • 未分配利润期末余额在借方还是贷方
  • 现金支出的一般程序
  • 会计分录怎么确认借贷方向
  • 支付金融机构手续费计入什么费用
  • 计提摊销房租会计分录
  • 公司名字开错了,认证过了怎么处理
  • 办公室购置空调的词语
  • 营改增后还有消费税吗
  • 应交税费应交堤围费的税率多少?
  • 普通增值税 税点
  • 减税降费各项政策
  • 现金流量净额为负说明什么
  • 外贸企业出口退税申报期限
  • 基金赎回未到账可继续买吗?
  • 客户到款打到子公司账上如何转回
  • 土地交易服务费分录
  • 潽金融资租赁有限公司
  • mac终端更新系统
  • 广告牌费用会计分录
  • 微信获取用户id失败如何解决
  • kb4586853更新
  • windows的记事本的扩展名
  • autorun.exe无法运行
  • 企业的做账流程有哪些
  • 员工辞退补偿金需要交个税吗
  • 研发机构采购国产设备退税管理办法
  • 货运代理开票
  • 处置二手固定资产
  • 零售企业进货退税政策
  • Yii中CArrayDataProvider和CActiveDataProvider区别实例分析
  • 车间一般耗材计入
  • 2023跨年烟花链接
  • setenforce 0命令
  • 海外佣金需要交税吗
  • 怎样才能帮你
  • 研发费用资本化计入什么科目
  • 帝国cms栏目自定义字段
  • 新个税累计免税额
  • 认缴的出资额
  • 一般纳税人企业所得税5%还是25%
  • 2020年工资标准表
  • 非货币性资产含义
  • 预付账款期末可能有余额吗
  • 待抵扣进项税计入其他应付账款吗
  • 归还银行的贷款会计分录
  • 老板从公司借款怎么处理
  • 机关和事业单位党的支部委员会每届任期
  • 进项发票已入账进项税,但是未抵扣怎么办
  • 飞机票退票费报销凭证图片
  • 资产减值的含义与应用范围
  • 水利建设基金要预缴吗
  • 一个关于数据库表中的各条记录
  • Win2008 R2 mysql 5.5 zip格式mysql 安装与配置
  • win7系统资源管理器频繁未响应
  • windows2000server安装过程
  • windows route metric
  • win7系统怎么打开开机启动项
  • Linux配置防火墙端口
  • win8.1玩英雄联盟
  • 加强 提升 优化
  • linux 安装指令
  • win8.1怎么用
  • python 文件头
  • 批处理打开网络连接
  • 噩梦 1-4
  • 公益性公墓免交税吗
  • 浙江国地税联合电子税务局
  • 车船使用税税
  • 税收优惠政策有经营和居民住宅出租
  • 分支机构如何变更为独立纳税人?
  • 车辆检测费属于什么科目
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设