ObjectDetector

public final class ObjectDetector

对图片执行对象检测。

API 需要具有 TFLite 模型元数据的 TFLite 模型。

该 API 支持具有一个图像输入张量和四个输出张量的模型。具体要求如下。

  • 输入图片张量 (kTfLiteUInt8/kTfLiteFloat32)
    • 图片输入,大小为 [batch x height x width x channels]
    • 不支持批量推理(batch 必须为 1)。
    • 仅支持 RGB 输入(channels 必须为 3)。
    • 如果类型为 kTfLiteFloat32,则 NormalizationOptions 需要附加到元数据才能进行输入归一化。
  • 输出张量必须是 DetectionPostProcess 操作的 4 个输出,即:
    • Location 张量 (kTfLiteFloat32):
      • 大小为 [1 x num_results x 4] 的张量,表示内部数组,表示边界框,形式为 [top, left, right, bottom]。
      • BoundingBoxProperties 需要附加到元数据,并且必须指定 type=BOUNDARIEScoordinate_type=RATIO
    • 类张量 (kTfLiteFloat32):
      • 大小为 [1 x num_results] 的张量,每个值表示类的整数索引。
      • 如果标签映射作为 TENSOR_VALUE_LABELS 关联文件附加到元数据,则它们用于将张量值转换为标签。
    • 得分张量 (kTfLiteFloat32):
      • 大小为 [1 x num_results] 的张量,每个值表示检测到的对象的得分。
    • 检测张量 (kTfLiteFloat32) 的数量:
      • 作为大小为 [1] 的张量的整数 num_results。

此类模型的示例可在 TensorFlow Hub 上找到。

嵌套类

类别 ObjectDetector.ObjectDetectorOptions 用于设置 ObjectDetector 的选项。 

公共方法

static ObjectDetector
createFromBuffer(Context context, ByteBuffer modelBuffer)
基于模型缓冲区和默认的 ObjectDetector.ObjectDetectorOptions 创建 ObjectDetector 实例。
static ObjectDetector
createFromFile(Context context, String modelPath)
基于模型文件和默认的 ObjectDetector.ObjectDetectorOptions 创建 ObjectDetector 实例。
static ObjectDetector
createFromFile(Context context, File modelFile)
基于模型文件和默认的 ObjectDetector.ObjectDetectorOptions 创建 ObjectDetector 实例。
static ObjectDetector
ObjectDetectorResult
detectMPImage 图片)
使用默认图片处理选项(即,在提供的单张图片上)执行对象检测
ObjectDetectorResult
detectMPImage 图片、ImageProcessingOptions imageProcessingOptions)
对提供的单张图片执行对象检测。
void
detectAsyncMPImage 图片、ImageProcessingOptions imageProcessingOptions、long timestampMs)
发送实时图片数据以执行对象检测,结果将通过 ObjectDetector.ObjectDetectorOptions 中提供的 OutputHandler.ResultListener 获取。
void
detectAsyncMPImage 图片,长 timestampMs)
发送实时图片数据,以使用默认图片处理选项(即
ObjectDetectorResult
detectForVideoMPImage 图片、ImageProcessingOptions imageProcessingOptions、long timestampMs)
对提供的视频帧执行对象检测。
ObjectDetectorResult
detectForVideoMPImage 图片,长 timestampMs)
使用默认图片处理选项(即,)对提供的视频帧执行对象检测

继承的方法

公共方法

public static ObjectDetector createFromBuffer (Context context, ByteBuffer modelBuffer)

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

参数
context 一个 Android ERROR(/Context)
modelBuffer 检测模型的直接 ByteBufferERROR(/MappedByteBuffer)
抛出
如果 ObjectDetector 创建过程中出错,则会发生该错误。

public static ObjectDetector createFromFile (Context context, String modelPath)

基于模型文件和默认的 ObjectDetector.ObjectDetectorOptions 创建 ObjectDetector 实例。

参数
context 一个 Android ERROR(/Context)
modelPath 资产中元数据的检测模型路径。
抛出
如果 ObjectDetector 创建过程中出错,则会发生该错误。

public static ObjectDetector createFromFile (Context context, File modelFile)

基于模型文件和默认的 ObjectDetector.ObjectDetectorOptions 创建 ObjectDetector 实例。

参数
context 一个 Android ERROR(/Context)
modelFile 检测模型 File 实例。
抛出
IOException 如果在打开 tflite 模型文件时发生 I/O 错误,则会发生该错误。
如果 ObjectDetector 创建过程中出错,则会发生该错误。

public static ObjectDetector createFromOptions (Context context, ObjectDetector.ObjectDetectorOptionsDetectorOptions)

