一、语义分割要做什么
1. 语义分割问题
找到同一画面中的不同类型目标区域
和其他问题的区别:
实例分割:同一类型目标要分出来具体实例(谁是谁)
目标检测:标出来外包围矩形
2. 深度学习图像分割算法发展
2015 CVPR:首个端对端的针对像素级预测的全卷积网络:
二、语义分割基本思想
1. 语义分割目标
对图中每一个像素进行分类,得到对应标签
2. 基本思想
滑动窗口:滑动次数太多,计算太慢,重复计算太多
FCN网络结构
网络结构分为两个部分:全卷积部分和反卷积部分。全卷积部分借用了一些经典的CNN网络,并把最后的全连接层换成卷积,用于提取特征,形成热点图;反卷积部分则是将小尺寸的热点图上采样得到原尺寸的语义分割图像。
三、反卷积与反池化
-
1×1卷积
指卷积核的大小为1×1,即只有一个像素的窗口。它的感受野很小,但它能够在通道维度上进行卷积操作,从而改变特征图的通道数。
作用:- 降维和增加通道数:通过使用1×1卷积,可以减少特征图的维度,从而降低计算成本和内存消耗。同时,也可以通过增加通道数来提供更丰富的特征表示,有助于提高模型的表现。
- 增强非线性:虽然1×1卷积在空间上的感受野非常小,但它仍然能够引入非线性变换,有助于模型学习更复杂的特征。
- 特征整合:在语义分割任务中,1×1卷积通常用于整合不同分辨率的特征图,或者在不同层之间进行信息传递,从而提高模型对整体语义的理解能力。
- 参数约束:1×1卷积通常具有较少的参数数量,这有助于减少模型的过拟合风险,并且使得模型更容易训练和优化。
-
转置卷积
转置卷积(Transpose Convolution),也称为反卷积(Deconvolution)。
标准的卷积操作中,通过卷积核在输入特征图上进行滑动操作,从而生成输出特征图。每个卷积核都与输入特征图中的一小部分相乘,并将结果求和,然后在输出特征图的相应位置得到一个值。转置卷积操作则相反,它将输出特征图的像素“放大”并填充到输入特征图的空白区域中。这种操作本质上是对标准卷积操作的逆过程。转置卷积通过对输入特征图进行插值和填充,使得输出特征图的尺寸大于输入特征图的尺寸。转置卷积的工作原理通常是通过将输入特征图的每个像素值与转置卷积核中的权重相乘,并将结果分布到输出特征图的相应区域来实现的。另外,与标准卷积操作类似,转置卷积操作通常包括偏置项和激活函数。
-
上池化(unpooling)
池化操作中,由于在降采样过程中会丢失信息,因此需要对特征图进行上采样以恢复其原始尺寸或分辨率。上采样有几种常见的方法,其一是反卷积,另一种常见的方法是使用插值技术,如最近邻插值、双线性插值或双三次插值。
四、FCN网络结构
1. 卷积部分
不同于传统CNN的全连接层,FCN中的第6、7、8层都是通过1 × 1卷积得到的,第6层的输出通道是4096,第7层的输出通道是4096 ,第8层的输出是1000(类),即1000个特征图(称为heatmap)
输出的特征图(称为heatmap),颜色越贴近红色表示对应数值越大
2. 反卷积部分
跳级结构,是指在解码器部分利用跳跃连接(Skip Connections)来融合不同层级的特征信息。这种结构有助于提高语义分割的准确性,并且能够更好地保留图像的空间信息。
蓝色:卷积层;绿色:Max Pooling层;黄色: 求和运算;灰色: 裁剪
在FCN中,跳跃连接的基本思想是将编码器中某些层次的特征图与解码器中对应的层次特征图进行连接,从而使得解码器可以利用更丰富的、来自不同分辨率的特征信息。这样的设计可以帮助网络更好地捕捉图像中的细节和上下文信息,从而提高语义分割的精度。
FCN-8s、FCN-16s和FCN-32s中的数字表示的是最终输出相对于输入图像的尺寸缩小的倍数。这些数字指示了网络的特定设计,以便使得输出分割结果能够与原始输入图像的尺寸相匹配。一般来说,缩放倍数越小的网络(例如FCN-8s)通常会产生更精细的分割结果,因为在解码器部分需要进行更多次的上采样操作,保留了更多的图像细节。然而,这也会导致网络的计算成本较高,并且需要更多的内存和计算资源。
3. 效果
五、评价指标与标注工具
1. 常见指标
2. 标注工具
- Labelme
- EISeg