对图片执行分类。
API 需要一个 TFLite 模型,并且该模型包含可选但强烈建议提供的 TFLite 模型元数据。
该 API 支持具有一个图像输入张量和一个或多个输出张量的模型。具体要求如下。
- 输入图片张量 (
kTfLiteUInt8
/kTfLiteFloat32
)- 图片输入,大小为
[batch x height x width x channels]
。 - 不支持批量推理(
batch
必须为 1)。 - 仅支持 RGB 输入(
channels
必须为 3)。 - 如果类型为 kTfLiteFloat32,则 NormalizationOptions 需要附加到元数据以进行输入归一化。
- 图片输入,大小为
- 至少一个输出张量 (
kTfLiteUInt8
/kTfLiteFloat32
),并且:N
类和二维或 4 个维度(即[1 x N]
或[1 x 1 x 1 x N]
)- 可选(但建议)标签映射为 AssociatedFile-s,类型为 TENSOR_AXIS_LABELS,每行包含一个标签。第一个此类 AssociatedFile(如果有)用于填充结果的
class_name
字段。display_name
字段从 AssociatedFile(如有)中填充,其语言区域与创建时使用的ImageClassifierOptions
的display_names_locale
字段(默认为“en”,即英语)匹配。如果所有这些选项都不可用,系统将仅填充结果的index
字段。 - 可以使用 ScoreCalibrationOptions 和类型为 TENSOR_AXIS_SCORE_CALIBRATION 的 AssociatedFile 附加可选的分数校准。如需了解详情,请参阅 metadata_schema.fbs。
此类模型的示例可在 TensorFlow Hub 中找到。
嵌套类
类别 | ImageClassifier.ImageClassifierOptions | 用于设置和ImageClassifier 的选项。 |
公共方法
ImageClassifierResult | |
ImageClassifierResult | |
void |
classifyAsync(MPImage 图片、ImageProcessingOptions imageProcessingOptions、long timestampMs)
发送实时图片数据以执行分类,结果将通过
ImageClassifier.ImageClassifierOptions 中提供的 OutputHandler.ResultListener 获得。 |
void | |
ImageClassifierResult | |
ImageClassifierResult |
classifyForVideo(MPImage image, ImageProcessingOptions imageProcessingOptions, long timestampMs)
对提供的视频帧进行分类。
|
静态 ImageClassifier |
createFromBuffer(Context context, ByteBuffer modelBuffer)
基于模型缓冲区和默认的
ImageClassifier.ImageClassifierOptions 创建 ImageClassifier 实例。 |
静态 ImageClassifier |
createFromFile(Context context, String modelPath)
基于模型文件创建
ImageClassifier 实例并使用默认 ImageClassifier.ImageClassifierOptions 。 |
静态 ImageClassifier |
createFromFile(Context context, File modelFile)
基于模型文件创建
ImageClassifier 实例并使用默认 ImageClassifier.ImageClassifierOptions 。 |
静态 ImageClassifier |
createFromOptions(Context context, ImageClassifier.ImageClassifierOptions 选项)
|
继承的方法
公共方法
public ImageClassifierResult classify (MPImage 图片)
使用默认图片处理选项对提供的单张图片执行分类,即将整张图片用作感兴趣的区域,并且不应用任何旋转。只有在使用 ERROR(/RunningMode.IMAGE)
创建 ImageClassifier
时,才应使用此方法。
ImageClassifier
支持以下颜色空间类型:
参数
图片 | 用于处理的 MediaPipe MPImage 对象。 |
---|
抛出
出现内部错误。 |
public ImageClassifierResult classify (MPImage image, ImageProcessingOptions imageProcessingOptions)
对提供的单张图片执行分类。仅当使用 ERROR(/RunningMode.IMAGE)
创建 ImageClassifier
时,才使用此方法。
ImageClassifier
支持以下颜色空间类型:
参数
图片 | 用于处理的 MediaPipe MPImage 对象。 |
---|---|
imageProcessingOptions | ImageProcessingOptions ,用于指定在运行推断之前如何处理输入图片。 |
抛出
出现内部错误。 |
public void classifyAsync (MPImage image, ImageProcessingOptions imageProcessingOptions, long timestampMs)
发送实时图片数据以执行分类,结果将通过 ImageClassifier.ImageClassifierOptions
中提供的 OutputHandler.ResultListener
获得。只有在使用 ERROR(/RunningMode.LIVE_STREAM)
创建 ImageClassifier
的情况下,才应使用此方法。
必须提供时间戳(以毫秒为单位),以指明输入图片何时发送到对象检测器。输入时间戳必须单调递增。
ImageClassifier
支持以下颜色空间类型:
参数
图片 | 用于处理的 MediaPipe MPImage 对象。 |
---|---|
imageProcessingOptions | ImageProcessingOptions ,用于指定在运行推断之前如何处理输入图片。 |
timestampMs | 输入时间戳(以毫秒为单位)。 |
抛出
出现内部错误。 |
public void classifyAsync (MPImage image, long timestampMs)
发送实时图像数据,以使用默认图像处理选项执行分类,即将整张图片用作感兴趣的区域,并且不应用任何旋转,结果将通过 ImageClassifier.ImageClassifierOptions
中提供的 OutputHandler.ResultListener
获得。仅当使用 ERROR(/RunningMode.LIVE_STREAM)
创建 ImageClassifier
时,才使用此方法。
必须提供时间戳(以毫秒为单位),以指明输入图片何时发送到对象检测器。输入时间戳必须单调递增。
ImageClassifier
支持以下颜色空间类型:
参数
图片 | 用于处理的 MediaPipe MPImage 对象。 |
---|---|
timestampMs | 输入时间戳(以毫秒为单位)。 |
抛出
出现内部错误。 |
public ImageClassifierResult classifyForVideo (MPImage image, long timestampMs)
使用默认图片处理选项对提供的视频帧执行分类,即将整张图片用作感兴趣的区域,并且不应用任何旋转。只有在使用 ERROR(/RunningMode.VIDEO)
创建 ImageClassifier
时,才应使用此方法。
必须提供视频帧的时间戳(以毫秒为单位)。输入时间戳必须单调递增。
ImageClassifier
支持以下颜色空间类型:
参数
图片 | 用于处理的 MediaPipe MPImage 对象。 |
---|---|
timestampMs | 输入时间戳(以毫秒为单位)。 |
抛出
出现内部错误。 |
public ImageClassifierResult classifyForVideo (MPImage image, ImageProcessingOptions imageProcessingOptions, long timestampMs)
对提供的视频帧进行分类。仅当使用 ERROR(/RunningMode.VIDEO)
创建 ImageClassifier
时,才使用此方法。
必须提供视频帧的时间戳(以毫秒为单位)。输入时间戳必须单调递增。
ImageClassifier
支持以下颜色空间类型:
参数
图片 | 用于处理的 MediaPipe MPImage 对象。 |
---|---|
imageProcessingOptions | ImageProcessingOptions ,用于指定在运行推断之前如何处理输入图片。 |
timestampMs | 输入时间戳(以毫秒为单位)。 |
抛出
出现内部错误。 |
public static ImageClassifier createFromBuffer (Context context, ByteBuffer modelBuffer)
基于模型缓冲区和默认的 ImageClassifier.ImageClassifierOptions
创建 ImageClassifier
实例。
参数
context | 一个 Android ERROR(/Context) 。 |
---|---|
modelBuffer | 分类模型的直接 ByteBuffer 或 ERROR(/MappedByteBuffer) 。 |
抛出
如果 ImageClassifier 创建过程中出错,则会发生该错误。 |
public static ImageClassifier createFromFile (Context context, String modelPath)
基于模型文件创建 ImageClassifier
实例并使用默认 ImageClassifier.ImageClassifierOptions
。
参数
context | 一个 Android ERROR(/Context) 。 |
---|---|
modelPath | 指向资产中分类模型的路径。 |
抛出
如果 ImageClassifier 创建过程中出错,则会发生该错误。 |
public static ImageClassifier createFromFile (Context context, File modelFile)
基于模型文件创建 ImageClassifier
实例并使用默认 ImageClassifier.ImageClassifierOptions
。
参数
context | 一个 Android ERROR(/Context) 。 |
---|---|
modelFile | 分类模型 File 实例。 |
抛出
IOException | 如果在打开 tflite 模型文件时发生 I/O 错误,则会发生该错误。 |
---|---|
如果 ImageClassifier 创建过程中出错,则会发生该错误。 |
public static ImageClassifier createFromOptions (Context context, ImageClassifier.ImageClassifierOptions options)
参数
context | 一个 Android ERROR(/Context) 。 |
---|---|
选项 | 一个 ImageClassifier.ImageClassifierOptions 实例。 |
抛出
如果 ImageClassifier 创建过程中出错,则会发生该错误。 |