图像分割 II(Image Segmentation II)

Segmentation as classification

像素分类(Pixel classification)

作为分类问题的图像分割。给定一个窗口(NxN 个像素),对中心像素进行分类。

分类单个像素可能非常慢(例如,一张小图片 = 600 x 800 = 480,000 像素)

但是 CNN 可以并行分类多个像素。

全卷积网络(Fully-convolutional network)

全卷积网络(FCN)只有卷积层,没有全连接层。最后一层是一个空间映射图。可以接受任何尺寸的图像作为输入,输出映射图的大小取决于输入大小。

并行补丁分类(Parallel patch classification)

标准的 CNN 架构存在两个问题:

  1. Receptive field 大小与卷积层的数量成线性关系
  • 缺点
  • 局部性丢失:CNN的一大优点是能够捕捉局部特征,如边缘、角点等。随着感受野的增大,局部信息可能被稀释,从而降低网络对细节的敏感度。
  • 过多的上下文信息:可能会引起混淆导致性能下降。
  • 计算复杂度增大
  1. 大多数方法使用下采样 downsample(例如,最大池华)来减少计算量

感受野 Receptive field 定义:卷积神经网络每一层输出的特征图(feature map)上的像素点映射回输入图像上的区域大小。通俗点的解释是,特征图上一点,相对于原图的大小,也是卷积神经网络特征所能看到输入图像的区域。

随着卷积核的增多(即网络的加深),感受野会越来越大。

解决方案:使用编码器 - 解码器结构。 编码器对图像进行下采样(downsamples), 解码器进行上采样(upsamples)

下采样(Downsampling)

  • 主要用于缩小图像
  • 使得图像符合显示区域的大小
  • 特征提取:通过卷积层和池化层,网络可以从原始图像中提取更抽象、更高层次的特征。

上采样(Upsampleing)

  • 主要用于放大原图像
  • 空间分辨率恢复
  • 细节和局部信息的恢复

我们可以避免maxpoolig,但是这样会让网络速度变慢,也无法解决第一个问题。

上采样(Upsampling)


每一个上采样层都与一个下采样层配对。 最大值的位置被保存并传递给上采样器。

转置卷积(Transposed convolution)

步长(stride)> 1 的卷积是一种下采样形式

  • 例如,步长 = 2 意味着在输入中每移动1像素,滤波器在输出中移动2像素
  • 可学习的下采样 (Learnable downsampling)

当两个放大的卷积核相交时,会在重叠的像素上求和。

示例

Note:因为第三格是重叠的部分,所以可以进行相加。

转置卷积的矩阵表示

1x1 卷积层

它的特点是可以在不改变空间维度(即图像的宽度和高度)的情况下,改变通道数

应用场景

1x1 卷积通常作为全链接网络的最后几层出现。全连接层能够学习特征之间的非空间(全局)关系,但参数数量比较多,计算复杂度和过拟合风险比较高。使用 1x1 卷积可以减少参数数量,同时保留网络的深度。

学习的内容

1x1 卷积层通常用于在不同层次的特征图间进行信息融合,调整通道数目,实现跨通道的特征交互,同时也用于降低特征维度,减少计算量。这些卷积核可以学习如何在各个通道间进行有效的特征整合。

如图,最后一个是一个 1x1 的卷积层,步长为 1,这一层保持了空间尺寸不变,但改变了通道数到 100。

损失函数

在每个像素点上,计算预测的类别和真实类别之间的交叉熵 cross-entropy损失值。

结果

随着步长缩短,我们可以看到分割的质量变得更好。

小结

语义分割可以被看作是一个像素分类(pixel classification)问题。这可以通过全卷积网络来高效完成。

编码器 - 解码器架构:

  • 通过最大池化、步长卷积来下采样
  • 通过最大反池化、转置卷积来上采样

输出结果为每个像素的标签。

U-Net

最初是为医学图像分割提出的。是编解码器(encoder-decoder)结构,加上一些额外的功能特性。

架构

