图像分割指南

一张特写的男子照片与一张勾勒出男子形状的图片蒙版并排显示的示例

借助 MediaPipe 图片分割器任务,您可以根据预定义的类别将图片划分为区域。您可以使用此功能识别特定对象或纹理,然后应用背景模糊处理等视觉效果。此任务包含多个专门用于在图片数据中分割人物及其特征的模型,包括:

  • 人物和背景
  • 仅限人物的头发
  • 人物的头发、面部、皮肤、服装和配饰

此任务使用机器学习 (ML) 模型对单张图片或连续视频串的图片数据进行操作。它会输出一系列分割区域,表示图片中的对象或区域,具体取决于您选择的模型

试试吧!

开始使用

如需开始使用此任务,请按照适用于目标平台的以下任一实现指南操作。以下平台专用指南将引导您完成此任务的基本实现,包括推荐的模型,以及包含推荐配置选项的代码示例:

任务详情

本部分介绍了此任务的功能、输入、输出和配置选项。

功能

  • 输入图片处理 - 处理包括图片旋转、调整大小、归一化和颜色空间转换。
任务输入 任务输出
输入可以是以下任一数据类型:
  • 静态图片
  • 解码后的视频帧
  • 实时视频画面
图片分割器会输出分割后的图片数据,其中可能包含以下一个或两个部分,具体取决于您设置的配置选项:
  • CATEGORY_MASK:包含分割的遮罩(作为 uint8 格式图片)的列表。每个像素值都表明它是否属于模型支持的特定细分类别。
  • CONFIDENCE_MASK:包含分割蒙版的通道列表,其中像素值采用 float32 格式。每个像素值都表示该像素属于模型支持的特定类别的置信度。

配置选项

此任务具有以下配置选项:

选项名称 说明 值范围 默认值
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 毫秒