Python 版人脸风格化指南

<ph type="x-smartling-placeholder">

借助 MediaPipe Face Stylizer 任务,你可以对图片中的人脸应用人脸风格化。 您可以使用此任务创建各种样式的虚拟头像。

GitHub 上提供了这些说明中所述的代码示例。 如需详细了解功能、模型和配置选项 部分,请参阅概览

代码示例

Face Stylizer 的示例代码提供了上述示例的完整实现, 供您参考。此代码可帮助您测试此任务, 开始打造自己的脸部风格化工具。您可以查看、运行和修改 人脸风格化程序示例代码 只需使用网络浏览器即可。

设置

本部分介绍了设置开发环境和 专门用于人脸风格化程序的代码项目。有关 设置开发环境以使用 MediaPipe 任务,包括 平台版本要求,请参阅适用于 Python

软件包

MediaPipe Face Stylizer 任务需要 mediapipe PyPI 软件包。你可以安装并 使用以下命令导入这些依赖项:

$ python -m pip install mediapipe

导入

导入以下类以访问 Face Stylizer 任务:

import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import vision

型号

MediaPipe Face Stylizer 任务需要一个与此训练兼容的模型, 任务。如需详细了解适用于 Face Stylizer 且经过训练的模型,请参阅 任务概览的“模型”部分

选择并下载模型,然后将其存储在本地目录中:

model_path = '/absolute/path/to/face_stylizer.task'

使用 BaseOptions 对象 model_asset_path 参数指定 要使用的模型。如需查看代码示例,请参阅下一部分。

创建任务

MediaPipe Face Stylizer 任务使用 create_from_options 函数来设置 任务。create_from_options 函数接受配置值 处理选项

以下代码演示了如何构建和配置此任务。

import mediapipe as mp

BaseOptions = mp.tasks.BaseOptions
Facestylizer = mp.tasks.vision.face_stylizer
FacestylizerOptions = mp.tasks.vision.FaceStylizerOptions

# Create a face stylizer instance with the image mode:
options = FacestylizerOptions(
    base_options=BaseOptions(model_asset_path=model_path),
with Facestylizer.create_from_options(options) as stylizer:
  # The stylizer is initialized. Use it here.
  # ...

准备数据

将输入准备为图像文件或 Numpy 数组,然后将其转换为 mediapipe.Image 对象。如果您输入的是 网络摄像头,您可以使用外部库,如 OpenCV:以 Numpy 形式加载输入帧 数组。

import mediapipe as mp

# Load the input image from an image file.
mp_image = mp.Image.create_from_file('/path/to/image')

# Load the input image from a numpy array.
mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=numpy_image)

运行任务

Face Stylizer 使用 stylize 函数来触发推理。面部用 包括预处理输入数据和 图片。

以下代码演示了如何使用任务执行处理 模型。

# Perform face stylization on the provided single image.
# The face stylizer must be created with the image mode.
face_stylizer_result = stylizer.stylize(mp_image)

处理和显示结果

人脸风格化程序会返回一个风格化程度最高的 Image 对象, 输入图片中突出显示的人脸。

以下示例展示了此任务的输出数据:

以上输出是通过应用颜色草图创建的 映射到以下输入图片: