DL_语义分割(学习笔记)

news2024/11/18 21:25:51

文章目录

  • 图像分割
    • 1 常见分类
      • 1.1 语义分割
      • 1.2 实例分割
      • 1.3 全景分割
    • 2 语义分割
      • 2.1 模型评价指标
      • 2.2 常用数据集
      • 2.3 转置卷积
      • 2.4 膨胀卷积
      • 2.5 感受野
      • 2.6 双线性插值
      • 2.7 FCN

图像分割

1 常见分类

1.1 语义分割

  1. 定义:【只判断类别,无法区分个体】
    • 语义分割是将图像中的每个像素分配一个类别标签,以实现对图像中不同对象的分类和区域划分。它关注的是图像中不同区域的语义含义,而不区分同一类别的不同实例
    • 例如,在一张包含人和汽车的图像中,语义分割会将所有的人标记为 “人” 这个类别,所有的汽车标记为 “汽车” 这个类别,而不会区分不同的个体人或汽车。
  2. 特点
    • 类别划分:对图像中的不同区域进行明确的类别划分,使得每个像素都被赋予一个特定的语义类别。这有助于理解图像的内容和结构,为图像分析和处理提供基础。
    • 不区分实例:不区分同一类别的不同实例,即所有属于同一类别的像素被视为一个整体。这在一些场景下可以简化图像分析任务,但在需要区分个体对象的情况下可能不够精确。
    • 应用广泛:语义分割在许多领域都有广泛的应用,如自动驾驶、医学影像分析、地理信息系统等。在自动驾驶中,语义分割可以帮助识别道路、车辆、行人等不同的对象,为车辆的决策和控制提供重要信息;在医学影像分析中,语义分割可以用于分割病变组织、器官等,辅助医生进行诊断和治疗。

1.2 实例分割

  1. 定义
    • 实例分割不仅要区分图像中的不同对象类别,还要区分同一类别的不同实例。它将图像中的每个对象作为一个独立的个体进行分割和标注,为每个对象分配一个唯一的标识符。
    • 例如,在一张包含多个人和汽车的图像中,实例分割会将不同的人分别标记为 “人 1”、“人 2” 等,不同的汽车分别标记为 “汽车 1”、“汽车 2” 等。
  2. 特点
    • 精确分割:能够精确地分割出图像中的每个对象实例,为图像分析和处理提供更详细的信息。这对于需要对单个对象进行精确分析和处理的任务非常重要,如目标跟踪、三维重建等。
    • 区分实例:与语义分割不同,实例分割区分同一类别的不同实例,为每个实例分配一个唯一的标识符。这需要更复杂的算法和模型,通常需要结合目标检测和语义分割的技术。
    • 计算量大:由于需要对每个对象实例进行精确分割和标注,实例分割的计算量通常比语义分割更大。这需要更强大的计算资源和更高效的算法来实现实时处理。

1.3 全景分割

  1. 定义
    • 全景分割是将语义分割和实例分割相结合,同时对图像中的所有像素进行分类和实例标注,实现对图像的全面理解和分割。它将图像中的每个像素分配一个类别标签和一个实例标识符,使得每个像素都被明确地划分到一个特定的对象实例中。
    • 例如,在一张包含多个人和汽车的图像中,全景分割会将不同的人分别标记为 “人 1”、“人 2” 等,不同的汽车分别标记为 “汽车 1”、“汽车 2” 等,同时将背景像素标记为相应的类别标签
  2. 特点
    • 全面分割:结合了语义分割和实例分割的优点,能够对图像进行全面的分割和标注。这为图像分析和处理提供了最详细和全面的信息,有助于实现更复杂的视觉任务。
    • 统一框架:提供了一个统一的框架,将语义分割和实例分割整合在一起,使得不同的分割任务可以在一个统一的模型中进行处理。这有助于提高算法的效率和性能,减少模型的复杂性。
    • 应用挑战:由于需要同时进行语义分割和实例分割,全景分割的计算量和难度都比较大。这需要更先进的算法和技术来实现高效的处理,同时也需要更多的标注数据来训练模型。

在这里插入图片描述

2 语义分割

2.1 模型评价指标

在FCN论文中,有指出:

在这里插入图片描述

在这里插入图片描述

下列假设中:一共有五个类别标签【0-4】,按照顺序填写右侧二维表格。

0的填补为例:将真实0单独用白色表级,其他为灰色。将预测中的0,与真实标签对应的用绿色,被错误预测为0的用红色。

在这里插入图片描述

1的填补:

在这里插入图片描述

最终填补完成。

在这里插入图片描述

各指标计算:

