图片嵌入任务指南

借助 MediaPipe Image Embedder 任务,您可以创建图片的数字表示形式,这有助于完成各种基于机器学习的图片任务。此功能经常用于使用余弦相似度等数学比较技术比较两张图片的相似度。此任务使用机器学习 (ML) 模型(作为静态数据或连续流)处理图片数据,并以浮点或量化形式的高维特征向量列表(也称为嵌入向量)输出图片数据的数字表示法。

试试吧!

开始使用

如需开始使用此任务,请按照适用于您的目标平台的其中一个实现指南进行操作。以下平台专用指南介绍了如何使用推荐的模型完成此任务的基本实现,并提供包含推荐配置选项的代码示例:

任务详情

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

特性

  • 输入图片处理 - 处理包括图片旋转、调整大小、归一化和颜色空间转换。
  • 兴趣区域 - 对图片的某个区域(而不是整个图片)执行嵌入。
  • 嵌入相似度计算 - 用于计算两个特征向量之间的余弦相似度的内置实用函数
  • 量化 - 支持特征向量的标量量化。
任务输入 任务输出
输入可以是以下数据类型之一:
  • 静态图片
  • 已解码的视频帧
  • 实时视频画面
图像嵌入器会输出一个包含以下内容的嵌入列表:
  • 嵌入:特征向量本身,采用浮点形式或标量量化形式。
  • 头部索引:产生此嵌入的头部的索引。
  • 头部名称(可选):生成此嵌入的头部名称。

配置选项

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

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

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

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

LIVE_STREAM:输入数据(例如来自摄像头)的直播的模式。在此模式下,必须调用 resultListener,以设置用于异步接收结果的监听器。
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
l2_normalize 是否以 L2 范数归一化返回的特征向量。 仅当模型尚未包含原生 L2_NORMALIZATION TFLite 运算时,才可使用此选项。在大多数情况下,情况都是如此,L2 归一化是通过 TFLite 推断实现的,因此无需使用此选项。 Boolean False
quantize 是否应通过标量量化将返回的嵌入量化为字节。嵌入被隐式假定为单位范数,因此任何维度的值都必须在 [-1.0, 1.0] 之间。如果不属于这种情况,请使用 l2_normalize 选项。 Boolean False
result_callback 设置结果监听器,以在图片嵌入器处于直播模式时异步接收嵌入结果。只能在跑步模式设为“LIVE_STREAM”时使用 N/A 未设置

模型

如需使用图片嵌入器,您需要下载图片嵌入模型并将其存储在项目目录中。开始使用此任务进行开发时,请先使用适用于目标平台的默认推荐模型。其他可用模型通常会在性能、准确性、分辨率和资源要求之间进行权衡,在某些情况下,还会包含其他功能。

MobileNetV3 模型

此模型系列使用 MobileNet V3 架构,并使用 ImageNet 数据进行训练。此模型为卷积层中的深度(特征数)使用乘数 0.75,以调整准确性与延迟时间的权衡。此外,MobileNet V3 有两种不同的大小(小和大),让网络适应低资源或高资源的用例。

模型名称 输入形状 量化类型 Versions
MobileNet-V3(小) 224 x 224 无 (float32) 最新动态
MobileNet-V3(大) 224 x 224 无 (float32) 最新动态

任务基准

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

模型名称 CPU 延迟时间 GPU 延迟时间
MobileNet-V3(小) 3.94 毫秒 7.83 毫秒
MobileNet-V3(大) 9.75 毫秒 9.08 毫秒