参数
context 一个 Android ERROR(/Context)
detectorOptions 一个 ObjectDetector.ObjectDetectorOptions 实例。
抛出
如果 ObjectDetector 创建过程中出错,则会发生该错误。

public ObjectDetectorResult detect MPImage 图片)

使用默认图片处理选项(即未应用任何旋转)对提供的单张图片执行对象检测。仅当使用 ERROR(/RunningMode.IMAGE) 创建 ObjectDetector 时,才使用此方法。

ObjectDetector 支持以下颜色空间类型:

参数
图片 用于处理的 MediaPipe MPImage 对象。
抛出
出现内部错误。

public ObjectDetectorResult detect (MPImage image, ImageProcessingOptions imageProcessingOptions)

对提供的单张图片执行对象检测。仅当使用 ERROR(/RunningMode.IMAGE) 创建 ObjectDetector 时,才使用此方法。

ObjectDetector 支持以下颜色空间类型:

参数
图片 用于处理的 MediaPipe MPImage 对象。
imageProcessingOptions ImageProcessingOptions,用于指定在运行推断之前如何处理输入图片。请注意,此任务支持相关区域:指定 ImageProcessingOptions.regionOfInterest() 会导致此方法抛出 IllegalArgumentException。
抛出
IllegalArgumentException 如果 ImageProcessingOptions 指定了关注区域,则会发生该错误。
出现内部错误。

public void detectAsync (MPImage image, ImageProcessingOptions imageProcessingOptions, long timestampMs)

发送实时图片数据以执行对象检测,结果将通过 ObjectDetector.ObjectDetectorOptions 中提供的 OutputHandler.ResultListener 获取。只有在使用 ERROR(/RunningMode.LIVE_STREAM) 创建 ObjectDetector 时,才应使用此方法。

必须提供时间戳(以毫秒为单位),以指明输入图片何时发送到对象检测器。输入时间戳必须单调递增。

ObjectDetector 支持以下颜色空间类型:

参数
图片 用于处理的 MediaPipe MPImage 对象。
imageProcessingOptions ImageProcessingOptions,用于指定在运行推断之前如何处理输入图片。请注意,此任务支持相关区域:指定 ImageProcessingOptions.regionOfInterest() 会导致此方法抛出 IllegalArgumentException。
timestampMs 输入时间戳(以毫秒为单位)。
抛出
IllegalArgumentException 如果 ImageProcessingOptions 指定了关注区域,则会发生该错误。
出现内部错误。

public void detectAsync (MPImage image, long timestampMs)

发送实时图片数据,以使用默认图片处理选项(即不应用任何旋转)执行对象检测,结果将通过 ObjectDetector.ObjectDetectorOptions 中提供的 OutputHandler.ResultListener 获取。仅当使用 ERROR(/RunningMode.LIVE_STREAM) 创建 ObjectDetector 时,才使用此方法。

必须提供时间戳(以毫秒为单位),以指明输入图片何时发送到对象检测器。输入时间戳必须单调递增。

ObjectDetector 支持以下颜色空间类型:

参数
图片 用于处理的 MediaPipe MPImage 对象。
timestampMs 输入时间戳(以毫秒为单位)。
抛出
出现内部错误。

public ObjectDetectorResult detectForVideo (MPImage image, ImageProcessingOptions imageProcessingOptions, long timestampMs)

对提供的视频帧执行对象检测。仅当使用 ERROR(/RunningMode.VIDEO) 创建 ObjectDetector 时,才使用此方法。

必须提供视频帧的时间戳(以毫秒为单位)。输入时间戳必须单调递增。

ObjectDetector 支持以下颜色空间类型:

参数
图片 用于处理的 MediaPipe MPImage 对象。
imageProcessingOptions ImageProcessingOptions,用于指定在运行推断之前如何处理输入图片。请注意,此任务支持相关区域:指定 ImageProcessingOptions.regionOfInterest() 会导致此方法抛出 IllegalArgumentException。
timestampMs 输入时间戳(以毫秒为单位)。
抛出
IllegalArgumentException 如果 ImageProcessingOptions 指定了关注区域,则会发生该错误。
出现内部错误。

public ObjectDetectorResult detectForVideo MPImage image, long timestampMs)

使用默认图片处理选项对提供的视频帧执行对象检测,即不应用任何旋转。仅当使用 ERROR(/RunningMode.VIDEO) 创建 ObjectDetector 时,才使用此方法。

必须提供视频帧的时间戳(以毫秒为单位)。输入时间戳必须单调递增。

ObjectDetector 支持以下颜色空间类型:

参数
图片 用于处理的 MediaPipe MPImage 对象。
timestampMs 输入时间戳(以毫秒为单位)。
抛出
出现内部错误。