pixel accuracy ∑ i n i i ∑ i t i \frac{\sum_{i}n_{ii}}{\sum_{i}t_{i}} itiinii

n i i n_{ii} nii代表第i个标签,预测正确的个数。【表格中的对角线上的数值,即为每个标签预测正确的个数】

t i t_{i} ti代表每个标签的个数,加上 ∑ ∑ 符号就是求所有标签之和【该例子中:8*8,或者二维表格中所有数值的和】

在这里插入图片描述

mean accuraccy:【各标签正确率的平均值】

在这里插入图片描述

mean IU:

在这里插入图片描述

2.2 常用数据集

在这里插入图片描述

pascal voc数据集

在这里插入图片描述

2007数据集结构详情:

在这里插入图片描述

2012数据集结构详情:

在这里插入图片描述

Pascal VOC 2007 和 2012 数据结构的区别如下:

  1. Pascal VOC 2012 的数据集是在之前几年数据集上扩增的,文件名中包含年份,而 Pascal VOC 2007 的文件名中不包含。

    例如,Pascal VOC 2007 的标注文件名和图像文件名类似为 “000005.xml”“000005.jpg”;Pascal VOC 2012 的标注文件名和图像文件名类似为 “2007000027.xml”“2007000039.png”。

  2. Pascal VOC 2012 的 ImageSets 中包括 Action 文件,用于动作识别任务的数据集划分;而 Pascal VOC 2007 的 ImageSets 文件中不包含,因为动作识别任务是 2010 年才有的。

  3. xml 的标注文件内容有所不同,比如 2012 版本中有的图像标注有动作信息<actions>

xml标注文件详解:

<annotation>
    <folder>VOC2012</folder>
    <filename>2007_000027.jpg</filename>
    <source>
        <database>The VOC2007 Database</database>
        <annotation>PASCAL VOC2007</annotation>
        <image>flickr</image>
    </source>
    <size>
        <width>486</width>
        <height>500</height>
        <depth>3</depth>
    </size>
    <segmented>0</segmented>
    <object>
        <name>person</name>
        <pose>Unspecified</pose>
        <truncated>0</truncated>
        <difficult>0</difficult>
        <bndbox>
            <xmin>174</xmin>
            <ymin>101</ymin>
            <xmax>349</xmax>
            <ymax>351</ymax>
        </bndbox>
        <part>
            <name>head</name>
            <bndbox>
                <xmin>169</xmin>
                <ymin>104</ymin>
                <xmax>209</xmax>
                <ymax>146</ymax>
            </bndbox>
        </part>
        <part>
            <name>hand</name>
            <bndbox>
                <xmin>278</xmin>
                <ymin>210</ymin>
                <xmax>297</xmax>
                <ymax>233</ymax>
            </bndbox>
        </part>
        <part>
            <name>foot</name>
            <bndbox>
                <xmin>273</xmin>
                <ymin>333</ymin>
                <xmax>297</xmax>
                <ymax>354</ymax>
            </bndbox>
        </part>
        <part>
            <name>foot</name>
            <bndbox>
                <xmin>319</xmin>
                <ymin>307</ymin>
                <xmax>340</xmax>
                <ymax>326</ymax>
            </bndbox>
        </part>
    </object>
</annotation>
  1. annotation:标注文件的根节点,包含整个标注信息。

    包含以下子节点:

    • folder:图像所在的文件夹名称。
    • filename:图像的文件名。
    • source:图像来源。
    • owner:图像拥有者。
    • size:图像的尺寸信息,包括宽度、高度、深度。
    • segmented:是否被分割标注过,值为 0 表示未被分割标注,值为 1 表示被分割标注。
    • object:
    • :图像中的一个物体,包含以下信息:
      • name:物体的类别名称,有 20 个类别。
      • bndbox:物体的边界框信息,包括左上角和右下角的坐标,具体为xmin(边界框左上角的 x 坐标)、ymin(边界框左上角的 y 坐标)、xmax(边界框右下角的 x 坐标)、ymax(边界框右下角的 y 坐标)。
      • difficult:标记物体是否难以识别的标志,0 表示容易识别,1 表示难以识别。
      • truncated:标记物体是否被截断,0 表示未被截断,1 表示被截断(比如在图片之外或者被遮挡超过 15%)。
    • pose:标记物体的姿态,例如正面、侧面等。
    • part: 代表人体的各部分布局标签。
  2. 一个Object代表图像中的一个物体。

对于语义分割标注图像:

在这里插入图片描述

2.3 转置卷积

一、转置卷积的定义【≠卷积的逆运算】

