尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

PaddleSeg Matting 自定义抠图数据集准备指南:离线合成与在线合成数据组织及源码级解析

发布时间:2026/9/25 7:59:23

资讯中心
01
ARTICLE

PaddleSeg Matting 自定义抠图数据集准备指南:离线合成与在线合成数据组织及源码级解析

PaddleSeg Matting 自定义抠图数据集准备指南:离线合成与在线合成数据组织及源码级解析
人工智能计算机视觉预训练【免费下载链接】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 抠图Matting模块的自定义数据集准备展开完整讲解离线合成与在线合成两种数据格式的组织方式、列表文件train.txt / val.txt的书写规则并结合MattingDataset的源码实现深入剖析在线合成、trimap 自动生成等底层机制帮助你按照可复制、可运行的标准整理好训练数据并正确接入训练配置。两种数据集组织形式当需要用自己的数据训练抠图模型时必须先把数据集整理成框架约定的格式。Matting 模块提供了两种组织形式见 数据准备文档离线合成Offline composition图像已经离线合成好或者本身就不需要合成例如训练数据就是完整图片加对应的 alpha 蒙版此时数据只需包含前景图fg与 alpha 蒙版两组文件在线合成Online composition输入网络的原图由前景图fg、alpha 蒙版和背景图bg在数据读取阶段实时合成类似 Deep Image Matting 论文所使用的 Composition-1k 数据集的组织方式。两种形式最终都由同一个数据读取类MattingDataset消费其实现位于 Matting/ppmatting/datasets/matting_dataset.py。下面分别展开。离线合成数据集的组织如果图像已经实现离线合成或者不需要合成数据集应按如下目录结构组织dataset_root/ |--train/ | |--fg/ | |--alpha/ | |--val/ | |--fg/ | |--alpha/ | |--train.txt | |--val.txt关键约束如下fg/目录存放原图已合成的完整图像或需要抠图的前景图fg/下的图像文件名必须与alpha/下的文件名一一对应且同一对图像在两个目录中的分辨率必须一致train.txt与val.txt每行仅记录一个前景图路径相对dataset_rootalpha 路径由代码自动推导train/fg/14299313536_ea3e61076c_o.jpg train/fg/14429083354_23c8fddff5_o.jpg train/fg/14559969490_d33552a324_o.jpg ...源码验证alpha 路径的自动推导从MattingDataset.__getitem__的实现看Matting/ppmatting/datasets/matting_dataset.py#L116-L154框架确实按“字符串替换”的方式推导 alpha 文件位置fg_file os.path.join(self.dataset_root, fg_bg_file[0]) alpha_file fg_file.replace(/fg, /alpha)这一行代码印证了两个隐含的目录要求前景目录名必须是fgalpha 目录名必须是alpha二者需为同级目录替换后路径才有效文件名除目录前缀外必须完全一致否则替换后的 alpha 路径将指向不存在的文件cv2.imread会返回空图。此外当列表行只有一列即离线合成形式时源码直接将前景图作为输入图像data[img] fg data[fg] fg.copy() data[bg] fg.copy()即网络输入img就是 fg 图本身fg/bg字段用于后续 loss 计算。这也解释了为何该形式下不要求提供背景图。在线合成数据集的组织数据读取支持在线合成输入网络的图像由前景图、alpha 蒙版和背景图在读取时实时合成这种方式对应 Composition-1k 数据集的组织形式。数据集应整理为Composition-1k/ |--bg/ | |--train/ | |--fg/ | |--alpha/ | |--val/ | |--fg/ | |--alpha/ | |--trimap/ (如果存在) | |--train.txt | |--val.txt其中fg/存放前景图bg/存放背景图背景图与前景图数量不必相等训练时逐行指定配对关系。train.txt每行为两个以空格分隔的路径第一列为前景图第二列为背景图train/fg/fg1.jpg bg/bg1.jpg train/fg/fg2.jpg bg/bg2.jpg train/fg/fg3.jpg bg/bg3.jpg ...val.txt每行为三个路径第三列为 trimap 文件路径如果数据集中没有 trimap第三列可以不提供代码会自动根据 alpha 生成 trimapval/fg/fg1.jpg bg/bg1.jpg val/trimap/trimap1.jpg val/fg/fg2.jpg bg/bg2.jpg val/trimap/trimap2.jpg val/fg/fg3.jpg bg/bg3.jpg val/trimap/trimap3.jpg ...若提供了 trimap 路径但文件不存在源码会直接抛出FileNotFoundErrorMatting/ppmatting/datasets/matting_dataset.py#L137-L146因此要么保证文件存在要么干脆不写第三列。源码验证在线合成composite的具体流程在线合成逻辑位于MattingDataset.compositeMatting/ppmatting/datasets/matting_dataset.py#L196-L226其核心行为如下背景自适应前景尺寸计算前景图与背景图的宽高缩放比取较大者ratio若背景比前景小则先将背景等比放大再从左上角裁剪出与前景完全相同的fg_h x fg_w区域bg bg[0:fg_h, 0:fg_w, :] alpha alpha / 255 alpha np.expand_dims(alpha, axis2) image alpha * fg (1 - alpha) * bg这意味着背景图不要求与前景图分辨率一致框架会自动缩放裁剪而合成公式即标准 alpha 混合image alpha * fg (1 - alpha) * bg。RSSN 风格增强可选if_rssnTrue合成前以 50% 概率对前景与背景分别做cv2.fastNlMeansDenoisingColored去噪并以 50% 概率对背景施加随机半径19/29/39/49/59的高斯模糊。该选项对应训练配置中的if_rssn参数用于模拟真实场景中背景模糊、含噪的情况增强模型鲁棒性。MattingDataset 参数说明结合类定义Matting/ppmatting/datasets/matting_dataset.py#L28-L80MattingDataset的完整参数如下配置数据集时可按需设置参数类型默认值说明dataset_rootstr必填数据集根路径列表文件中的相对路径以此为基准拼接transformslist必填图像变换列表如LoadImages、RandomCrop、Normalize等modestrtrain使用数据集的哪一部分取值train/val/trainvaltrain_filestr 或 listNone训练列表文件路径mode 为train或trainval时必填val_filestr 或 listNone验证列表文件路径mode 为val或trainval时必填get_trimapboolTrue是否获取/生成 trimap设为False时数据中不含 trimap 字段separatorstr 列表文件各列之间的分隔符若文件路径中包含空格可改用|等字符key_deltuple 或 listNone指定不需要的数据字段读取时直接删除以加速数据加载if_rssnboolFalse在线合成时是否启用去噪与模糊增强两个值得注意的实现细节列表读取后训练模式会执行random.shuffleMatting/ppmatting/datasets/matting_dataset.py#L113-L114因此无需手动打乱 train.txt验证模式下 GT 字段alpha 等不参与随机增广变换仅img经过 transforms保证评估一致性alpha 最终归一化到[0, 1]并扩展为单通道维度。trimap 的自动生成机制当验证集未提供 trimap 且get_trimap为真时框架调用gen_trimap从 alpha 蒙版自动生成Matting/ppmatting/datasets/matting_dataset.py#L228-L252。其逻辑为对 alpha 做腐蚀与膨胀构造三值0 / 128 / 255trimap训练模式使用随机大小的椭圆结构元素2~4 像素迭代次数在 5~15 之间随机每次生成略有不同的 trimap起到数据增广作用验证模式固定使用 25 像素椭圆核、单次腐蚀/膨胀保证评估条件稳定。trimap 语义为255表示确定前景0表示确定背景128表示不确定区域。因此当你的数据只有 alpha 而没有 trimap 时完全可以省略 val.txt 的第三列由该机制自动补齐。将数据集接入训练配置整理好数据后只需在训练配置的train_dataset/val_dataset中声明MattingDataset并指定列表文件即可。以仓库中 MODNet 的配置 Matting/configs/modnet/modnet-mobilenetv2.yml 为例train_dataset: type: MattingDataset dataset_root: data/PPM-100 train_file: train.txt transforms: - type: LoadImages - type: RandomCrop crop_size: [512, 512] - type: RandomDistort - type: RandomBlur - type: RandomHorizontalFlip - type: Normalize mode: train val_dataset: type: MattingDataset dataset_root: data/PPM-100 val_file: val.txt transforms: - type: LoadImages - type: ResizeByShort short_size: 512 - type: ResizeToIntMult mult_int: 32 - type: Normalize mode: val get_trimap: False该示例演示了典型的离线合成用法训练与验证都只给出单列列表文件验证阶段关闭 trimapget_trimap: False并按 32 的整数倍调整尺寸以适配网络。另一种更丰富的用法可见 Matting/configs/ppmatting/ppmatting-hrnet_w18-human_512.yml其训练增广中还加入了RandomNoise、RandomReJpeg等变换可按需参照。实践要点小结两种组织形式的核心区别在于train.txt/val.txt每行的列数一列为离线合成fg 即输入两列/三列为在线合成fg bg验证可加 trimap文件名与目录名必须严格遵守fg/alpha的对应关系且同一对图像分辨率一致这是由 alpha 路径的字符串替换推导机制决定的背景图分辨率不限框架会自动缩放裁剪列表路径含空格时记得设置separator没有 trimap 时直接省略第三列训练与验证的 trimap 会自动生成需要完全关闭 trimap 时设置get_trimap: False数据列表文件支持传入列表train_file可为多个文件训练模式下框架会自动 shuffle无需手工打乱。赞分享人工智能计算机视觉预训练【免费下载链接】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点击查看免费下载相关推荐自定义数据集准备指南自定义数据集准备指南 1. 数据集目录结构 data/custom_dataset/ ├── img_dir/ │ ├── train/ │ └── val/人工智能深度学习计算机视觉MMPose 数据集准备完全指南内置数据集、自定义数据集、混合训练、浏览与下载MMPose 数据集准备完全指南内置数据集、自定义数据集、混合训练、浏览与下载 MMPose 是 OpenMMLab 的姿态估计工具箱无论是训练人体、人脸、计算机视觉人工智能深度学习终极FCEUX NES模拟器从游戏重温到专业调试的完整指南终极FCEUX NES模拟器从游戏重温到专业调试的完整指南 你是否曾想深入了解经典NES游戏的内部机制或者希望在重温童年经典时拥有更多的控制权FCEUX计算机视觉人工智能深度学习上一篇30分钟用tui-rs构建会动的贪吃蛇从0到1实现终端游戏下一篇10分钟上手reka.js从安装到创建第一个组件的完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

◈

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

◐

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

▲

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。