深度学习编码解码结构-以及kreas简单实现

图像分割中的编码解码结构(Encoder-Decoder Model)是一种广泛应用的网络架构,它有效地结合了特征提取(编码)和分割结果生成(解码)两个过程。以下是对图像分割中编码解码结构的详细解析:

一、编码器(Encoder)

功能
编码器负责从输入图像中提取有用的特征信息。这些特征信息通常是图像中不同对象或区域的抽象表示,有助于后续的分割任务。

工作原理

  • 特征提取:编码器通过一系列卷积层(Convolutional Layers)、池化层(Pooling Layers)等网络结构,逐步从输入图像中提取高级语义特征。这些特征图(Feature Maps)的分辨率逐渐降低,但包含的信息量逐渐增加,能够捕捉到图像中的关键信息。
  • 下采样:在编码过程中,通常会使用池化层或步长大于1的卷积层进行下采样,以降低特征图的分辨率,减少计算量,并增加感受野(Receptive Field),使模型能够捕捉到更全局的信息。

二、解码器(Decoder)

功能
解码器负责将编码器提取的特征信息转换为最终的分割结果。它逐步恢复特征图的分辨率,并生成与输入图像相同尺寸的分割掩码(Segmentation Mask),其中每个像素都被分配了一个类别标签。

工作原理

  • 上采样:解码器通过上采样操作(如转置卷积、双线性插值等)逐步恢复特征图的分辨率。上采样过程与编码器的下采样过程相反,旨在将特征图的尺寸恢复到与输入图像相同或接近。
  • 特征融合:在解码过程中,通常会将编码器中的某些特征图与解码器中对应尺度的特征图进行融合(如拼接、相加等),以结合不同尺度的信息,提高分割结果的准确性。这种特征融合方式有助于模型捕捉到更精细的细节信息。
  • 输出层:解码器的最后一层通常是一个卷积层,用于将特征图转换为分割掩码。该卷积层的输出通道数与类别数相同,每个通道对应一个类别的预测概率图。通过应用softmax函数或argmax操作,可以将这些概率图转换为最终的分割掩码。

三、代码实现


采用卷积-BN-池化的结构,设计下采样模块,每经过一次下采样模块,通道数翻倍,特征图长宽缩小一倍。

采用转置卷积实现上采样模块,每经过一次上采样,通道数减半,特征图长宽放大一倍

import keras
from tensorflow.keras import Model, layers
from tensorflow.keras.utils import plot_model
def DownSample(filters):
    '''
    卷积-BN-池化结构,每经过一次下采样,通道数翻倍,特征图长宽缩小一半
    :param filters:卷积核参数 ,输出通道数
    :return:
    '''
    Layer = keras.Sequential(layers=[
        layers.Conv2D(filters=filters, strides=1, kernel_size=3, padding="same"),
        layers.BatchNormalization(),
        layers.MaxPooling2D(strides=2, pool_size=2, padding="same"),
        layers.ReLU()
    ], name="DownSample"+str(filters))
    return Layer
def UpSample(filters):
    '''
    转置卷积,每经过一次转置卷积,通道数减半,特征图长宽翻倍
    :param filters: 输出通道数
    :return:
    '''
    Layer = keras.Sequential(layers=[
        layers.Convolution2DTranspose(filters=filters, kernel_size=3, strides=2, padding="same",
                                      activation="relu")
    ], name="UpSample"+str(filters))
    return Layer


def En_De():
    x = layers.Input(shape=(256,256,3))
    Down = [DownSample(64),
          DownSample(128),
          DownSample(256),
          DownSample(512)]
    y = Down[0](x)
    for Layer in Down[1:]:
        y=Layer(y)

    Up=[
        UpSample(256),
        UpSample(128),
        UpSample(64),
        UpSample(32)
    ]
    for Layer in Up:
        y = Layer(y)
        
    y = layers.Conv2D(name="Result", filters=1, padding="same", kernel_size=3, strides=1, activation="sigmoid")(y)
    model = Model(x, y)
    return model