转置卷积(Transposed Convolution),也被称为反卷积(Deconvolution),是一种在深度学习中用于上采样图像或特征图的操作。它与普通卷积操作相反,普通卷积通常会降低图像的空间分辨率,而转置卷积则试图增加图像的空间分辨率。 转置卷积在神经网络中主要用于图像生成、超分辨率重建、语义分割等任务中,特别是当需要从低分辨率的特征表示恢复到高分辨率的图像或特征图时。

二、转置卷积的计算方法

转置卷积可以看作是一种特殊的卷积操作,其过程可以通过在输入特征图的每个像素之间插入零值,然后进行正常的卷积操作来实现。

假设输入特征图的大小为 H i n × W i n H_{in}×W_{in} Hin×Win,卷积核的大小为 K × K K×K K×K,步长为 S S S,填充为 P P P,则输出特征图的大小 H o u t × W o u t H_{out}×W_{out} Hout×Wout 可以通过以下公式计算:

  • H o u t = ( H i n − 1 ) × S + K − 2 P H_{out}=(H_{in}-1)×S+K-2P Hout=(Hin1)×S+K2P

  • W o u t = ( W i n − 1 ) × S + K − 2 P W_{out}=(W_{in}-1)×S+K-2P Wout=(Win1)×S+K2P

在转置卷积中,已知输出特征图的大小和卷积核的参数,可以通过上述公式反推出输入特征图的大小,从而实现从高分辨率的输出特征图到低分辨率的输入特征图的反向映射。

在这里插入图片描述

计算示例:

在这里插入图片描述

拓展:

普通卷积计算:

在这里插入图片描述

将普通的计算结果进行拆解,就是如下,四个卷积等效矩阵:

在这里插入图片描述

换一种思路,将特征图和等效矩阵展平:

在这里插入图片描述

问题:已知C【16*4】,O【1*4】,那么是否可以通过乘以某个矩阵得到I,显然是不太容易找到的【这里因为C不是方阵,所以必定不可逆,所以想通过左右都乘以C的逆矩阵是行不通的,C都不存在逆矩阵】

那么,是否可以使得O乘以某个矩阵【C的转置矩阵】,得到I【1*16】呐?显然可以,这里的I不一定和原来的I相同。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

三、转置卷积的用途

  1. 图像生成: - 在生成对抗网络(GAN)和变分自编码器(VAE)等图像生成模型中,转置卷积被用于从低维的潜在空间生成高分辨率的图像。通过逐步上采样低分辨率的特征表示,最终可以生成与原始图像大小相同的高质量图像。 - 例如,在一个基于 GAN 的图像生成模型中,生成器网络通常使用转置卷积来将随机噪声向量逐步上采样为图像。首先,一个低维的随机噪声向量被输入到生成器网络中,然后通过一系列的转置卷积层,逐步增加图像的空间分辨率,最终生成一个逼真的高分辨率图像。
  2. 超分辨率重建: - 转置卷积可以用于超分辨率重建任务,即从低分辨率的图像恢复出高分辨率的图像。通过学习低分辨率图像和高分辨率图像之间的映射关系,转置卷积可以在不丢失细节的情况下增加图像的分辨率。 - 例如,在一个超分辨率重建模型中,输入的低分辨率图像首先经过一系列的卷积层提取特征,然后通过转置卷积层进行上采样,最终生成高分辨率的图像。通过训练模型,可以使生成的高分辨率图像尽可能接近原始的高分辨率图像。
  3. 语义分割: - 在语义分割任务中,转置卷积可以用于恢复图像的空间分辨率,以便更好地进行像素级别的分类。通常,语义分割模型会使用卷积神经网络对输入图像进行下采样,以提取高级别的语义特征。然后,通过转置卷积层将这些特征上采样回原始图像的大小,以便为每个像素分配一个类别标签。 - 例如,在一个基于全卷积网络(FCN)的语义分割模型中,输入图像经过一系列的卷积层和池化层进行下采样,得到一个低分辨率的特征图。然后,通过转置卷积层对这个特征图进行上采样,恢复到原始图像的大小。最后,使用一个 softmax 分类器为每个像素分配一个类别标签,实现语义分割。

2.4 膨胀卷积

在这里插入图片描述

Dilated convolution也被称为 atrous convolution(空洞卷积)。

一、定义与原理

空洞卷积是在标准卷积的基础上引入了一个 “膨胀率”(dilation rate)的概念。在标准卷积中,卷积核的每个元素都与输入特征图上相邻的元素进行计算。而在空洞卷积中,卷积核的元素之间插入了一定数量的 “空洞”,使得卷积核在与输入特征图进行计算时,能够覆盖更大的感受野。

