深度学习的分割方法

news2024/12/21 23:07:48

FCN:基于深度学习的语义分割模型

语义分割的定义:对像素进行精细化的分类。

用深度学习来解决语义分割,所面临的主要问题是:

  • 早期的深度模型用于分类,输出一维向量,无法分割

  • 深度模型不够精细

动机

  1. 如何让网络的可以用于分割?

让网络输出二维特征就可以了

如何令早期神经网络输出二维图像?

去掉全连接层。

  1. 如何让模型的输出足够精细?

不精细的原因是?

经过多层卷积池化,feature map的分辨率较低。

比如224*224的图像输出为7*7的feature map,很显然无法很精细

一种可行的方法就是,再把7*7给变大

具体方法就是反卷积。

模型结构

由于1/32分辨率太低,直接分割很粗糙,因此先扩大再与1/16的拼在一起...(yolov3后面的思路灵感来源于此)

FCN的pytorch实现

前面就是一个常规的CNN网络,将一张图像变成feature map。而后,进行反卷积,得到原图尺寸。

输出尺寸
输入图像224×224
卷积1224×224
池化1112×112
卷积2112×112
池化256×56
卷积356×56
池化328×28
卷积428×28
池化414×14
卷积514×14
反卷积6224×224
输出224×224

实现细节

反卷积

结果展示

反池化和反卷积:只是把尺寸恢复了,卷积(或池化)过程中丢失的信息并没有恢复

下采样(encoding)下采样(decoding)

UNet

DeepLab系列语义分割

FCN存在的问题

  1. 池化层的存在导致细节信息丢失

  2. 空间不变性(在左边、右边不对分类结果有影响)对分割任务不友好

难点1: 细节信息丢失

本质上,语义分割是一种包含了低维语义特征的任务。

对于边缘、纹理、颜色等信息较为敏感。

而池化层的存在导致了这些细节信息丢失,即便进行上采样也无法恢复。

之前讨论过,池化的意义在于对信息进行浓缩,从而扩大感受野,提高信息的维度。

那么如何才能在不损失细节信息的情况下,尽量扩大感受野?

解决方案1: 空洞卷积

 空洞卷积可以在不进行池化的前提下,尽可能地扩大感受野,从而快速提高信息的浓缩程度。

练习:计算上述模型的最终感受野

空洞卷积的优势: 扩大感受野,保存细节信息

空洞卷积的劣势: 小物体不够健壮

难点2: 空间不变性

CNN的一个重大优势在于空间不变性。

同一个物体,在图像的不同位置,不同形态,不同角度,都应当输出相同的值。

例如,一张猫的图像,总会输出猫类别的one hot向量。

但是对于分割来说,这种空间不变形会带来不便性。

对应解决方案:CRF

引入了fully connected CRF,从原图作为输入,结合特征图进行了优化。

CRF

条件随机场 (conditional random field)

前置知识

CRF是一种判别模型,利用条件概率图模型建模条件概率�(�|�)完成判别任务。

也就是说,CRF是对一个条件概率进行估计。

 CRF用于语义分割

动机

图像分割任务的核心目的在于对每个像素都分配一个标签。

然而,由于池化卷积的处理方式,导致目标区域的边缘存在较为模糊的地方。

那么就需要CRF为边缘提供新的信息,从而得到更好的边缘。

建立随机场

给定一张图像:

* 定义 $X=\{X_1, X_2, ..., X_N\}$, 其中$X_i$为第i个像素的预测标签;
* 定义 $L=\{L_1, L_2, ..., L_N\}$, 其中$L_i$为第i个像素的真实标签;
* 定义 $I=\{I_1, I_2, ..., I_N\}$, 其中$I_i$为第i个像素数据。

直观解释

每个像素点(RGB为向量)可以作为观测值,我们需要根据观测值为每个像素点推测出一个标签。

因此,现在主流的语义分割模型,基本都是以下框架

CRF循环多少次?多少个类别,循环多少次

缺点

然而,这种方法存在一个比较大的问题,即速度慢

速度慢的原因,主要来自于CRF。

CRF的求解复杂度较高,因此需要更长的时间来优化结果。

解决方案

用训练的方式近似地求解CRF

