人工智能计算机视觉预训练【免费下载链接】PaddleSegEasy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting, 3D Segmentation, etc.项目地址https://gitcode.com/gh_mirrors/pa/PaddleSeg点击查看免费下载本篇技术指南以 PaddleSeg 的官方数据准备文档为核心系统讲解从零构造一个可用于语义分割训练的自定义数据集的完整流程先厘清 PaddleSeg 对标注图像的协议要求单通道、类别从 0 递增、PNG 无损格式、最多 256 类再介绍灰度标注图与伪彩色标注图的差异及转换工具随后给出 EISeg、LabelMe 两类标注工具的接入指引最后以官方脚本split_dataset_list.py完成数据整理与训练/验证/测试文件列表的自动切分。读完本文你将能够独立把一批原始图像 标注图像加工成 PaddleSeg 可直接用于训练的自定义数据集及配套train.txt、val.txt、test.txt文件列表。1、背景知识PaddleSeg 的标注协议1.1 标注图像格式PaddleSeg 使用单通道标注图片每一种像素值代表一种语义类别像素标注类别需要从 0 开始递增。例如像素值 0、1、2、3 表示数据集共有 4 种类别。配套的两个硬性要求建议标注图像使用PNG 无损压缩格式避免 JPEG 有损压缩在类别边界处引入的像素噪声防止训练时标签被污染单张标注图支持的标注类别最多为 256 类受 8 位单通道像素值 0~255 的表达范围限制也与后续可视化使用的调色板机制相关见 1.3 节源码解析。1.2 灰度标注图 vs 伪彩色标注图通用的分割库通常以单通道灰度图作为标注图直接查看时往往呈现全黑效果由此带来两个明显的痛点标注完一张图像后无法直接肉眼观察标注是否正确边界是否贴合目标、类别是否画错都看不出来在模型测试/评估阶段无法直接判断分割结果的实际效果。PaddleSeg 同时支持两种标注图形态灰度标注图原始的单通道标签兼容用户已有的灰度数据集无需任何修改即可直接使用伪彩色标注图在原始单通道图像基础上注入调色板palette在基本不增加图片体积的前提下呈现彩色效果便于直观检查标注质量与预测结果。下图为原图、灰度标注图与伪彩色标注图的直观对比来源docs/data/image/image-11.png从实现层面看这种注入调色板的做法本质上是将标签数组以 PIL 的P调色板模式保存并把类别索引映射到 RGB 颜色表。PaddleSeg 在 tools/data/gray2pseudo_color.py 与 paddleseg/utils/visualize.py 中提供了同一套get_color_map_list(num_classes)颜色表生成函数它按位运算把类别序号i的三位一组比特展开到 RGB 三个通道的高位从而为任意数量的类别稳定地分配可区分的颜色。训练与预测阶段的可视化如 get_pseudo_color_map也复用了这份默认 256 色调色板因此标注图是什么颜色与预测结果可视化用什么颜色天然保持一致。1.3 灰度标注图转换为伪彩色标注图非必须如果你已有的数据集是灰度标注图又想转换为伪彩色标注图以方便检查PaddleSeg 提供了转换脚本python tools/data/gray2pseudo_color.py dir_or_file output_dir该脚本适用于两种常见场景。场景一转换指定目录下的所有灰度标注图| 参数 | 用途 | | - | - | |dir_or_file| 灰度标注图所在的目录 | |output_dir| 伪彩色标注图的保存目录 |场景二仅转换文件列表中指定的部分灰度标注图python tools/data/gray2pseudo_color.py dir_or_file output_dir --dataset_dir dataset directory --file_separator file list separator| 参数 | 用途 | | - | - | |dir_or_file| 指定文件列表路径该文件列表中的图片会被转换 | |output_dir| 伪彩色标注图的保存目录 | |--dataset_dir| 数据集所在的根目录 | |--file_separator| 文件列表的分隔符 |从 gray2pseudo_color.py 的源码可以确认如下行为细节脚本调用get_color_map_list(256)生成覆盖 256 类的调色板并通过Image.fromarray(lbl.astype(np.uint8), modeP)putpalette(color_map)将灰度标签写入调色板模式的 PNG从而在文件体积几乎不增加的前提下获得彩色标注图目录模式下使用os.walk递归遍历输入目录输出目录会保留输入目录原有的子目录层级结构方便维持数据集组织文件列表模式下脚本按file_separator切分每一行取第二个字段即标注图相对路径拼接dataset_dir得到真实路径转换后仍按原相对路径落到output_dir下注意此时必须同时提供--dataset_dir与--file_separator否则脚本会提示No dataset_dir or file_separator input!并退出。需要说明的是这一步是可选优化PaddleSeg 本身完全兼容灰度标注图用户原有的灰度数据集可不做任何转换直接使用。2、标注工具EISeg 与 LabelMe如果不是使用已经标注好的公开数据集如 Cityscapes、Pascal VOC需要预先采集图像再用数据标注工具完成标注。PaddleSeg 官方支持两类主流标注工具教程分别位于EISeg 交互式分割标注工具教程基于飞桨开发的高效交互式分割标注软件覆盖通用、人像、遥感、医疗、视频等方向的交互式分割模型采用点击目标区域、模型自动生成分割结果的半自动标注方式标注效率远高于纯手工描边LabelMe 标注教程经典的多边形手工标注工具英文版 同步提供。核心流程是打开图像目录后用Create Polygons沿目标边缘绘制闭合多边形并指定类别背景类必须命名为_background_标注完成后每个图像对应生成一个 json 文件随后使用 PaddleSeg 的转换脚本把 json 批量转为分割标签python tools/data/labelme2seg.py input_dir output_dir转换后得到images/、annotations/、class_names.txt的标准结构_background_类别 id 为 0其余类别依次递增可直接衔接下文的数据整理与切分环节。该转换脚本位于 tools/data/labelme2seg.py。使用 LabelMe 时请特别注意LabelMe 对中文支持不够友好路径与文件名中不要出现中文字符。3、整理数据统一的目录结构标注完成后需要把数据整理成如下结构所有原始图像放在一个文件夹所有标注图像放在另一个文件夹。custom_dataset | |--images # 存放所有原图 | |--image1.jpg | |--image2.jpg | |--... | |--labels # 存放所有标注图 | |--label1.png | |--label2.png | |--...两个要点原始图像与标注图像的文件名必须一一对应不要求后缀相同例如image1.jpg对应label1.png即可请自行检查核对目录名并不强制叫images/labels后续切分脚本会把这两个目录名作为命令行参数传入见第 4 节因此你可以沿用 LabelMe 转换产出的annotations目录名也可以统一为labels只需在切分时保持一致即可。另外从切分脚本源码看get_files 通过 glob 模式*postfix.format递归匹配三层以内的子目录因此即使图像按子目录分门别类存放例如images/sub1/image1.jpg脚本也能正确扫描到全部文件。4、切分数据生成训练/验证/测试文件列表4.1 命令格式与参数对于尚未划分训练集、验证集、测试集的全部数据PaddleSeg 提供脚本按比例随机切分并生成文件列表python tools/data/split_dataset_list.py dataset_root images_dir_name labels_dir_name ${FLAGS}位置参数说明| 参数 | 含义 | | - | - | |dataset_root| 数据集根目录 | |images_dir_name| 原始图像目录名 | |labels_dir_name| 标注图像目录名 |FLAGS 说明| FLAG | 含义 | 默认值 | 参数数目 | | - | - | - | - | |--split| 训练集、验证集和测试集的切分比例 |0.7 0.3 0| 3 | |--separator| txt 文件列表分隔符 | 空格 | 1 | |--format| 原始图像和标注图像的图片后缀 |jpg png| 2 | |--postfix| 按文件主名无扩展名是否包含指定后缀对图片和标签进行筛选 | 2 个空字符 | 2 |典型使用示例python tools/data/split_dataset_list.py dataset_root images labels --split 0.6 0.2 0.2 --format jpg png4.2 源码级行为细节阅读 split_dataset_list.py 可以确认脚本的完整执行逻辑便于规避踩坑比例校验三个--split参数之和必须为 1误差超过1e-8即抛出ValueError每个比例还须落在[0, 1]区间内数量校验扫描到的图像数与标注数必须相等否则抛出异常并提示检查数据集对应关系保持脚本保存随机状态后对图像列表执行np.random.shuffle再恢复同一随机状态对标签列表执行同样的打乱从而保证打乱后图像与标注仍然一一对应末段补齐最后一个分片默认是 test的结束下标被强制设为文件总数确保即使比例小数进位导致误差全部数据也能被完整写入路径相对化写入 txt 的每一行都会去掉dataset_root前缀得到相对于数据集根目录也即相对于 txt 文件所在目录的相对路径两列之间以--separator指定的分隔符连接默认空格。4.3 生成的产物运行结束后数据集根目录下会生成train.txt、val.txt、test.txt英文文档中亦提及labels.txt就当前仓库 split_dataset_list.py 的实现而言实际生成的三个文件列表为train.txt、val.txt、test.txt请以脚本实际输出为准custom_dataset | |--images | |--image1.jpg | |--image2.jpg | |--... | |--labels | |--label1.png | |--label2.png | |--... | |--train.txt | |--val.txt | |--test.txt三个 txt 文件的内容格式如下每行是一张原始图片和标注图片的相对路径中间用分隔符默认空格隔开。images/image1.jpg labels/image1.png images/image2.jpg labels/image2.png ...这份文件列表正是训练/评估阶段数据集加载的直接入口。PaddleSeg 通用数据集类 Dataset 在初始化时会按separator切分每一行并取前两列拼接到dataset_root下其中train/val模式要求每行必须包含图像与标注两列而test模式允许仅有一列图像路径无标注与切分脚本的输出格式完全对齐。至此自定义数据集准备完成即可将train.txt、val.txt、test.txt连同dataset_root配置进训练/验证脚本开始模型训练。5、配套工具链与下一步除本文重点讲解的两个脚本外tools/data 目录还提供了完整的自定义数据集配套工具可按需取用create_dataset_list.py为已按train/val/test子目录划分好的数据集含 Cityscapes 风格目录直接生成文件列表labelme2seg.py将 LabelMe 的 json 标注批量转换为 PaddleSeg 分割标签visualize_annotation.py可视化检查标注图convert_cityscapes.py、convert_cocostuff.py 等公开数据集格式转换。推荐的完整流程是用 EISeg 或 LabelMe 完成标注 → 按需用gray2pseudo_color.py转伪彩色检查质量 → 整理images/与labels/双目录结构 → 用split_dataset_list.py切分生成文件列表 → 在训练配置中指向train.txt/val.txt/test.txt开始训练。赞分享人工智能计算机视觉预训练【免费下载链接】PaddleSegEasy-to-use image segmentation library with awesome pre-trained model zoo, supporting wide-range of practical tasks in Semantic Segmentation, Interactive Segmentation, Panoptic Segmentation, Image Matting, 3D Segmentation, etc.项目地址https://gitcode.com/gh_mirrors/pa/PaddleSeg点击查看免费下载相关推荐告别混乱标注whisperX自定义数据集准备全攻略告别混乱标注whisperX自定义数据集准备全攻略 你是否还在为语音识别模型训练时数据集标注混乱、格式不统一而头疼是否尝试过多种方法却始终无法得到高质量的语音人工智能音频从多源告警混乱到自动响应Keep 开源告警自动化实践指南从多源告警混乱到自动响应Keep 开源告警自动化实践指南 凌晨三点你的手机连续震了二十分钟数据库连接池打满Datadog 弹了 50 条、Prometh人工智能计算机视觉预训练自定义数据集准备指南自定义数据集准备指南 1. 数据集目录结构 data/custom_dataset/ ├── img_dir/ │ ├── train/ │ └── val/人工智能深度学习计算机视觉上一篇docopt学习资源从入门到精通的最佳教程下一篇GraphQL Voyager测试策略Playwright自动化测试实践创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考