例如,对于一个 3×3 的卷积核,如果膨胀率为 2【r=2,如上图所示,每个元素之间的距离为2】,那么实际上这个卷积核的大小变为 5×5,但其中只有 9 个元素是有效的,其余位置都是空洞。这样,在进行卷积计算时,这个卷积核能够覆盖更大的输入区域,从而获得更大的感受野。

二、特点

  1. 更大的感受野

    • 空洞卷积能够在不增加卷积核参数数量的情况下,扩大卷积核的感受野。这对于处理图像等具有空间结构的数据非常有用,可以让模型更好地捕捉全局信息。

    • 例如,在上述图片中,普通卷积的输出每个像素对应3*3的视野大小,而膨胀卷积每个像素对应的感受野是5*5大小。

      疑问:虽然视野变大了,但是在整个视野范围内,处于间隔位置的像素信息,不是没有被采集到吗,这难道不是一个问题吗?(网格问题)

  2. 保持分辨率(也说空间维度,即W,H的大小):

    • 与传统的下采样方法(如池化)相比,空洞卷积可以在扩大感受野的同时保持输入特征图的分辨率。这对于需要保留精细细节的任务非常重要。【调整padding和stride的值】

三、缺点

Gridding Effect(网格效应)是由空洞卷积(Dilated Convolution)引发的问题。空洞卷积通过在卷积核的元素之间插入空洞(不计算的像素点)来扩大感受野,使卷积核能够捕捉更大范围的上下文信息。然而,由于卷积核之间的像素点被“跳过”,这会导致输入特征图中的某些像素点没有被覆盖到,会跳过较多像素,导致某些区域的感知信息稀疏,形成了一种不连续的“网格”效应。

造成的问题

网格效应会导致特征图中部分像素之间的连接性减弱,进而影响网络的性能,尤其是在处理细节丰富或者复杂的图像时会出现以下问题:

  1. 信息丢失:由于卷积操作跳过了一些像素点,导致特征图中的某些信息无法有效提取,尤其是对于局部细节的感知变得稀疏和不连贯。

  2. 分辨率降低:网络对于细节的捕捉能力减弱,特别是对于像素级任务(如语义分割、边缘检测),网格效应会导致对物体边缘、纹理等细节的捕捉变得不准确,导致最终输出图像出现伪影或不连续性。

  3. 不连续性:由于卷积核在输入图像上跳跃地计算,最终可能导致特征图中的不同区域之间产生不连续性,形成类似网格的斑点。

HDC 框架出处:Understanding Convolution for Semantic Segmentation

针对标准膨胀卷积中存在的 “网格问题”,提出了 HDC 框架是一种为了解决网格效应提出的方法。它的核心思想是通过不同层级的卷积核使用不同的空洞率,从而减少感受野的稀疏性。具体来说,HDC 的每一层会使用不同的空洞率,使得网络感受野在不同层次上既能够增大,又不会因为过高的空洞率导致跳过大量像素,从而减轻网格问题,同时自然地扩大了网络的感受野,有助于识别较大的物体。

在这里插入图片描述

2.5 感受野

感受野在卷积神经网络(CNN)中是指网络的某一层中的一个神经元“看”到的输入数据的范围。通俗来说,感受野就是一个神经元在输入图像中能够感知到的区域,类似于人眼的视野。

在这里插入图片描述

神经元感受野的值越大表示其能接触到的原始图像范围就越大,也意味着它可能蕴含更为全局,语义层次更高的特征;相反,值越小则表示其所包含的特征越趋向局部和细节。

能改变感受野的操作:

卷积操作、反卷积操作、池化操作、残差链接、合并

不会改变感受野的操作:

非线性层、归一化操作

感受野大小的计算公式:

在这里插入图片描述

膨胀卷积核大小计算方式 k l = k + ( k − 1 ) ∗ ( r − 1 ) k_l=k+(k-1)*(r-1) kl=k+(k1)(r1)

例1:浅绿色部分代表感受野的大小。【红色代表参数】

第一次卷积操作时,一般取 r 0 = 1 , s 0 = 1 r_0=1,s_0=1 r0=1,s0=1

下述例子中的r取值:r=[1,2,4],步幅s=1固定不变,卷积核k=3*3

第一层:
k 1 = 3 + ( 3 − 1 ) ∗ ( 1 − 1 ) = 3 k_1=3+(3-1)*(1-1)=3 k1=3+(31)(11)=3

r 1 = 1 + ( 3 − 1 ) ∗ 1 = 3 r_1=1+(3-1)*1=3 r1=1+311=3

第二层:
k 2 = 3 + ( 3 − 1 ) ∗ ( 2 − 1 ) = 5 k_2=3+(3-1)*(2-1)=5 k2=3+(31)(21)=5