En_De = En_De()
plot_model(En_De, "Model.png", show_shapes=True)
En_De.summary()



结果:

模型图:

四、网络的训练

网络的训练

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

链路聚合概述

技术背景: 随着网络规模不断扩大,人们对骨干链路的带宽吞吐量与可靠性提出了越来越高的要求。根据传统的方案,只能将当前链路更换为更高速的链路。但是更换链路需要付出较高的成本费用,而且灵活性差,因此我们需要探索…

旷野之间4 - 100 个 Kubernetes 面试问题及答案

100 个 Kubernetes 面试问题及答案 Kubernetes 简介 什么是 Kubernetes? Kubernetes 是一个开源容器编排平台,可自动部署、扩展和管理容器化应用程序。 什么是容器? 容器是一个轻量级、独立的、可执行软件包,其中包含运行应用…

ctfshow-web入门-文件上传(web166、web167)(web168-web170)免杀绕过

目录 1、web166 2、web167 3、web168 4、web169 5、web170 1、web166 查看源码,前端只让传 zip 上传 zip 成功后可以进行下载 随便搞一个压缩包,使用记事本编辑,在其内容里插入一句话木马: 上传该压缩包,上传成功…

SSL 证书错误:如何修复以及错误发生的原因

SSL证书可以提升网站的可信度。然而,如果您的SSL证书出现错误,您可能会得到一个“不安全”的标签,这可能会导致访问者失去对您网站的信任并转向竞争对手。 本文将介绍SSL证书错误的原因及其对用户的潜在影响。随后,我们将提供详细…

Proteus + Keil单片机仿真教程(六)多位LED数码管的动态显示

上一节我们通过锁存器和八个八位数码管实现了多个数码管的静态显示,这节主要讲解多位数码管的动态显示,所谓的动态显示就是对两个锁存器的控制。考虑一个问题,现在给WS位锁存器增加一个循环,让它从1111 1110到0111 1111会发生什么事情?话不多说,先上代码: #include<…

stm32——AD采集以及DMA

今天继续我们的STM32的内容学习&#xff0c;我使用的单片机是STM32F103VCT6,通过Keil Array Visualization软件来观测AD采样出来的波形。先来看看本次实验用到的硬件知识。 首先是ADC&#xff08;Analog-to-Digital Converter&#xff09;是模拟信号转数字信号的关键组件&#…

网络编程!

网络编程 【1】网络开发架构 &#xff08; 1 &#xff09; C / S 架构 C : client &#xff08;客户端&#xff09; S: server (服务端) APP - 就是服务端 C/S 架构通过客户端软件和服务器之间的交互&#xff0c;实现了前端界面和后端业务逻辑的分离&#xff0c;提供了一种…

电脑 DNS 缓存是什么?如何清除?

DNS&#xff08;Domain Name System&#xff0c;域名系统&#xff09;是互联网的重要组成部分&#xff0c;负责将人类易记的域名转换为机器可读的 IP 地址&#xff0c;从而实现网络通信。DNS 缓存是 DNS 系统中的一个关键机制&#xff0c;通过临时存储已解析的域名信息&#xf…

filex用户手册中文版解读

filex用户手册 filex的用户手册&#xff0c;看着好头疼呢&#xff0c;主要是没有&#x1f58a;记录&#xff0c;感觉就是浮在空中&#xff0c;飘在天上&#xff0c;好像懂了&#xff0c;又好像啥也没了解到&#xff0c;哈哈&#xff0c;有点意思。为了解决这个bug&#xff0c;…

力扣-回溯法

何为回溯法&#xff1f; 在搜索到某一节点的时候&#xff0c;如果我们发现目前的节点&#xff08;及其子节点&#xff09;并不是需求目标时&#xff0c;我们回退到原来的节点继续搜索&#xff0c;并且把在目前节点修改的状态还原。 记住两个小诀窍&#xff0c;一是按引用传状态…

