ImageEmbedder

公共 final 类 ImageEmbedder

对图片执行嵌入提取。

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的选项。 

公共方法

静态双精度
cosineSimilarityEmbedding u、Embedding v)
用于计算两个 Embedding 对象之间的余弦相似度的实用函数。
静态 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
ImageEmbedderResult
embedMPImage 图片、ImageProcessingOptions imageProcessingOptions)
对提供的单张图片执行嵌入提取。
ImageEmbedderResult
embedMPImage 图片)
使用默认图片处理选项(即
void
embedAsyncMPImage 图片、ImageProcessingOptions imageProcessingOptions、long timestampMs)
发送实时图片数据以执行嵌入提取,结果将通过 ImageEmbedder.ImageEmbedderOptions 中提供的 OutputHandler.ResultListener 获得。
void
embedAsyncMPImage 图片,长 timestampMs)
发送实时图片数据,以使用默认图片处理选项(即
ImageEmbedderResult
embedForVideoMPImage 图片、ImageProcessingOptions imageProcessingOptions、long timestampMs)
对提供的视频帧执行嵌入提取。
ImageEmbedderResult
embedForVideoMPImage 图片,长 timestampMs)
使用默认图片处理选项(即

继承的方法

公共方法

public static double cosineSimilarity Embedding u、Embedding v)

用于计算两个 Embedding 对象之间的余弦相似度的实用函数。

参数
u
v
抛出
IllegalArgumentException (如果嵌入不同类型(浮点数与量化)、大小不同或 L2 范数为 0。

public static ImageEmbedder createFromBuffer (Context context、ByteBuffer modelBuffer)

基于模型缓冲区和默认的 ImageEmbedder.ImageEmbedderOptions 创建 ImageEmbedder 实例。

参数
context 一个 Android ERROR(/Context)
modelBuffer 嵌入模型的直接 ByteBufferERROR(/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 选项)

参数
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 输入时间戳(以毫秒为单位)。
抛出
出现内部错误。