r 2 = 3 + ( 5 − 1 ) ∗ ( 1 ∗ 1 ) = 7 r_2=3+(5-1)*(1*1)=7 r2=3+(51)(11)=7

第二层:
k 3 = 3 + ( 3 − 1 ) ∗ ( 4 − 1 ) = 9 k_3=3+(3-1)*(4-1)=9 k3=3+(31)(41)=9

r 3 = 7 + ( 9 − 1 ) ∗ ( 1 ∗ 1 ∗ 1 ) = 15 r_3=7+(9-1)*(1*1*1)=15 r3=7+(91)(111)=15

在这里插入图片描述

==例2:==该图片是描述网格问题的,这里我们拿来做一次计算练习(蓝色是区域代表的是感受野)

图片出处:Understanding Convolution for Semantic Segmentation

在这里插入图片描述

  • a图:k=3,r=[2,2,2],【第一次卷积操作时,一般取 r 0 = 1 , s 0 = 1 r_0=1,s_0=1 r0=1,s0=1

第一层:
k 1 = 3 + ( 3 − 1 ) ∗ ( 2 − 1 ) = 5 k_1=3+(3-1)*(2-1)=5 k1=3+(31)(21)=5

r 1 = 1 + ( 5 − 1 ) ∗ 1 = 5 r_1=1+(5-1)*1=5 r1=1+511=5

第二层:
k 2 = 3 + ( 3 − 1 ) ∗ ( 2 − 1 ) = 5 k_2=3+(3-1)*(2-1)=5 k2=3+(31)(21)=5

r 2 = 5 + ( 5 − 1 ) ∗ ( 1 ∗ 1 ) = 9 r_2=5+(5-1)*(1*1)=9 r2=5+(51)(11)=9

第二层:
k 3 = 3 + ( 3 − 1 ) ∗ ( 2 − 1 ) = 5 k_3=3+(3-1)*(2-1)=5 k3=3+(31)(21)=5

r 3 = 9 + ( 5 − 1 ) ∗ ( 1 ∗ 1 ∗ 1 ) = 13 r_3=9+(5-1)*(1*1*1)=13 r3=9+(51)(111)=13

  • b图:k=3,r=[1,2,3],【第一次卷积操作时,一般取 r 0 = 1 , s 0 = 1 r_0=1,s_0=1 r0=1,s0=1

第一层:
k 1 = 3 + ( 3 − 1 ) ∗ ( 1 − 1 ) = 3 k_1=3+(3-1)*(1-1)=3 k1=3+(31)(11)=3

r 1 = 1 + ( 3 − 1 ) ∗ 1 = 3 r_1=1+(3-1)*1=3 r1=1+311=3

第二层:
k 2 = 3 + ( 3 − 1 ) ∗ ( 2 − 1 ) = 5 k_2=3+(3-1)*(2-1)=5 k2=3+(31)(21)=5

r 2 = 3 + ( 5 − 1 ) ∗ ( 1 ∗ 1 ) = 7 r_2=3+(5-1)*(1*1)=7 r2=3+(51)(11)=7

第二层:
k 3 = 3 + ( 3 − 1 ) ∗ ( 3 − 1 ) = 7 k_3=3+(3-1)*(3-1)=7 k3=3+(31)(31)=7

r 3 = 7 + ( 7 − 1 ) ∗ ( 1 ∗ 1 ∗ 1 ) = 13 r_3=7+(7-1)*(1*1*1)=13 r3=7+(71)(111)=13

感受野中心的计算公式:

在这里插入图片描述

2.6 双线性插值

双线性插值是一种在图像处理中常用的插值方法,用于在放大或缩小图像时估计新像素的颜色值。【更直白一点:双线性插值就是使用已有的像素点来计算其他像素点从而实现像素的扩充,也就是说双线性插值是在像素层面的计算。】

双:两条

线性:通过线性的方式来用已知像素值计算未知的像素值

插值:通过周围已知的像素值来计算一些原本没有给出的像素值

使用双线性插值进行上采样的操作步骤如下:

  1. 确定目标图像的大小:首先,明确需要将原始图像上采样到的目标尺寸,例如将图像的宽度和高度扩大一定的倍数。
  2. 计算新像素的坐标:对于目标图像中的每个新像素,计算其在原始图像中的对应坐标。由于上采样会增加像素数量,新像素的坐标可能不是整数,而是小数。
  3. 找到相邻的四个像素:根据新像素的坐标,确定其在原始图像中相邻的四个像素。这四个像素将用于进行双线性插值计算。
  4. 进行水平方向的插值:在水平方向上,使用相邻两个像素的颜色值进行线性插值。

计算:

以线性插值为例:(单条直线)

