对图片执行嵌入提取。
API 需要一个 TFLite 模型,并且该模型包含可选但强烈建议提供的 TFLite 模型元数据。
该 API 支持具有一个图像输入张量和一个或多个输出张量的模型。具体要求如下。
- 输入图片张量 (
kTfLiteUInt8/kTfLiteFloat32)- 图片输入,大小为
[batch x height x width x channels]。 - 不支持批量推理(
batch必须为 1)。 - 仅支持 RGB 输入(
channels必须为 3)。 - 如果类型为 kTfLiteFloat32,则 NormalizationOptions 需要附加到元数据以进行输入归一化。
- 图片输入,大小为
- 至少一个形状为
[1 x N]的输出张量 (kTfLiteUInt8/kTfLiteFloat32),其中 N 是生成的嵌入中的维度数。
嵌套类
| 类别 | ImageEmbedder.ImageEmbedderOptions | 用于设置和ImageEmbedder的选项。 |
|
公共方法
| 静态双精度 | |
| 静态 ImageEmbedder |
createFromBuffer(Context context, ByteBuffer modelBuffer)
基于模型缓冲区和默认的
ImageEmbedder.ImageEmbedderOptions 创建 ImageEmbedder 实例。 |
| 静态 ImageEmbedder |
createFromFile(Context context, String modelPath)
基于模型文件创建
ImageEmbedder 实例并使用默认 ImageEmbedder.ImageEmbedderOptions。 |
| 静态 ImageEmbedder |
createFromFile(Context context, File modelFile)
基于模型文件创建
ImageEmbedder 实例并使用默认 ImageEmbedder.ImageEmbedderOptions。 |
| 静态 ImageEmbedder |
createFromOptions(Context context, ImageEmbedder.ImageEmbedderOptions 选项)
根据
ImageEmbedder.ImageEmbedderOptions 实例创建 ImageEmbedder 实例。 |
| ImageEmbedderResult | |
| ImageEmbedderResult | |
| void |
embedAsync(MPImage 图片、ImageProcessingOptions imageProcessingOptions、long timestampMs)
发送实时图片数据以执行嵌入提取,结果将通过
ImageEmbedder.ImageEmbedderOptions 中提供的 OutputHandler.ResultListener 获得。 |
| void | |
| ImageEmbedderResult |
embedForVideo(MPImage 图片、ImageProcessingOptions imageProcessingOptions、long timestampMs)
对提供的视频帧执行嵌入提取。
|
| ImageEmbedderResult |
继承的方法
公共方法
public static double cosineSimilarity (Embedding u、Embedding v)
参数
| u | |
|---|---|
| v |
抛出
| IllegalArgumentException | (如果嵌入不同类型(浮点数与量化)、大小不同或 L2 范数为 0。 |
|---|
public static ImageEmbedder createFromBuffer (Context context、ByteBuffer modelBuffer)
基于模型缓冲区和默认的 ImageEmbedder.ImageEmbedderOptions 创建 ImageEmbedder 实例。
参数
| context | 一个 Android ERROR(/Context)。 |
|---|---|
| modelBuffer | 嵌入模型的直接 ByteBuffer 或 ERROR(/MappedByteBuffer)。 |
抛出
如果 ImageEmbedder 创建过程中出错,则会发生该错误。 |
public static ImageEmbedder createFromFile (Context context、String modelPath)
基于模型文件创建 ImageEmbedder 实例并使用默认 ImageEmbedder.ImageEmbedderOptions。
参数
| context | 一个 Android ERROR(/Context)。 |
|---|---|
| modelPath | 指向嵌入模型的路径。 |
抛出
如果 ImageEmbedder 创建过程中出错,则会发生该错误。 |
public static ImageEmbedder createFromFile (Context context、File modelFile)
基于模型文件创建 ImageEmbedder 实例并使用默认 ImageEmbedder.ImageEmbedderOptions。
参数
| context | 一个 Android ERROR(/Context)。 |
|---|---|
| modelFile | 嵌入模型 File 实例。 |
抛出
| IOException | 如果在打开 tflite 模型文件时发生 I/O 错误,则会发生该错误。 |
|---|---|
如果 ImageEmbedder 创建过程中出错,则会发生该错误。 |
public static ImageEmbedder createFromOptions (上下文上下文、ImageEmbedder.ImageEmbedderOptions 选项)
根据 ImageEmbedder.ImageEmbedderOptions 实例创建 ImageEmbedder 实例。
参数
| context | 一个 Android ERROR(/Context)。 |
|---|---|
| 选项 | 一个 ImageEmbedder.ImageEmbedderOptions 实例。 |
抛出
如果 ImageEmbedder 创建过程中出错,则会发生该错误。 |
public ImageEmbedderResult embed (MPImage image, ImageProcessingOptions imageProcessingOptions)
对提供的单张图片执行嵌入提取。仅当使用 ERROR(/RunningMode.IMAGE) 创建 ImageEmbedder 时,才使用此方法。
ImageEmbedder 支持以下颜色空间类型:
参数
| 图片 | 用于处理的 MediaPipe MPImage 对象。 |
|---|---|
| imageProcessingOptions | ImageProcessingOptions,用于指定在运行推断之前如何处理输入图片。 |
抛出
| 出现内部错误。 |
public ImageEmbedderResult embed (MPImage 图片)
使用默认图片处理选项对提供的单张图片执行嵌入提取,即将整张图片用作感兴趣的区域,并且不应用任何旋转。
仅当使用 ERROR(/RunningMode.IMAGE) 创建 ImageEmbedder 时,才使用此方法。
ImageEmbedder 支持以下颜色空间类型:
参数
| 图片 | 用于处理的 MediaPipe MPImage 对象。 |
|---|
抛出
| 出现内部错误。 |
public void embedAsync (MPImage image, ImageProcessingOptions imageProcessingOptions, long timestampMs)
发送实时图片数据以执行嵌入提取,结果将通过 ImageEmbedder.ImageEmbedderOptions 中提供的 OutputHandler.ResultListener 获得。只有在使用 ERROR(/RunningMode.LIVE_STREAM) 创建 ImageEmbedder 的情况下,才应使用此方法。
必须提供时间戳(以毫秒为单位),以指明输入图片何时发送到对象检测器。输入时间戳必须单调递增。
ImageEmbedder 支持以下颜色空间类型:
参数
| 图片 | 用于处理的 MediaPipe MPImage 对象。 |
|---|---|
| imageProcessingOptions | ImageProcessingOptions,用于指定在运行推断之前如何处理输入图片。 |
| timestampMs | 输入时间戳(以毫秒为单位)。 |
抛出
| 出现内部错误。 |
public void embedAsync (MPImage 图片, long timestampMs)
发送实时图片数据,以使用默认图片处理选项执行嵌入提取,即将整张图片用作感兴趣的区域,不应用任何旋转,结果将通过 ImageEmbedder.ImageEmbedderOptions 中提供的 OutputHandler.ResultListener 获得。仅当使用 ERROR(/RunningMode.LIVE_STREAM) 创建 ImageEmbedder 时,才使用此方法。
必须提供时间戳(以毫秒为单位),以指明输入图片何时发送到对象检测器。输入时间戳必须单调递增。
ImageEmbedder 支持以下颜色空间类型:
参数
| 图片 | 用于处理的 MediaPipe MPImage 对象。 |
|---|---|
| timestampMs | 输入时间戳(以毫秒为单位)。 |
抛出
| 出现内部错误。 |
public ImageEmbedderResult embedForVideo (MPImage image、ImageProcessingOptions imageProcessingOptions, long timestampMs)
对提供的视频帧执行嵌入提取。仅当使用 ERROR(/RunningMode.VIDEO) 创建 ImageEmbedder 时,才使用此方法。
必须提供视频帧的时间戳(以毫秒为单位)。输入时间戳必须单调递增。
ImageEmbedder 支持以下颜色空间类型:
参数
| 图片 | 用于处理的 MediaPipe MPImage 对象。 |
|---|---|
| imageProcessingOptions | ImageProcessingOptions,用于指定在运行推断之前如何处理输入图片。 |
| timestampMs | 输入时间戳(以毫秒为单位)。 |
抛出
| 出现内部错误。 |
public ImageEmbedderResult embedForVideo (MPImage 图片、长时间戳)
使用默认图片处理选项对提供的视频帧执行嵌入提取,即将整个图片用作感兴趣的区域,并且不应用任何旋转。仅当使用 ERROR(/RunningMode.VIDEO) 创建 ImageEmbedder 时,才使用此方法。
必须提供视频帧的时间戳(以毫秒为单位)。输入时间戳必须单调递增。
ImageEmbedder 支持以下颜色空间类型:
参数
| 图片 | 用于处理的 MediaPipe MPImage 对象。 |
|---|---|
| timestampMs | 输入时间戳(以毫秒为单位)。 |
抛出
| 出现内部错误。 |