type
status
date
slug
summary
tags
category
icon
password
Property
图像分割和实例分割
- 图像分割将图像分割成若干组成区域。这类问题的方法通常利用图像中像素之间的相关性。它在训练时不需要有关图像像素的标签信息,在预测时也无法保证分割出的区域具有我们希望得到的语义。以下图为输入,图像分割可能将狗分割成两个区域:一个覆盖以黑色为主的嘴巴和眼睛,而另一个覆盖以黄色为主的其余部分身体。
- 实例分割又叫同时检测并分割(simultaneous detection and segmentation)。它研究如何识别图像中各个目标实例的像素级区域。与语义分割有所不同,实例分割不仅需要区分语义,还要区分不同的目标实例。如果图像中有两只狗,实例分割需要区分像素属于这两只狗中的哪一只
Pascal VOC2012语义分割数据集
语义分割的一个重要数据集叫作Pascal VOC2012数据集
列举RGB颜色值和类名
预处理数据
在之前,我们通过缩放图像使其符合模型的输入形状。然而在语义分割里,这样做需要将预测的像素类别重新映射回原始尺寸的输入图像。这样的映射难以做到精确,尤其在不同语义的分割区域。为了避免这个问题,我们将图像裁剪成固定尺寸而不是缩放。具体来说,我们使用图像增广里的随机裁剪,并对输入图像和标签裁剪相同区域
自定义语义分割数据集类
我们通过继承高级API提供的
Dataset
类,自定义了一个语义分割数据集类VOCSegDataset
。 通过实现__getitem__
函数,我们可以任意访问数据集中索引为idx
的输入图像及其每个像素的类别索引。 由于数据集中有些图像的尺寸可能小于随机裁剪所指定的输出尺寸,这些样本可以通过自定义的filter
函数移除掉。 此外,我们还定义了normalize_image
函数,从而对输入图像的RGB三个通道的值分别做标准化。读取数据集
通过自定义的
VOCSegDataset
类来分别创建训练集和测试集的实例。 假设指定随机裁剪的输出图像的形状为320×480, 下面可以查看训练集和测试集所保留的样本个数设批量大小为64,定义训练集的迭代器。 打印第一个小批量的形状会发现:与图像分类或目标检测不同,这里的标签是一个三维数组。
整合所有组件
定义以下
load_data_voc
函数来下载并读取Pascal VOC2012语义分割数据集。 它返回训练集和测试集的数据迭代器