也就是说,将CRF过程分解成一系列的卷积过程,用RNN的方式进行求解。

step2

其次,message passing步骤中,是用m个高斯滤波器在Q上滤波实现的。

相当于对feature map进行模糊处理,等价于卷积操作。

得到如下结果

step3

第三步:compatibility transform

step4

之后,进行unary potentials,即(相减)

也就是将上次结果和这次结果的增量做对比。

最后,进行归一化,采用softmax实现。

CRF as RNN

将上述视为一个RNN过程,对每一类的feature map都进行CRF处理,即可得到较优的结果。

实现

示例代码

 DeepLab v1总体框图

分割 要得到一个二维的东西,因此,将fc--->conv2d:

code

DeepLabV2

DeepLabV2是对DeeplabV1的改进,主要改进包含以下内容:

  • 新的bottelNet

  • ASPP

  • 改进的CRF

ASPP

ASPP的灵感来自于SPPNet

旨在于将不同尺度的特征融合到一起

网络结构

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

谈谈互联网广告拍卖机制的发展:从GSP到DeepAuction

广告作为各互联网公司收入的大头,其拍卖机制设计因此也是关乎营收最为核心的方面。所谓的广告拍卖机制设计是指如何将有限的广告位分配给合适的广告,从而达到客户、平台以及用户三方的价值最优。 当前的广告拍卖被建模为暗拍的形式,即N个广告…

ROS:launch启动文件的使用方法

目录 一、launch文件结构二、launch文件语法2.1根元素2.2参数设置2.3重映射、嵌套 三、示例3.1示例一3.2示例二3.3示例三3.4示例四 一、launch文件结构 由XML语言写的,可实现多个节点的配置和启动。 不再需要打开多个终端用多个rosrun命令来启动不同的节点了 可自动…

Swift 周报 第三十期

文章目录 前言新闻和社区App、App 内购买项目和订阅即将实行税率调整码出新宇宙Apple 公证服务更新Apple 设计大奖入围名单公布 提案通过的提案 Swift论坛推荐博文话题讨论关于我们 前言 本期是 Swift 编辑组自主整理周报的第二十一期,每个模块已初步成型。各位读者…

C++进阶 —— C++11新增容器

目录 一,array 二,forward_list 三,unordered unordered_set unordered_multiset unordered_map unordered_multimap 静态数组array、forward_list、unordered系列; 一,array array是固定大小尺寸的序列容器&am…

2023年6月东莞/惠州/深圳CPDA数据分析师认证招生

CPDA数据分析师认证是大数据方面的认证,助力数据分析人员打下扎实的数据分析基础知识功底,为入门数据分析保驾护航。 帮助数据分析人员掌握系统化的数据分析思维和方法论,提升工作效率和决策能力,遇到问题能够举一反三&#xff0c…

100天精通Golang(基础入门篇)——第1天:学习Go语言基本概念

🌷 博主 libin9iOak带您 Go to Golang Language.✨ 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《I…

实战:Spring Cloud Stream消息驱动框架整合rabbitMq

文章目录 前言Spring Cloud Stream简析Spring Cloud Stream与rabbitmq整合1、添加pom依赖2、application.yml增加mq配置3、定义输入输出信道4、使用输入输出信道收发消息5、模拟正常消息消费6、模拟异常消息 前言 相信很多同学都开发过WEB服务,在WEB服务的开发中一…

Web端3D模型轻量化工具如何实现建筑行业“数字化”建设?

随着数字化技术的飞速发展,建筑行业也在不断寻找新的技术手段来提供高产能和建筑质量。其中,Web端3D模型轻量化工具HOOPS Communicator SDK在建筑行业中的应用不断地得到了市场的广泛注意和应用。本文将深入探讨HOOPS Communicator在建筑行业中的应用及其…

转动的车轮-第14届蓝桥杯国赛Scratch真题初中级组第2题

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第144讲。 转动的车轮,本题是2023年5月28日上午举行的第14届蓝桥杯国赛Scratch图形化编程初中级组真题第2题…

Python数据攻略-DataFrame的数据操作

