图像分割指南

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

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

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

试试吧!

开始使用

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

任务详情

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

特性

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

配置选项

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

选项名称 说明 值范围 默认值
running_mode 设置任务的运行模式。有三种模式:

IMAGE:单张图片输入的模式。

VIDEO:视频的已解码帧的模式。

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”时使用 N/A N/A

模型

图像分割器可用于多个机器学习模型。以下大部分分割模型都是构建和训练的,用于用人物图片执行分割。但是,DeepLab-v3 模型是作为通用图片分割器构建的。选择最适合您的应用的模型。

自拍分割模型

此模型可以分割人像,并可用于替换或修改图片中的背景。该模型会输出两个类别:背景位于索引 0 处,人物位于索引 1 处。此模型具有输入形状不同的版本,包括方形版本和横向版本,对于输入始终采用该形状的应用(例如视频通话),可能更高效。

模型名称 输入形状 量化类型 模型卡片 Versions
SelfieSegmenter(方形) 256 x 256 浮点数 16 信息 最新动态
SelfieSegmenter(横向) 144 x 256 浮点数 16 信息 最新动态

头发分割模型

此模型获取一个人的图像,定位其头发,并输出其头发的图像分割图。您可以使用此模型将头发改色或应用其他头发效果。该模型会输出以下细分类别:

0 - background
1 - hair
模型名称 输入形状 量化类型 模型卡片 Versions
HairSegmenter 512 x 512 无 (float32) 信息 最新动态

多类别自拍分割模型

此模型获取一个人的图像,定位不同区域(如头发、皮肤和服装)的区域,并为这些项目输出图像分割图。您可以使用此模型对图片或视频中的人物应用各种效果。该模型会输出以下细分类别:

0 - background
1 - hair
2 - body-skin
3 - face-skin
4 - clothes
5 - others (accessories)
模型名称 输入形状 量化类型 模型卡片 Versions
SelfieMulticlass (256 x 256) 256 x 256 无 (float32) 信息 最新动态

DeepLab-v3 模型

该模型可识别许多类别的细分,包括背景、人、猫、狗和盆栽植物。该模型使用星空空间金字塔池化来捕获更长范围的信息。如需了解详情,请参阅 DeepLab-v3

模型名称 输入形状 量化类型 Versions
DeepLab-V3 257 x 257 无 (float32) 最新动态

任务基准

以下是基于上述预训练模型的整个流水线的任务基准。延迟时间结果是 Pixel 6 使用 CPU / GPU 时的平均延迟时间。

模型名称 CPU 延迟时间 GPU 延迟时间
自拍分割器(方形) 33.46 毫秒 35.15 毫秒
自拍分割器(横向) 34.19 毫秒 33.55 毫秒
HairSegmenter 57.90 毫秒 52.14 毫秒
SelfieMulticlass (256 x 256) 217.76 毫秒 71.24 毫秒
DeepLab-V3 123.93 毫秒 103.30 毫秒