在解码器中,上采样的特征图与对应编码器层的原始特征进行了拼接。

对于细胞分割,U-Net只使用两个类别,并采用加权交叉熵损失(weighted cross-entropy loss):细胞之间的边缘具有更高的权重。

小结

U-Net:用于分割的全卷积网络,带有一些修改。最初用于医学图像分析,但也常用于其他分割任务。

同时也被用作其他任务的编码-解码(encoding-decoding)网络,如:

  • 图像去噪
  • 图像修复

实例分割(Instance segmentation)

语义分割对像素进行分类,但不区分不同的实例。

不是给每个像素打上实例标签,而是提取图像中可能是独立实例的区域块。在每个区域块内进行分割。

Instead of giving each pixel an instance label, extract patches of image that are likely to be separate instances. Do segmentation within each patch.

常用的架构是 Mask R-CNN。

Note: Stuff 和 things

视觉场景包含"物体(things)"和"材质(stuff)"两个部分。

  • "Things" = objects, "可数名词(countable nouns)" (cow, person, car)
  • "Stuff" = regions/materials, "不可数名词(mass nouns)" (road, grass)
  • 有些类别可能即使 thing 也是 stuff。(tree)

实例分割(以及计算机视觉领域通常)主要关注"物体(things)"。

R-CNN:

  • R-CNN 指的是基于区域(Region-based) 的卷积神经网络。
  • 它有效地提取"感兴趣区域 regions of interest"(很可能包含物体的图像区块)进行进一步处理。

Mask R-CNN

  • Mask R-CNN将通过R-CNN提取的图像区块送入一个完全卷积网络(FCN)。
  • FCN预测一个二值分割掩码 (binary segmentation mask),区分"对象"或"背景"。

结果

小结

  • 实例分割为同一类的每个实例赋予独立的标签(instance of a class),不仅仅是类别标签(class labels)。
  • 通常只适用于可数的"物体(things)"类别。
  • 典型的方法是先检测出物体的区块,然后在这些区块内进行二值分割(binary segmentation)。

小结

全卷积网络(FCN)的优点:

  • 更能够处理非常复杂的对象/背景。
  • 对于它们训练的类别,可能会给出更好的结果。

全卷积网络(FCN)的缺点:

  • 在捕捉精确的边界细节方面可能表现得较差。
  • 可能无法泛化到训练集之外的类别。
相关推荐
柠檬07112 小时前
opencv mat 统计小于0的个数
人工智能·opencv·计算机视觉
Coovally AI模型快速验证3 小时前
超越Sora的开源思路:如何用预训练组件高效训练你的视频扩散模型?(附训练代码)
人工智能·算法·yolo·计算机视觉·音视频·无人机
Rui_Freely3 小时前
Vins-Fusion之 相机—IMU在线标定(十一)
人工智能·算法·计算机视觉
数据分享者5 小时前
猫狗图像分类数据集-21616张标准化128x128像素JPEG图像-适用于计算机视觉教学研究与深度学习模型训练-研究人员、开发者和学生提供实验平台
深度学习·计算机视觉·分类
duyinbi75175 小时前
【计算机视觉实践】:基于YOLOv8-BIMAFPN的海洋漏油事件检测与分类系统实现_2
yolo·计算机视觉·分类
西柚小萌新6 小时前
【计算机视觉CV:目标检测】--1.目标检测简介
目标检测·计算机视觉·目标跟踪
Rui_Freely7 小时前
Vins-Fusion之 相机—IMU在线标定(两帧间旋转估计)(十)
人工智能·算法·计算机视觉
棒棒的皮皮7 小时前
【深度学习】YOLO模型精度优化全攻略
人工智能·深度学习·yolo·计算机视觉
集和诚JHCTECH7 小时前
BRAV-7722赋能手术机器人:高性能控制方案,守护精准手术的每一刻
人工智能·嵌入式硬件·计算机视觉
Jerryhut8 小时前
背景建模实战:从帧差法到混合高斯模型的 OpenCV 实现
人工智能·opencv·计算机视觉