大家好,我是Mr数据杨,今天我们就来谈谈Python中的数据访问和修改。 首先,你们一定都听过《三国演义》吧,里面的人物和事情其实就像我们Python中的数据。比如曹操就像我们的数据元素,他的性格特点、军事才能等就像我们…

5年开发经验,看完这份37W字Java高性能架构,终于拿到架构师薪资

其实现在很多的开发人员并不能解决从架构的角度全方位地了解在Java编程过程中各阶段会出现的典型问题,更没办法深入到底层原理了解问题出现的原因! 且随着当下面试越来越深入到底层,如果大家对于底层的原理不了解的话,是很难做出…

JDK11+mybatis-plus+shardingsphere分库分表

1、引入jar dynamic-datasource-spring-boot-starter&#xff1a;2.5.6 sharding-jdbc-spring-boot-starter&#xff1a;4.1.1 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId>&…

微调样本质量胜于数量 LIMA: Less Is More for Alignment

1、总体介绍 大型语言模型的训练分为两个阶段&#xff1a;&#xff08;1&#xff09;从原始文本中进行无监督的预训练&#xff0c;以学习通用的表征&#xff1b;&#xff08;2&#xff09;大规模的指令学习和强化学习&#xff0c;以更好地适应最终任务和用户的偏好。 作者通过…

作为网络安全工程师,都有哪些公司可以选?

招聘平台 首选内推 其次是公司自有招聘平台 再是第三方平台&#xff1a;boos直聘、前程无忧、拉钩、猎聘、牛客、牛聘 乙方 启明星辰 商标&#xff1a;云众可信&#xff0c;云子可信 投资&#xff1a;网御星云&#xff0c;恒安嘉新 拳头产品&#xff1a;Secin 社区、天清…

企企通×天能股份SRM一期项目成功上线,持续深化企业采购数字化

近期&#xff0c;企企通凭借在赋能客户数字化转型方面的优秀实践与丰富的解决方案&#xff0c;荣获天能电池集团股份有限公司&#xff08;以下简称“天能股份”&#xff09;颁发的“2022年度数字化优秀供应商奖”&#xff0c;同时&#xff0c;企企通SRM项目还获得天能股份采购管…

vue-cli4打包优化

项目开始时webpack配置 vue-cli3以后&#xff0c;我们修改webpack配置&#xff0c;需要自己在项目根路径下创建vue.config.js文件。 一、 配置 proxy 跨域 使用vue-cli发开项目&#xff0c;在本地开发环境中&#xff0c;如果遇到跨域的问题。可以通过配置proxy的方式&#xff…

uniapp(二) 之 uniapp 搭建与组件库的引用

小扩展&#xff1a; rpx&#xff08;responsive pixel&#xff09;:可以根据屏幕宽度自适应。规定屏幕宽度为750rpx。如果iphon6上&#xff0c;屏幕宽度为375px,共有750个像素&#xff0c;则750rpx 375培训 750物理像素&#xff0c;1rpx 0.5px 1物理像素。 页面跳转&#xff…

你知道TikTok的推荐算法吗?TikTok数据分析平台哪家好?

作为当下最受欢迎的社交媒体&#xff0c;TikTok这几年的成绩大家也是有目共睹了&#xff0c;超10亿的月活加上大量活跃的年轻人&#xff0c;让无数企业和品牌为之心动。入局的人越来越多&#xff0c;想要在众多竞争者中脱颖而出&#xff0c;入局前需要了解TikTok底层逻辑和推荐…

Treadlocal源码实例详解

我们都知道treadlocal维护变量时候&#xff0c;可以为每个线程维护一个独立的副本&#xff0c;改变的是自己线程的数据。 ThreadLocal公用方法有四个&#xff1a;get&#xff0c;set&#xff0c;remove&#xff0c;intiValue 既然threadLocalMap是局部变量&#xff0c;所以他存…

内网安全:内网渗透.(拿到内网主机最高权限 vulntarget 靶场 1)

内网安全&#xff1a;内网渗透.&#xff08;拿到内网主机最高权限&#xff09; 内网穿透又被称为NAT穿透&#xff0c;内网端口映射外网&#xff0c;在处于使用了NAT设备的私有TCP/IP网络中的主机之间建立连接的问题。通过映射端口&#xff0c;让外网的电脑找到处于内网的电脑。…