浅入浅出语义分割

2024-03-24 08:40
文章标签 分割 语义 浅入 浅出

本文主要是介绍浅入浅出语义分割,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


title: 浅入浅出语义分割
date: 2020-05-21 17:31:02


文章目录

    • 0. 前言
    • 1. CNN
      • 1.1. LeNet - 5
      • 1.2. AlexNet
      • 1.3. VGG - 16
    • 2. 语义分割
      • 2.1. FCN
        • 2.1.1. 转置卷积
        • 2.1.2. 性能指标
        • 2.1.3. 转置卷积(解码)后的输出

0. 前言

与祁老师一同参加2020年软件杯,选择了一个有关语义分割的题目。(项目完成一大半的时候,由于出题方很 nt 地中途把题目改成了目标识别和检测,我们最终被迫放弃。。。)

语义分割具体是什么就不解释了,大概是深度学习在计算机视觉上的一种运用罢了。

为了入门语义分割,我粗略地从经典的CNN网络,了解到语义分割的鼻祖——FCN网络,笔记如下。

1. CNN

几个经典的CNN网络,由几篇经典论文提出。

参考:深度学习视频 - 吴恩达

1.1. LeNet - 5

1980年的一篇论文种提出。对手写数字的灰度图(32x32x1)进行分类,基本结构是:conv - pool - conv - pool - fc - fc - output,激活函数是sigmoidtanh(论文信息见图片左下角)。

1

1.2. AlexNet

2012年论文:ImageNet Classification with Deep Convolutional
Neural Networks。对 227x227x3 的图像进行 1000 种分类,大致的网络结构如下图。它相比于LeNet的优点:

  • 网络更大,参数更多。

  • 使用 ReLu 激活函数。

  • 使用 Maxpooling,而不是平均 pooling

  • 使用 Dropout 防止过拟合。原理很简单:根据设定的概率,选择性地丢弃当前神经元的输出,如下图:

    5

  • 多个GPU并行计算(过时)。

  • 使用局部响应归一层 LRN (没啥用?已过时)。

2

AlexNet的5层卷积层如下(224x224加2padding结果 约等于 227x227加0padding结果,论文的描述问题,不关键):

3

1.3. VGG - 16

2015年论文:VERY DEEP CONVOLUTIONA NETWORKS FOR
LARGE-SCALE IMAGE RECOGNITION。

16代表有16层网络,其主要改进之处在于:经过多个卷积层后,再进行池化操作。基本结构如下图,[CONV 64] x2 表示:经过2个有64个filter的卷积层,卷积的规则如图上方所示。

4

2. 语义分割

2.1. FCN

参考:

  • 精读深度学习论文(18) FCN
  • FCN 论文笔记

2014年论文:Fully Convolutional Networks for Semantic Segmentation,是将深度学习用于图像语义分割的开山之作。

在VGG、AlexNet等CNN网络的基础上,用卷积层代替全连接层,并使用转置卷积进行向上采样,使得网络的输出不再是类别,而是 heat map,即 end-to-end 的网络。

6

2.1.1. 转置卷积

参考:

  • Github: Convolution arithmetic(各种卷积、反卷积示意图)
  • 如何理解深度学习中的deconvolution networks?
  • 怎样通俗易懂地解释反卷积?

一种向上采样的方法。其原理:对于卷积操作 y = C x y = Cx y=Cx x x x 是输入图像(一维), y y y 是输出图像(一维), C C C 是参数(权值)矩阵;那么转置卷积操作则是 x = C T y x = C^T y x=CTy

举例,4x4的输入,滤波器filter为3x3,没有Padding / Stride,卷积操作后输出为2x2。

2

那么, C C C 如下所示( w i , j w_{i,j} wi,j 表示filter种第i行第j列的权值):

11

转置卷积操作 x = C T y x = C^T y x=CTy 则如下所示(建议在纸上写出 C T C^T CT,就明白了):

1

转置卷积的使用:

7

2.1.2. 性能指标

参考:语义分割评估指标mIOU

8

其中,mean IU(Mean Intersection over Union, MIoU) 均交并比,是语义分割最常用的标准度量。其公式如下:

1 n c l ∑ i = 0 n c l n i i ∑ j = 0 n c l n i j + ∑ j = 0 n c l n j i − n i i \frac{1}{n_{cl}} \displaystyle\sum_{i=0}^{n_{cl}} \frac{n_{ii}}{\displaystyle\sum_{j=0}^{n_{cl}} n_{ij} + \displaystyle\sum_{j=0}^{n_{cl}} n_{ji} - n_{ii}} ncl1i=0nclj=0nclnij+j=0nclnjiniinii

  • n c l n_{cl} ncl:像素点的数量。
  • n i i n_{ii} nii:真实值是i,预测值也是i。
  • n i j n_{ij} nij:真实值是i,预测值是j。
  • n j i n_{ji} nji:真实值是j,预测值是i。