已知数据 x 0 x_0 x0 (x0, y0) 与 x 1 x_1 x1(x1, y1),要计算 [x0, x1] 区间内某一位置 x 在直线上的y值。
y − y 0 x − x 0 = y 1 − y 0 x 1 − x 0 \frac{y - y_{0}}{x - x_{0}} = \frac{y_{1} - y_{0}}{x_{1} - x_{0}} xx0yy0=x1x0y1y0
两点之间的直线斜率
y = x 1 − x x 1 − x 0 y 0 + x − x 0 x 1 − x 0 y 1 y = \frac{x_{1} - x}{x_{1} - x_{0}} y_{0} + \frac{x - x_{0}}{x_{1} - x_{0}} y_{1} y=x1x0x1xy0+x1x0xx0y1
对上述公式化简【 x 1 − x {x_{1} - x} x1x ( x 1 距离 x 的距离 x_1距离x的距离 x1距离x的距离) x 1 − x 0 {x_{1} - x_{0}} x1x0 ( x 1 距离 x 0 的距离 x_1距离x_0的距离 x1距离x0的距离) , x 1 − x x 1 − x 0 代表距离权重 \frac{x_{1} - x}{x_{1} - x_{0}}代表距离权重 x1x0x1x代表距离权重

延伸到双线性插值:(两条直线)

在这里插入图片描述

这个公式是通过线性插值的方法得来的。 假设我们要在点 Q 12 = ( x 1 , y 2 ) Q_{12} = (x_1, y_2) Q12=(x1,y2) Q 22 = ( x 2 , y 2 ) Q_{22} = (x_2, y_2) Q22=(x2,y2) 之间进行线性插值来估计点 R 2 = ( x , y 2 ) R_2 = (x, y_2) R2=(x,y2) 的函数值 f ( R 2 ) f(R_2) f(R2)。 我们可以考虑点 R 2 R_2 R2 x x x 方向上与 Q 12 Q_{12} Q12 Q 22 Q_{22} Q22 的位置关系。

根据线性插值的原理,我们可以用以下方式计算 f ( R 2 ) f(R_2) f(R2)

首先,计算点 R 2 R_2 R2 Q 12 Q_{12} Q12 之间的距离占总距离的比例,即: x − x 1 x 2 − x 1 \frac{x - x_1}{x_2 - x_1} x2x1xx1然后,计算点 R 2 R_2 R2 Q 22 Q_{22} Q22 之间的距离占总距离的比例,即:

x 2 − x x 2 − x 1 \frac{x_2 - x}{x_2 - x_1} x2x1x2x。接下来,我们根据这两个比例来加权计算 f ( R 2 ) f(R_2) f(R2)。具体来说,我们用 Q 12 Q_{12} Q12 的函数值 f ( Q 12 ) f(Q_{12}) f(Q12) 乘以点 R 2 R_2 R2 Q 22 Q_{22} Q22 之间的距离比例,再加上 Q 22 Q_{22} Q22 的函数值 f ( Q 22 ) f(Q_{22}) f(Q22) 乘以点 R 2 R_2 R2 Q 12 Q_{12} Q12 之间的距离比例,即:
f ( R 2 ) ≈ x 2 − x x 2 − x 1 f ( Q 12 ) + x − x 1 x 2 − x 1 f ( Q 22 ) f(R_2) \approx \frac{x_2 - x}{x_2 - x_1} f(Q_{12}) + \frac{x - x_1}{x_2 - x_1} f(Q_{22}) f(R2)x2x1x2xf(Q12)+x2x1xx1f(Q22)

这样,我们就得到了公式 f ( R 2 ) ≈ x 2 − x x 2 − x 1 f ( Q 12 ) + x − x 1 x 2 − x 1 f ( Q 22 ) f(R_2) \approx \frac{x_2 - x}{x_2 - x_1} f(Q_{12}) + \frac{x - x_1}{x_2 - x_1} f(Q_{22}) f(R2)x2x1x2xf(Q12)+x2x1xx1f(Q22)。 这种线性插值的方法在许多情况下可以用来估计函数在某一点的近似值,特别是当我们知道函数在一些离散点上的值时,可以通过插值来得到其他点的估计值。

假如我们想得到未知函数 f 在点 P = (x, y) 的值,假设我们已知函数 fQ11 = (x1, y1)、Q12 = (x1, y2), Q21 = (x2, y1) 以及 Q22 = (x2, y2) 四个点的值。

首先在 x 方向进行线性插值,得到

在这里插入图片描述

然后在 y 方向进行线性插值利用 R 1 ( x , y 1 ) , R 2 ( x , y 2 ) R_1(x,y_1),R_2(x,y_2) R1(x,y1),R2(x,y2),得到