阿里云Linux中安装MySQL,并使用navicat连接以及报错解决

首先查询是否安装MySQL // linux 使用yum安装或者rpm安装。(就是一个安装工具类似于applStore&#xff0c;brew不必在意) // 区别&#xff1a;yum会自动安装你要安装的东西的其他依赖&#xff0c;rpm不会但会提示你需要安装的东西&#xff0c;比较麻烦&#xff0c;所以采用yum安…

日常的学习

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;Android ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 正文 7.11 resAndroidManifest 笔记 <> <> selector shape resources main下的AndroidMainifest.xml文件 application …

Windows系统MySQL的安装,客户端工具Navicat的安装

下载mysql安装包&#xff0c;可以去官网下载&#xff1a;www.mysql.com。点击downloads 什么&#xff1f;后面还有福利&#xff1f; 下载MySQL 下载企业版&#xff1a; 下载Windows版 5点多的版本有点低&#xff0c;下载8.0.38版本的。Window系统。下载下面的企业版。不下载…

C++笔试真题

可变分区管理方案 最佳适应&#xff1a;空闲区按容量递增最坏适应&#xff1a;空闲区按容量递减首先适应&#xff1a;空闲区按地址递增 C的结构体中有构造函数。 Linux新建用户或组 useradd&#xff1a;命令用于建立用户账号usermod&#xff1a;修改用户账号groupadd&#…

JAVA中的回溯算法解空间树,八皇后问题以及骑士游历问题超详解

1.回溯算法的概念 回溯算法顾名思义就是有回溯的算法 回溯算法实际上一个类似枚举的搜索尝试过程&#xff0c;主要是在搜索尝试过程中寻找问题的解&#xff0c;当发现已不满足求解条件时&#xff0c;就“回溯”返回&#xff0c;尝试别的路径。回溯法是一种选优搜索法&#xff…

kibana连接elasticsearch(版本8.11.3)

前言 elasticsearch在8版本之后就出现了很大变化&#xff0c;由于kibana版本需要需elasticsearch进行版本对象&#xff0c;kibana连接方式也出现了很大变化。我在这里记录下自己的踩坑记录。 服务部署 本文中的服务都是在docker环境中部署的。其中elasticsearch版本和kibana版…

攻防世界(PHP过滤器过滤)file_include

转换过滤器官方文档&#xff1a;https://www.php.net/manual/zh/filters.convert.php#filters.convert.iconv 这道题因为convert.base64-encode被过滤掉了&#xff0c;所以使用convert.iconv.*过滤器 在激活 iconv 的前提下可以使用 convert.iconv.* 压缩过滤器&#xff0c; 等…

【Python实战因果推断】31_双重差分2

目录 Canonical Difference-in-Differences Diff-in-Diff with Outcome Growth Canonical Difference-in-Differences 差分法的基本思想是&#xff0c;通过使用受治疗单位的基线&#xff0c;但应用对照单位的结果&#xff08;增长&#xff09;演变&#xff0c;来估算缺失的潜…

加减计数器

目录 描述 输入描述&#xff1a; 输出描述&#xff1a; 参考代码 描述 请编写一个十进制计数器模块&#xff0c;当mode信号为1&#xff0c;计数器输出信号递增&#xff0c;当mode信号为0&#xff0c;计数器输出信号递减。每次到达0&#xff0c;给出指示信号zero。 模块的接…

昇思25天学习打卡营第18天|MindNLP ChatGLM-6B StreamChat

MindNLP ChatGLM-6B StreamChat MindNLP ChatGLM-6B StreamChat是基于MindNLP框架和ChatGLM-6B模型实现的聊天应用&#xff0c;利用自然语言处理技术&#xff0c;实现与用户的自然语言交流。这样的应用可以广泛应用于智能客服、在线助理和社交聊天等场景。 在当前技术环境下&a…