借助 MediaPipe 图片分割器任务,您可以根据预定义的类别将图片划分为区域。您可以使用此功能识别特定对象或纹理,然后应用背景模糊处理等视觉效果。此任务包含多个专门用于在图片数据中分割人物及其特征的模型,包括:
- 人物和背景
- 仅限人物的头发
- 人物的头发、面部、皮肤、服装和配饰
此任务使用机器学习 (ML) 模型对单张图片或连续视频串的图片数据进行操作。它会输出一系列分割区域,表示图片中的对象或区域,具体取决于您选择的模型。
开始使用
如需开始使用此任务,请按照适用于目标平台的以下任一实现指南操作。以下平台专用指南将引导您完成此任务的基本实现,包括推荐的模型,以及包含推荐配置选项的代码示例:
任务详情
本部分介绍了此任务的功能、输入、输出和配置选项。
功能
- 输入图片处理 - 处理包括图片旋转、调整大小、归一化和颜色空间转换。
任务输入 | 任务输出 |
---|---|
输入可以是以下任一数据类型:
|
图片分割器会输出分割后的图片数据,其中可能包含以下一个或两个部分,具体取决于您设置的配置选项:
|
配置选项
此任务具有以下配置选项:
选项名称 | 说明 | 值范围 | 默认值 |
---|---|---|---|
running_mode |
设置任务的运行模式。共有三种模式: IMAGE:适用于单张图片输入的模式。 视频:视频的解码帧的模式。 LIVE_STREAM:输入数据(例如来自摄像头)的直播模式。 在此模式下,必须调用 resultListener 以设置监听器以异步接收结果。 |
{IMAGE, VIDEO, LIVE_STREAM } |
IMAGE |
output_category_mask |
如果设置为 True ,输出将包含一个分割掩码(作为 uint8 图片),其中每个像素值都表示胜出的类别值。 |
{True, False } |
False |
output_confidence_masks |
如果设为 True ,输出将包含作为浮点值图片的分割掩码,其中每个浮点值代表相应类别的置信度得分映射。 |
{True, False } |
True |
display_names_locale |
设置要为任务模型的元数据(如果有)中提供的显示名称使用的标签语言。默认值为 en (英语)。您可以使用 TensorFlow Lite Metadata Writer API 向自定义模型的元数据添加本地化标签 |
语言区域代码 | en |
result_callback |
设置结果监听器,以便在图片分割器处于 LIVE_STREAM 模式时异步接收分割结果。
仅当运行模式设置为 LIVE_STREAM 时才能使用 |
不适用 | 不适用 |
模型
图片分割器可与多个机器学习模型搭配使用。以下大多数分割模型都是构建和训练的,可对人物图片执行分割。不过,DeepLab-v3 模型是作为通用图像分割器构建的。选择最适合您的应用的模型。
自拍分割模型
此模型可以分割人物肖像,并可用于替换或修改图片中的背景。该模型输出两个类别,索引为 0 表示背景,索引为 1 表示人物。此模型有不同输入形状的版本,包括方形版本和横屏版本,对于输入始终为该形状的应用(例如视频通话),这些版本可能更高效。
模型名称 | 输入形状 | 量化类型 | 模型卡片 | 版本 |
---|---|---|---|---|
SelfieSegmenter(方形) | 256 x 256 | float 16 | 信息 | 最新 |
SelfieSegmenter(横向) | 144 x 256 | float 16 | 信息 | 最新 |
头发分割模型
该模型会获取一个人的图片,定位其头上的头发,并输出头发的图片分割图。您可以使用此模型为头发重新着色或应用其他头发效果。该模型会输出以下细分类别:
0 - background
1 - hair
模型名称 | 输入形状 | 量化类型 | 模型卡片 | 版本 |
---|---|---|---|---|
hairSegmenter | 512 x 512 | 无(float32) | 信息 | 最新 |
多类别自拍分割模型
该模型会获取一个人的图片,定位头发、皮肤和衣服等不同区域,并输出这些内容的图片分割图。您可以使用此模型为图片或视频中的人物应用各种效果。该模型会输出以下细分类别:
0 - background
1 - hair
2 - body-skin
3 - face-skin
4 - clothes
5 - others (accessories)
模型名称 | 输入形状 | 量化类型 | 模型卡片 | 版本 |
---|---|---|---|---|
SelfieMulticlass(256 x 256) | 256 x 256 | 无(float32) | 信息 | 最新 |
DeepLab-v3 模型
此模型可识别多种类别的片段,包括背景、人、猫、狗和盆栽植物。该模型使用 atrous 空间金字塔池化来捕获更长范围的信息。如需了解详情,请参阅 DeepLab-v3。
模型名称 | 输入形状 | 量化类型 | 版本 |
---|---|---|---|
DeepLab-V3 | 257 x 257 | 无(float32) | 最新 |
任务基准
以下是基于上述预训练模型的整个流水线的任务基准。延迟时间结果是使用 CPU / GPU 在 Pixel 6 上的平均延迟时间。
模型名称 | CPU 延迟时间 | GPU 延迟时间 |
---|---|---|
SelfieSegmenter(方形) | 33.46 毫秒 | 35.15 毫秒 |
SelfieSegmenter(横向) | 34.19 毫秒 | 33.55 毫秒 |
HairSegmenter | 57.90 毫秒 | 52.14 毫秒 |
SelfieMulticlass(256 x 256) | 217.76 毫秒 | 71.24 毫秒 |
DeepLab-V3 | 123.93 毫秒 | 103.30 毫秒 |