在这里插入图片描述

这样就得到所要的结果 f(x, y),

在这里插入图片描述

而一般所举例子中为了简化计算,假设的像素点之间的间距值都为1,也即 x 2 − x 1 = 1 , y 2 − y 1 = 1 x_2-x_1=1,y_2-y_1=1 x2x1=1,y2y1=1。所以上述公式可以化简。

实现的对齐方式差别,计算公式不变。

在这里插入图片描述

计算举例:

在这里插入图片描述

2.7 FCN

首个端到端的全卷积网络【将全连接层替换为卷积】

在这里插入图片描述

将全连接层替换为卷积层:

在这里插入图片描述

FCN模型结构(32,16,8)文中是以VGG为backbone的。

在这里插入图片描述

pascal voc 是20类别的,加上背景一共是21类别。

语义分割使用的数据部分:

在这里插入图片描述

数据图像是单通道的,但是显示像是彩色图片,这是因为被处理过了。

在这里插入图片描述

使用的pytorch框架中的fcn_resnet50。

pytorch官网,对于fcn_resnet50的描述:https://pytorch.org/vision/stable/models/generated/torchvision.models.segmentation.fcn_resnet50.html#torchvision.models.segmentation.fcn_resnet50

在这里插入图片描述

模型训练结果:

在这里插入图片描述

最好结果:

在这里插入图片描述

分割效果:

在这里插入图片描述

图片名称:2007_001311.jpg

在这里插入图片描述

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

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

相关文章

Matlab实现麻雀优化算法优化回声状态网络模型 (SSA-ESN)(附源码)

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1内容介绍 麻雀搜索算法&#xff08;Sparrow Search Algorithm, SSA&#xff09;是一种新兴的群体智能优化算法&#xff0c;灵感来源于麻雀的觅食行为及其在面临危险时的预警机制。SSA通过模拟麻雀的这些自然行为来寻找问题…

[Docker学习笔记]利用Dockerfile创建镜像

Dockerfile 指令 指令作用from继承基础镜像maintainer镜像制作者信息(可缺省)run用来执行shell命令expose暴露端口号cmd启动容器默认执行的命令entrypoint启动容器真正执行的命令volume创建挂载点env配置环境变量add复制文件到容器copy复制文件到容器workdir设置容器的工作目录…

蓝卓亮相中国工博会,打造以数据驱动的智能工厂

9月28日&#xff0c;以“工业聚能&#xff0c;新质领航”为主题的第24届中国国际工业博览会&#xff08;以下简称“工博会”&#xff09;在国家会展中心&#xff08;上海&#xff09;圆满拉下帷幕。本届工博会共设9大专业展区&#xff0c;吸引了来自全球28个国家和地区的2600余…

针对考研的C语言学习(定制化快速掌握重点4)

typedef的使用 简化变量类型 逻辑结构 集合结构&#xff1a;无关系 线性结构&#xff1a;一对一 树形结构&#xff1a;一对多 图形结构&#xff1a;多对多 存储结构 顺序存储和链式存储&#xff08;考代码&#xff09; 顺序存储优点&#xff1a;1.可以实现随机存取。2.…

针对考研的C语言学习(定制化快速掌握重点5)

顺序表 特点&#xff1a; 写代码主要就是增删改查&#xff01;&#xff01;&#xff01; 写代码的边界性非常重要以及考研插入和删除的位置都是从1开始&#xff0c;而数组下标是从0开始 【注】下标和位置的关系 线性表最重要的是插入和删除会涉及边界问题以及判断是否合法 …

【Spring Boot 入门二】Spring Boot中的配置文件 - 掌控你的应用设置

一、引言 在上一篇文章中&#xff0c;我们开启了Spring Boot的入门之旅&#xff0c;成功构建了第一个Spring Boot应用。我们从环境搭建开始&#xff0c;详细介绍了JDK的安装以及IDE的选择与配置&#xff0c;然后利用Spring Initializr创建了项目&#xff0c;分析了项目结构&am…

资质申请中常见的错误有哪些?

在申请建筑资质的过程中&#xff0c;企业可能会犯一些常见的错误&#xff0c;以下是一些需要避免的错误&#xff1a; 1. 资料准备不充分&#xff1a; 申请资质需要提交大量的资料&#xff0c;包括企业法人资料、财务报表、业绩证明等。资料不齐全或不准确都可能导致申请失败。…

多线程(一):线程的基本特点线程安全问题ThreadRunnable

目录 1、线程的引入 2、什么是线程 3、线程的基本特点 4、线程安全问题 5、创建线程 5.1 继承Thread类&#xff0c;重写run 5.1.1 创建Thread类对象 5.1.2 重写run方法 5.1.3 start方法创建线程 5.1.4 抢占式执行 5.2 实现Runnable&#xff0c;重写run【解耦合】★…

