如果您需要使用自定义数据集进行训练,请按照以下步骤准备数据.
1. 数据集结构
custom_dataset
|
|--images
| |--image1.jpg
| |--image2.jpg
| |--...
|
|--labels
| |--label1.png
| |--label2.png
| |--...
|
|--train.txt
|
|--val.txt
|
|--test.txt
其中 train.txt
和 val.txt
的内容如下所示:
images/image1.jpg labels/label1.png
images/image2.jpg labels/label2.png
Note: train.txt
、val.txt
、test.txt
中文件并非要和 custom_dataset
文件夹在同一目录下,可以通过配置文件中的选项修改.
2. 数据标签
标注图像的标签从 0,1 依次取值,不可间隔。若有需要忽略的像素,则按 255 进行标注。
可按如下方式对自定义数据集进行配置:
train_dataset:
type: Dataset
dataset_root: custom_dataset
train_path: custom_dataset/train.txt
num_classes: 2
transforms:
- type: ResizeStepScaling
min_scale_factor: 0.5
max_scale_factor: 2.0
scale_step_size: 0.25
- type: RandomPaddingCrop
crop_size: [512, 512]
- type: RandomHorizontalFlip
- type: Normalize
mode: train
请注意 数据集路径和训练文件 的存放位置,按照代码中的 dataset_root
和 train_path
示例方式存放。
3. 数据格式说明
3.1 标注协议
PaddleSeg 采用单通道的标注图片,每一种像素值代表一种类别,像素标注类别需要从0开始递增,例如0,1,2,3表示有4种类别。
NOTE: 标注图像请使用 PNG 无损压缩格式的图片。标注类别最多为 256 类。
3.2 灰度标注vs伪彩色标注
一般的分割库使用 单通道灰度图
作为标注图片,往往显示出来是全黑的效果。灰度标注图的弊端:
- 对图像标注后,无法直接观察标注是否正确。
- 模型测试过程无法直接判断分割的实际效果。
PaddleSeg支持伪彩色图作为标注图片,在原来的单通道图片基础上,注入调色板。在基本不增加图片大小的基础上,却可以显示出彩色的效果。
同时 PaddleSeg 也兼容灰度图标注,用户原来的灰度数据集可以不做修改,直接使用。
3.3 灰度标注转换为伪彩色标注
代码路径: pdseg/tools/gray2pseudo_color.py
3.4 文件列表生成
PaddleSeg 提供了生成文件列表的使用脚本,可适用于自定义数据集或 cityscapes 数据集,并支持通过不同的 Flags 来开启特定功能。
代码路径: pdseg/tools/create_dataset_list.py
运行后将在数据集根目录下生成训练/验证/测试集的文件列表(文件主名与 --second_folder
一致,扩展名为 .txt
)。
Note: 生成文件列表要求:要么原图和标注图片数量一致,要么只有原图,没有标注图片。若数据集缺少标注图片,仍可自动生成不含分隔符和标注图片路径的文件列表。