如下图,MIoU 为两圆交集与两圆并集之间的比例,理想情况下两圆重合,比例为1。

9

一个例子如下:

10

2.1.3. 转置卷积(解码)后的输出

FCN 语义分割最后是对像素进行分类, 有多少类最后的输出图像就有多少个通道, 每个通道的像素值代表了这个通道的像素应划分到哪一个类别的概率, 如果某一个像素位置在第 3 通道的值最大, 那这个位置的像素就属于第 3 个分类。

这篇关于浅入浅出语义分割的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/841055

相关文章

C++字符串提取和分割的多种方法

《C++字符串提取和分割的多种方法》在C++编程中,字符串处理是一个常见的任务,尤其是在需要从字符串中提取特定数据时,本文将详细探讨如何使用C++标准库中的工具来提取和分割字符串,并分析不同方法的适用... 目录1. 字符串提取的基本方法1.1 使用 std::istringstream 和 >> 操作符示

使用Python实现批量分割PDF文件

《使用Python实现批量分割PDF文件》这篇文章主要为大家详细介绍了如何使用Python进行批量分割PDF文件功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、架构设计二、代码实现三、批量分割PDF文件四、总结本文将介绍如何使用python进js行批量分割PDF文件的方法

使用Python将长图片分割为若干张小图片

《使用Python将长图片分割为若干张小图片》这篇文章主要为大家详细介绍了如何使用Python将长图片分割为若干张小图片,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果1. Python需求

C#中字符串分割的多种方式

《C#中字符串分割的多种方式》在C#编程语言中,字符串处理是日常开发中不可或缺的一部分,字符串分割是处理文本数据时常用的操作,它允许我们将一个长字符串分解成多个子字符串,本文给大家介绍了C#中字符串分... 目录1. 使用 string.Split2. 使用正则表达式 (Regex.Split)3. 使用

理解分类器(linear)为什么可以做语义方向的指导?(解纠缠)

Attribute Manipulation(属性编辑)、disentanglement(解纠缠)常用的两种做法:线性探针和PCA_disentanglement和alignment-CSDN博客 在解纠缠的过程中,有一种非常简单的方法来引导G向某个方向进行生成,然后我们通过向不同的方向进行行走,那么就会得到这个属性上的图像。那么你利用多个方向进行生成,便得到了各种方向的图像,每个方向对应了很多

SAM2POINT:以zero-shot且快速的方式将任何 3D 视频分割为视频

摘要 我们介绍 SAM2POINT,这是一种采用 Segment Anything Model 2 (SAM 2) 进行零样本和快速 3D 分割的初步探索。 SAM2POINT 将任何 3D 数据解释为一系列多向视频,并利用 SAM 2 进行 3D 空间分割,无需进一步训练或 2D-3D 投影。 我们的框架支持各种提示类型,包括 3D 点、框和掩模,并且可以泛化到不同的场景,例如 3D 对象、室

基于YOLO8的图片实例分割系统

文章目录 在线体验快速开始一、项目介绍篇1.1 YOLO81.2 ultralytics1.3 模块介绍1.3.1 scan_task1.3.2 scan_taskflow.py1.3.3 segment_app.py 二、核心代码介绍篇2.1 segment_app.py2.2 scan_taskflow.py 三、结语 代码资源:计算机视觉领域YOLO8技术的图片实例分割实

如何将卷积神经网络(CNN)应用于医学图像分析:从分类到分割和检测的实用指南

引言 在现代医疗领域,医学图像已经成为疾病诊断和治疗规划的重要工具。医学图像的类型繁多,包括但不限于X射线、CT(计算机断层扫描)、MRI(磁共振成像)和超声图像。这些图像提供了对身体内部结构的详细视图,有助于医生在进行准确诊断和制定个性化治疗方案时获取关键的信息。 1. 医学图像分析的挑战 医学图像分析面临诸多挑战,其中包括: 图像数据的复杂性:医学图像通常具有高维度和复杂的结构

图像分割分析效果2

这次加了结构化损失 # 训练集dice: 0.9219 - iou: 0.8611 - loss: 0.0318 - mae: 0.0220 - total: 0.8915  # dropout后:dice: 0.9143 - iou: 0.8488 - loss: 0.0335 - mae: 0.0236 - total: 0.8816 # 加了结构化损失后:avg_score: 0.89