MySQL-数据库设计

1.范式 数据库的范式是⼀组规则。在设计关系数据库时&#xff0c;遵从不同的规范要求&#xff0c;设计出合理的关系型数 据库&#xff0c;这些不同的规范要求被称为不同的范式。 关系数据库有六种范式&#xff1a;第⼀范式&#xff08;1NF&#xff09;、第⼆范式&#xff08;…

【Mysql】SQL语言基础

1、SQL的概述 SQL全称&#xff1a;Structured Query Language,是结构化查询语言&#xff0c;用于访问和处理数据库的标准的计算机语言。SQL语言1974年由Boyce和Chamberlin提出&#xff0c;并首先在IBM公司研制的关系数据库系统systemr上实现。 美国国家标准局&#x…

亚信安全发布第34期《勒索家族和勒索事件监控报告》

本周态势快速感知 本周全球共监测到勒索事件91起&#xff0c;近三周勒索事件数量较为稳定。从整体上看&#xff0c;Ransomhub是影响最严重的勒索家族&#xff1b;Play和ElDorado恶意家族也是两个活动频繁的恶意家族&#xff0c;需要注意防范。本周&#xff0c;土耳其公司巴克皮…

小红书2024秋招后端开发(Java工程师、C++工程师等)

前几天做了美团&#xff0c;OPPO的秋招笔试题&#xff0c;然后又做了一场小红书&#xff0c;总体难度我觉得都差不多&#xff0c;涉及到的知识点要么是语法模拟&#xff0c;或者就是一些基础算法&#xff0c;所以这样看秋招编程题还是很简单的&#xff0c;对于笔试我们还要把除…

深刻理解Redis集群(下):Redis 哨兵(Sentinel)模式

背景 现在对3个节点的sentinel进行配置。sentinel的配置文件在redis的安装目录中已经存在&#xff0c;只需要复制到指定的位置即可。 sentinel是独立进程&#xff0c;有对应的脚本来执行。 基于之前的redis 一主二从的架构&#xff0c;我们继续启动3个sentinel进程。 哨兵模式的…

使用微服务Spring Cloud集成Kafka实现异步通信

在微服务架构中&#xff0c;使用Spring Cloud集成Apache Kafka来实现异步通信是一种常见且高效的做法。Kafka作为一个分布式流处理平台&#xff0c;能够处理高吞吐量的数据&#xff0c;非常适合用于微服务之间的消息传递。 微服务之间的通信方式包括同步通信和异步通信。 1&a…

GPU参数指标

以英伟达的A800卡为例&#xff0c;简单聊聊GPU卡的核心参数指标&#xff0c;A800的核心指标主要有5个&#xff0c;为算力、显存大小、显存带宽、功耗情况和卡间互联速率。 性能&#xff1a;则可以理解为货车对不同货物类型的马力大小&#xff0c;决定能“拉动”多少重量的货&…

实用工具推荐---- PDF 转换

直接上链接&#xff1a;爱PDF |面向 PDF 爱好者的在线 PDF 工具 (ilovepdf.com) 主要功能如下&#xff1a; 全免费&#xff01;&#xff01;&#xff01;&#xff01;

什么是 Apache Ingress

Apache Ingress 主要用于管理来自外部的 HTTP 和 HTTPS 流量&#xff0c;并将其路由到合适的 Kubernetes 服务。 容器化与 Kubernetes 是现代云原生应用程序的基础。Kubernetes 的主要职责是管理容器集群&#xff0c;确保它们的高可用性和可扩展性&#xff0c;同时还提供自动化…

httpsok-v1.17.0-SSL通配符证书自动续签

&#x1f525;httpsok-v1.17.0-SSL通配符证书自动续签 介绍 httpsok 是一个便捷的 HTTPS 证书自动续签工具&#xff0c;基于全新的设计理念&#xff0c;专为 Nginx 、OpenResty 服务器设计。已服务众多中小企业&#xff0c;稳定、安全、可靠。 一行命令&#xff0c;一分钟轻…

Java中使用接口实现回调函数的详解与示例

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…

【2025】springboot基于微信小程序记账本的设计与实现(源码+文档+调试+答疑)

文章目录 前言一、主要技术&#xff1f;二、项目内容1.整体介绍&#xff08;示范&#xff09;2.运行截图3.系统测试 总结更多项目 前言 时代在飞速进步&#xff0c;每个行业都在努力发展现在先进技术&#xff0c;通过这些先进的技术来提高自己的水平和优势&#xff0c;记账本小…