gluoncv.utils

我们实现了一系列广泛的实用函数,涵盖了可视化、文件处理、下载和训练辅助功能。

可视化

plot_image

可视化图像。

get_color_pallete

可视化图像。

plot_bbox

可视化边界框。

expand_mask

将实例分割掩码扩展到完整图像尺寸。

plot_mask

可视化分割掩码。

plot_network

绘制网络图以可视化内部结构。

其他

download

下载指定的 URL :param url: 要下载的 URL :type url: str :param path: 存储下载文件的目标路径。默认为当前目录,名称与 URL 中的名称相同。 :type path: str, 可选 :param overwrite: 如果文件已存在是否覆盖。 :type overwrite: bool, 可选 :param sha1_hash: 期望的 sha1 十六进制哈希值。如果指定了哈希值但不匹配,则忽略现有文件。 :type sha1_hash: str, 可选。

makedirs

如果目录不存在,则递归创建。

seed

设置 python 内置 random, numpy.random, mxnet.random 的随机种子。

训练辅助函数

LRScheduler

学习率调度器

set_lr_mult

将所有匹配 pattern 的参数的 lr_mult 重置为新值

边界框工具

bbox_iou

计算两个边界框的交并比(IOU)。

API 参考

GluonCV 实用函数。

class gluoncv.utils.LRScheduler(mode, base_lr=0.1, target_lr=0, niters=0, nepochs=0, iters_per_epoch=0, offset=0, power=2, step_iter=None, step_epoch=None, step_factor=0.1, baselr=None, targetlr=None)[source]

学习率调度器

参数
  • mode (str) – 学习率调度器的模式。目前支持 'constant', 'step', 'linear', 'poly' 和 'cosine'。

  • base_lr (float) – 基础学习率,即起始学习率。

  • target_lr (float) – 目标学习率,即结束学习率。在 constant 模式下,target_lr 会被忽略。

  • niters (int) – 需要调度的迭代次数。

  • nepochs (int) – 需要调度的 epoch 数量。

  • iters_per_epoch (int) – 每个 epoch 中的迭代次数。

  • offset (int) – 在此调度器之前的迭代次数。

  • power (float) – poly 调度器的幂参数。

  • step_iter (list) – 学习率衰减的迭代次数列表。

  • step_epoch (list) – 学习率衰减的 epoch 列表。

  • step_factor (float) – 学习率衰减因子。

class gluoncv.utils.LRSequential(schedulers)[source]

组合学习率调度器

参数

schedulers (list) – LRScheduler 对象的列表

class gluoncv.utils.TrainingHistory(labels)[source]

训练历史记录和绘图

参数

labels (list of str) – 历史记录中标签名称的列表。

plot(labels=None, colors=None, y_lim=(0, 1), save_path=None, legend_loc='upper right')[source]

更新训练历史记录

参数
  • labels (list of str) – 要绘制的标签名称列表。

  • colors (list of str) – 线条颜色列表。

  • save_path (str) – 保存图的路径。如果为 None,则绘制到屏幕。

  • legend_loc (str) – 图例位置。默认为右上角。

update(values)[source]

更新训练历史记录

参数

values (list of float) – 每个标签的度量分数列表。

gluoncv.utils.bbox_iou(bbox_a, bbox_b, offset=0)[source]

计算两个边界框的交并比(IOU)。

参数
  • bbox_a (numpy.ndarray) – 形状为 \((N, 4)\) 的 ndarray。

  • bbox_b (numpy.ndarray) – 形状为 \((M, 4)\) 的 ndarray。

  • offset (floatint, 默认为 0) – offset 用于控制宽度(或高度)是否计算为 (right - left + offset)。注意,对于归一化边界框,其范围在 [0, 1] 之间,offset 必须为 0。

返回值

形状为 \((N, M)\) 的 ndarray,表示 bbox_abbox_b 中每对边界框之间的 IOU。

返回类型

numpy.ndarray

gluoncv.utils.check_sha1(filename, sha1_hash)[source]

检查文件内容的 sha1 哈希值是否与期望的哈希值匹配。 :param filename: 文件路径。 :type filename: str :param sha1_hash: 期望的 sha1 十六进制哈希值。 :type sha1_hash: str

返回值

文件内容是否匹配期望的哈希值。

返回类型

bool

gluoncv.utils.check_version(min_version, warning_only=False)[source]

检查 gluoncv 的版本是否满足提供的最低版本。如果检查不通过,将抛出异常。

参数
  • min_version (str) – 最低版本

  • warning_only (bool) – 打印警告而不是抛出异常。

gluoncv.utils.download(url, path=None, overwrite=False, sha1_hash=None)[source]

下载指定的 URL :param url: 要下载的 URL :type url: str :param path: 存储下载文件的目标路径。默认为当前目录,

名称与 URL 中的名称相同。

参数
  • overwrite (bool, 可选) – 如果文件已存在是否覆盖目标文件。

  • sha1_hash (str, 可选) – 期望的 sha1 十六进制哈希值。如果指定了哈希值但不匹配,则忽略现有文件。

返回值

下载文件的文件路径。

返回类型

str

gluoncv.utils.export_block(path, block, data_shape=None, epoch=0, preprocess=True, layout='HWC', ctx=cpu(0))[source]

辅助函数,用于将 HybridBlock 导出为符号 JSON,供 SymbolBlock.importsmxnet.mod.Module 或 C++ 接口使用。

参数
  • path (str) – 保存模型的路径。将创建两个文件:path-symbol.json 和 path-xxxx.params,其中 xxxx 是 4 位数的 epoch 编号。

  • block (mxnet.gluon.HybridBlock) – 可混合块。请注意,不支持普通的 gluon.Block。

  • data_shape (int 元组, 默认为 None) – 仅用于导出目的的模拟数据形状,2D 数据格式为 (H, W, C),3D 数据格式为 (T, H, W, C)。如果不指定 data_shapeexport_block 将尝试使用一些常见的数据形状,例如 (224, 224, 3), (256, 256, 3), (299, 299, 3), (512, 512, 3)... 如果其中任何一个 data_shape 通过,则导出成功。

  • epoch (int) – 保存模型的 epoch 编号。

  • preprocess (mxnet.gluon.HybridBlock, 默认为 True。) – 网络之前的预处理块。默认情况下 (True),它会减去均值 [123.675, 116.28, 103.53],除以标准差 [58.395, 57.12, 57.375],并将原始图像(B, H, W, C,范围 [0, 255])转换为张量(B, C, H, W)作为网络输入。这是所有 GluonCV 预训练模型的默认预处理行为。您可以使用自定义的预处理混合块,或者通过设置 preprocess=None 来禁用。

  • layout (str, 默认为 'HWC') – 原始输入数据的布局。默认为 HWC。支持 'HWC', 'CHW', 'THWC' 和 'CTHW'。请注意,图像通道顺序始终为 RGB。

  • ctx (mx.Context, 默认为 mx.cpu()) – 网络上下文。

返回值

返回类型

None

gluoncv.utils.export_tvm(path, block, data_shape, epoch=0, preprocess=True, layout='HWC', ctx=cpu(0), target='llvm', opt_level=3, use_autotvm=False)[source]

辅助函数,用于将 HybridBlock 导出为 TVM 可执行文件。注意需要安装 tvm 包(https://tvm.ai/)。

参数
  • path (str) – 保存模型的路径。将创建三个文件:path_deploy_lib.tar, path_deploy_graph.json 和 path_deploy_xxxx.params,其中 xxxx 是 4 位数的 epoch 编号。

  • block (mxnet.gluon.HybridBlock) – 可混合块。请注意,不支持普通的 gluon.Block。

  • data_shape (int 元组, 必需) – 与 export_block 不同,此处出于优化目的需要 data_shape。如果需要动态形状,可以使用最适合推理任务的形状,但优化无法适应所有情况。

  • epoch (int) – 保存模型的 epoch 编号。

  • preprocess (mxnet.gluon.HybridBlock, 默认为 True。) – 网络之前的预处理块。默认情况下 (True),它会减去均值 [123.675, 116.28, 103.53],除以标准差 [58.395, 57.12, 57.375],并将原始图像(B, H, W, C,范围 [0, 255])转换为张量(B, C, H, W)作为网络输入。这是所有 GluonCV 预训练模型的默认预处理行为。您可以使用自定义的预处理混合块,或者通过设置 preprocess=None 来禁用。

  • layout (str, 默认为 'HWC') – 原始输入数据的布局。默认为 HWC。支持 'HWC' 和 'CHW'。请注意,图像通道顺序始终为 RGB。

  • ctx (mx.Context, 默认为 mx.cpu()) – 网络上下文。

  • target (str, 默认为 'llvm') – 代码生成运行时类型,可以是 (‘llvm’, ‘cuda’, ‘opencl’, ‘metal’…)

  • opt_level (int, 默认为 3) – TVM 优化级别,如果支持,更高的 opt_level 可能会生成更高效的运行时库,但是,某些算子可能不支持高级别优化,这将回退到较低的 opt_level

  • use_autotvm (bool, 默认为 False) – 使用 autotvm 进行性能调优。请注意,这可能需要很长时间,因为这是一个基于搜索和模型的调优过程。

返回值

返回类型

None

gluoncv.utils.freeze_bn(net, use_global_stats=True)[source]

通过将 use_global_stats 设置为 True 来冻结 BatchNorm 层

参数
  • net (mxnet.gluon.Block) – BatchNorm 层将被修改的网络

  • use_global_stats (bool) – 用于设置所有 BatchNorm 层的 use_global_stats 的值

返回值

BatchNorm 层已修改的原始网络。

返回类型

mxnet.gluon.Block

gluoncv.utils.makedirs(path)[source]

如果目录不存在,则递归创建。类似于 makedir -p,您可以在此函数之前跳过检查是否存在。

参数

path (str) – 期望的目录路径

gluoncv.utils.recursive_visit(net, callback, **kwargs)[source]

递归访问网络及其子网络并应用回调函数

参数
  • net (mxnet.gluon.Block) – 要递归访问的网络

  • callback (function) – 要应用于每个网络块的回调函数。其第一个参数必须是该块。

gluoncv.utils.set_lr_mult(net, pattern, mult=1.0, verbose=False)[source]

将所有匹配 pattern 的参数的 lr_mult 重置为新值

参数
  • net (mxnet.gluon.Block) – 参数将被调整的网络。

  • pattern (str) – 用于匹配目标参数的正则表达式模式。

  • mult (float, 默认为 1.0) – 新的学习率乘数。

  • verbose (bool) – 如果设置为 True,则打印正在修改的参数。

返回值

学习率乘数已修改的原始网络。

返回类型

mxnet.gluon.Block

gluoncv.utils.split_and_load(data, ctx_list, batch_axis=0, even_split=True, multiplier=1)[source]

将一个 NDArray 沿 batch_axis 分割成 len(ctx_list) 个切片,并将每个切片加载到 ctx_list 中的一个上下文。

参数
  • data (NDArray) – 一批数据。

  • ctx_list (list of Context) – Context 列表。

  • batch_axis (int, 默认为 0) – 沿其进行切片的轴。

  • even_split (bool, 默认为 True) – 是否强制所有切片具有相同数量的元素。

  • multiplier (int, 默认为 1) – 批量大小必须是通道乘数的倍数。需要进一步研究。

返回值

每个对应于 ctx_list 中的一个上下文。

返回类型

NDArray 列表

gluoncv.utils.split_data(data, num_slice, batch_axis=0, even_split=True, multiplier=1)[source]

将一个 NDArray 沿 batch_axis 分割成 num_slice 个切片。通常用于数据并行,其中每个切片被发送到一个设备(即 GPU)。

参数
  • data (NDArray) – 一批数据。

  • num_slice (int) – 期望的切片数量。

  • batch_axis (int, 默认为 0) – 沿其进行切片的轴。

  • even_split (bool, 默认为 True) – 是否强制所有切片具有相同数量的元素。如果为 True,当 num_slice 不能整除 data.shape[batch_axis] 时将引发错误。

  • multiplier (int, 默认为 1) – 批量大小必须是 multiplier 的倍数

返回值

即使 num_slice 为 1,返回值也是一个列表。

返回类型

NDArray 列表

gluoncv.utils.try_import_cv2()[source]

尝试在运行时导入 cv2。

返回值

返回类型

如果找到则返回 cv2 模块,否则引发 ImportError 异常

gluoncv.utils.try_import_dali()[source]

尝试在运行时导入 NVIDIA DALI。

可视化工具

class gluoncv.utils.viz.DeNormalize(mean, std)[source]

图像去归一化

hybrid_forward(F, x)[source]

重写以构造此 Block 的符号图。

参数
  • x (SymbolNDArray) – 第一个输入张量。

  • *args (Symbol 列表NDArray 列表) – 附加输入张量。

gluoncv.utils.viz.cv_merge_two_images(img1, img2, alpha=0.5, size=None)[source]

使用 OpenCV 合并两张图片。

参数
  • img1 (numpy.ndarraymxnet.nd.NDArray) – 形状为 H, W, 3 的图片。

  • img2 (numpy.ndarraymxnet.nd.NDArray) – 形状为 H, W, 3 的图片。

  • alpha (float, 可选, 默认为 0.5) – img2 的透明度

  • size (list, 可选, 默认为 None) – 合并图片的输出大小

返回值

合并后的图片

返回类型

numpy.ndarray

gluoncv.utils.viz.cv_plot_bbox(img, bboxes, scores=None, labels=None, thresh=0.5, class_names=None, colors=None, absolute_coordinates=True, scale=1.0, linewidth=2)[source]

使用 OpenCV 可视化边界框。

参数
  • img (numpy.ndarraymxnet.nd.NDArray) – 形状为 H, W, 3 的图片。

  • bboxes (numpy.ndarraymxnet.nd.NDArray) – 形状为 N, 4 的边界框。其中 N 是框的数量。

  • scores (numpy.ndarraymxnet.nd.NDArray, 可选) – 所提供的 bboxes 的置信度得分,形状为 N

  • labels (numpy.ndarraymxnet.nd.NDArray, 可选) – 所提供的 bboxes 的类别标签,形状为 N

  • thresh (float, 可选, 默认为 0.5) – 如果提供了 scores,则为显示阈值。得分低于 thresh 的分数将在显示中被忽略,如果你有大量得分非常小的边界框,这样做在视觉上更优雅。

  • class_names (list of str, 可选) – 参数 class_names 的描述。

  • colors (dict, 可选) – 你可以提供期望的颜色,例如 {0: (255, 0, 0), 1:(0, 255, 0), …},否则将替换为随机颜色。

  • absolute_coordinates (bool) – 如果为 True,则使用绝对坐标;否则坐标被解释为在范围(0, 1)内。

  • scale (float) – 输出图片的缩放比例,可能会影响框的位置

  • linewidth (int, 可选, 默认为 2) – 边界框的线条粗细。使用负值填充边界框。

返回值

带有检测结果的图片。

返回类型

numpy.ndarray

gluoncv.utils.viz.cv_plot_image(img, scale=1, upperleft_txt=None, upperleft_txt_corner=(10, 100), left_txt_list=None, left_txt_corner=(10, 150), title_txt_list=None, title_txt_corner=(500, 50), canvas_name='demo')[source]

使用 OpenCV 可视化图片。

参数
  • img (numpy.ndarraymxnet.nd.NDArray) – 形状为 H, W, 3 的图片。

  • scale (float) – 输出图片的缩放因子

  • upperleft_txt (str, 可选, 默认为 None) – 如果存在,将在左上角打印此字符串

  • upperleft_txt_corner (tuple, 可选, 默认为 (10, 100)) – upperleft_txt 的左下角坐标

  • left_txt_list (list of str, 可选, 默认为 None) – 如果存在,将在靠近左侧位置打印列表中的每个字符串

  • left_txt_corner (tuple, 可选, 默认为 (10, 150)) – left_txt_list 的左下角坐标

  • title_txt_list (list of str, 可选, 默认为 None) – 如果存在,将在靠近顶部位置打印列表中的每个字符串

  • title_txt_corner (tuple, 可选, 默认为 (500, 50)) – title_txt_list 的左下角坐标

  • canvas_name (str, 可选, 默认为 'demo') – 用于绘制图片的画布名称

示例

from matplotlib import pyplot as plt ax = plot_image(img) plt.show()

gluoncv.utils.viz.cv_plot_keypoints(img, coords, confidence, class_ids, bboxes, scores, box_thresh=0.5, keypoint_thresh=0.2, scale=1.0, **kwargs)[source]

使用 OpenCV 可视化关键点。

参数
  • img (numpy.ndarraymxnet.nd.NDArray) – 形状为 H, W, 3 的图片。

  • coords (numpy.ndarraymxnet.nd.NDArray) – 形状为 Batch, N_Joints, 2 的数组。

  • confidence (numpy.ndarraymxnet.nd.NDArray) – 形状为 Batch, N_Joints, 1 的数组。

  • class_ids (numpy.ndarraymxnet.nd.NDArray) – 类别 ID。

  • bboxes (numpy.ndarraymxnet.nd.NDArray) – 形状为 N, 4 的边界框。其中 N 是框的数量。

  • scores (numpy.ndarraymxnet.nd.NDArray, 可选) – 所提供的 bboxes 的置信度得分,形状为 N

  • box_thresh (float, 可选, 默认为 0.5) – 如果提供了 scores,则为显示阈值。得分低于 box_thresh 的分数将在显示中被忽略。

  • keypoint_thresh (float, 可选, 默认为 0.2) – 置信度低于 keypoint_thresh 的关键点将在显示中被忽略。

  • scale (float) – 输出图片的缩放比例,可能会影响框的位置

返回值

带有估计姿态的图片。

返回类型

numpy.ndarray

gluoncv.utils.viz.expand_mask(masks, bboxes, im_shape, scores=None, thresh=0.5, scale=1.0, sortby=None)[source]

将实例分割掩码扩展到完整图像尺寸。

参数
  • masks (numpy.ndarraymxnet.nd.NDArray) – 形状为 N, M, M 的二值图片

  • bboxes (numpy.ndarraymxnet.nd.NDArray) – 形状为 N, 4 的边界框。其中 N 是框的数量

  • im_shape (tuple) – 长度为 2 的元组: (width, height)

  • scores (numpy.ndarraymxnet.nd.NDArray, 可选) – 所提供的 bboxes 的置信度得分,形状为 N

  • thresh (float, 可选, 默认为 0.5) – 如果提供了 scores,则为显示阈值。得分低于 thresh 的分数将在显示中被忽略,如果你有大量得分非常小的边界框,这样做在视觉上更优雅。

  • sortby (str, 可选, 默认为 None) – 如果不是 None,则根据每个边界框的给定属性对遮罩的调色板进行排序。有效输入为 ‘area’, ‘xmin’, ‘ymin’, ‘xmax’, ‘ymax’。

  • scale (float) – 输出图片的缩放比例,可能会影响框的位置

返回值

  • numpy.ndarray – 形状为 N, height, width 的二值图片

  • numpy.ndarray – 已排序遮罩的索引数组

gluoncv.utils.viz.get_color_pallete(npimg, dataset='pascal_voc')[source]

可视化图像。

参数
  • npimg (numpy.ndarray) – 形状为 H, W, 1 的单通道图片。

  • dataset (str, 默认: 'pascal_voc') – 模型预训练时使用的数据集。(‘pascal_voc’, ‘ade20k’)

返回值

out_img – 带有颜色调色板的图片

返回类型

PIL.Image

gluoncv.utils.viz.plot_bbox(img, bboxes, scores=None, labels=None, thresh=0.5, class_names=None, colors=None, ax=None, reverse_rgb=False, absolute_coordinates=True, linewidth=3.5, fontsize=12)[source]

可视化边界框。

参数
  • img (numpy.ndarraymxnet.nd.NDArray) – 形状为 H, W, 3 的图片。

  • bboxes (numpy.ndarraymxnet.nd.NDArray) – 形状为 N, 4 的边界框。其中 N 是框的数量。

  • scores (numpy.ndarraymxnet.nd.NDArray, 可选) – 所提供的 bboxes 的置信度得分,形状为 N

  • labels (numpy.ndarraymxnet.nd.NDArray, 可选) – 所提供的 bboxes 的类别标签,形状为 N

  • thresh (float, 可选, 默认为 0.5) – 如果提供了 scores,则为显示阈值。得分低于 thresh 的分数将在显示中被忽略,如果你有大量得分非常小的边界框,这样做在视觉上更优雅。

  • class_names (list of str, 可选) – 参数 class_names 的描述。

  • colors (dict, 可选) – 你可以提供期望的颜色,例如 {0: (255, 0, 0), 1:(0, 255, 0), …},否则将替换为随机颜色。

  • ax (matplotlib axes, 可选) – 如果提供,可以复用先前的轴。

  • reverse_rgb (bool, 可选) – 如果为 True,则反转 RGB<->BGR 顺序。

  • absolute_coordinates (bool) – 如果为 True,则使用绝对坐标;否则坐标被解释为在范围(0, 1)内。

  • linewidth (float, 可选, 默认为 3.5) – 边界框的线条粗细。

  • fontsize (int, 可选, 默认为 12) – 用于显示类别标签和阈值的字体大小。

返回值

绘制后的轴。

返回类型

matplotlib axes

gluoncv.utils.viz.plot_image(img, ax=None, reverse_rgb=False)[source]

可视化图像。

参数
  • img (numpy.ndarraymxnet.nd.NDArray) – 形状为 H, W, 3 的图片。

  • ax (matplotlib axes, 可选) – 如果提供,可以复用先前的轴。

  • reverse_rgb (bool, 可选) – 如果为 True,则反转 RGB<->BGR 顺序。

返回值

绘制后的轴。

返回类型

matplotlib axes

示例

from matplotlib import pyplot as plt ax = plot_image(img) plt.show()

gluoncv.utils.viz.plot_keypoints(img, coords, confidence, class_ids, bboxes, scores, box_thresh=0.5, keypoint_thresh=0.2, **kwargs)[source]

可视化关键点。

参数
  • img (numpy.ndarraymxnet.nd.NDArray) – 形状为 H, W, 3 的图片。

  • coords (numpy.ndarraymxnet.nd.NDArray) – 形状为 Batch, N_Joints, 2 的数组。

  • confidence (numpy.ndarraymxnet.nd.NDArray) – 形状为 Batch, N_Joints, 1 的数组。

  • class_ids (numpy.ndarraymxnet.nd.NDArray) – 类别 ID。

  • bboxes (numpy.ndarraymxnet.nd.NDArray) – 形状为 N, 4 的边界框。其中 N 是框的数量。

  • scores (numpy.ndarraymxnet.nd.NDArray, 可选) – 所提供的 bboxes 的置信度得分,形状为 N

  • box_thresh (float, 可选, 默认为 0.5) – 如果提供了 scores,则为显示阈值。得分低于 box_thresh 的分数将在显示中被忽略。

  • keypoint_thresh (float, 可选, 默认为 0.2) – 置信度低于 keypoint_thresh 的关键点将在显示中被忽略。

返回值

绘制后的轴。

返回类型

matplotlib axes

gluoncv.utils.viz.plot_mask(img, masks, alpha=0.5)[source]

可视化分割掩码。

参数
  • img (numpy.ndarraymxnet.nd.NDArray) – 形状为 H, W, 3 的图片。

  • masks (numpy.ndarraymxnet.nd.NDArray) – 形状为 N, H, W 的二值图片。

  • alpha (float, 可选, 默认为 0.5) – 绘制遮罩的透明度

返回值

绘制了分割遮罩的图片

返回类型

numpy.ndarray

gluoncv.utils.viz.plot_mxboard(block, logdir='./logs')[source]

绘制网络图以可视化内部结构。

参数
  • block (mxnet.gluon.HybridBlock) – 要可视化的可 Hybridize 网络。

  • logdir (str) – 保存的目录。

gluoncv.utils.viz.plot_network(block, shape=(1, 3, 224, 224), save_prefix=None)[source]

绘制网络图以可视化内部结构。

参数
  • block (mxnet.gluon.HybridBlock) – 要可视化的可 Hybridize 网络。

  • shape (tuple of int) – 期望的输入形状,默认为 (1, 3, 224, 224)。

  • save_prefix (strNone) – 如果不是 None,则会将渲染的 pdf 文件保存到磁盘,并带有指定前缀。

自定义评估指标

class gluoncv.utils.metrics.COCODetectionMetric(dataset, save_prefix, use_time=True, cleanup=False, score_thresh=0.05, data_shape=None, post_affine=None)[source]

用于 COCO bbox 任务的检测指标。

参数
  • dataset (gluoncv.data.COCODetection 实例) – 验证数据集。

  • save_prefix (str) – 保存的 JSON 结果文件的前缀。

  • use_time (bool) – 如果为 True,则在创建的 JSON 文件名后附加唯一的日期时间字符串。

  • cleanup (bool) – 如果为 True,则删除创建的 JSON 文件。

  • score_thresh (float) – 置信度得分小于 score_thresh 的检测结果在保存到结果前将被丢弃。

  • data_shape (int 元组, 默认为 None) – 如果 data_shape 提供为 (height, width),我们将在保存预测结果时重新缩放边界框。当 SSD/YOLO 的框预测无法方便地重新缩放时,这会很有帮助。请注意,对于所有验证图片,data_shape 必须固定。

  • post_affine (一个输入签名为 (orig_w, orig_h, out_w, out_h) 的可调用函数) – 如果不是 None,边界框将进行仿射变换,而不是简单缩放。

get()[source]

获取评估指标。

reset()[source]

将内部评估结果重置为初始状态。

update(pred_bboxes, pred_labels, pred_scores, *args, **kwargs)[source]

使用最新预测更新内部缓冲区。请注意,只有调用 self.get() 返回指标时,统计数据才可用。

参数
  • pred_bboxes (mxnet.NDArraynumpy.ndarray) – 形状为 B, N, 4 的预测边界框。其中 B 是 mini-batch 大小,N 是 bboxes 的数量。

  • pred_labels (mxnet.NDArraynumpy.ndarray) – 形状为 B, N 的预测边界框标签。

  • pred_scores (mxnet.NDArraynumpy.ndarray) – 形状为 B, N 的预测边界框得分。

class gluoncv.utils.metrics.COCOKeyPointsMetric(dataset, save_prefix, use_time=True, cleanup=False, in_vis_thresh=0.2, data_shape=None)[source]

用于 COCO bbox 任务的检测指标。

参数
  • dataset (gluoncv.data.COCODetection 实例) – 验证数据集。

  • save_prefix (str) – 保存的 JSON 结果文件的前缀。

  • use_time (bool) – 如果为 True,则在创建的 JSON 文件名后附加唯一的日期时间字符串。

  • cleanup (bool) – 如果为 True,则删除创建的 JSON 文件。

  • in_vis_thresh (float) – 置信度得分小于 in_vis_thresh 的检测结果在保存到结果前将被丢弃。

  • data_shape (int 元组, 默认为 None) – 如果 data_shape 提供为 (height, width),我们将在保存预测结果时重新缩放边界框。当 SSD/YOLO 的框预测无法方便地重新缩放时,这会很有帮助。请注意,对于所有验证图片,data_shape 必须固定。

get()[source]

获取评估指标。

reset()[source]

将内部评估结果重置为初始状态。

update(preds, maxvals, score, imgid, *args, **kwargs)[source]

更新内部评估结果。

参数
  • labels (list of NDArray) – 数据的标签。

  • preds (list of NDArray) – 预测值。

class gluoncv.utils.metrics.HeatmapAccuracy(axis=1, name='heatmap_accuracy', hm_type='gaussian', threshold=0.5, output_names=None, label_names=None, ignore_labels=None)[source]

计算关键点的 heatmap 准确率 :param axis: 表示类别的轴 :type axis: int, 默认为 1 :param name: 此指标实例的显示名称。 :type name: str :param output_names: 使用 update_dict 更新时应使用的预测名称。

默认包含所有预测。

参数
  • label_names (str 列表, 或 None) – 使用 update_dict 更新时应使用的标签名称。默认包含所有标签。

  • ignore_labels (intinteger 可迭代对象, 可选) – 如果提供且不是 None,则在更新期间将忽略这些标签。

示例

>>> predicts = [mx.nd.array([[0.3, 0.7], [0, 1.], [0.4, 0.6]])]
>>> labels   = [mx.nd.array([0, 1, 1])]
>>> acc = mx.metric.Accuracy()
>>> acc.update(preds = predicts, labels = labels)
>>> print acc.get()
('accuracy', 0.6666666666666666)
update(labels, preds)[source]

更新内部评估结果。 :param labels: 数据标签,值为类别索引,每个样本一个。 :type labels: list of NDArray :param preds: 样本的预测值。每个预测值可以是类别索引,

或所有类别的似然向量。

class gluoncv.utils.metrics.SegmentationMetric(nclass)[source]

计算 pixAcc 和 mIoU 指标得分

get()[source]

获取当前评估结果。

返回值

metrics – pixAcc 和 mIoU

返回类型

float 元组

reset()[source]

将内部评估结果重置为初始状态。

update(labels, preds)[source]

更新内部评估结果。

参数
  • labels (‘NDArray’ 或 list of NDArray) – 数据的标签。

  • preds (‘NDArray’ 或 list of NDArray) – 预测值。

class gluoncv.utils.metrics.VOC07MApMetric(*args, **kwargs)[source]

PASCAL VOC 07 数据集的平均精度均值指标

iou_threshfloat

TP 的 IOU 重叠阈值

class_nameslist of str

可选,如果提供,将打印出每个类别的 AP

class gluoncv.utils.metrics.VOCMApMetric(iou_thresh=0.5, class_names=None)[source]

计算目标检测任务的平均 AP

iou_threshfloat

TP 的 IOU 重叠阈值

class_nameslist of str

可选,如果提供,将打印出每个类别的 AP

get()[source]

获取当前评估结果。

返回值

  • name (str) – 指标名称。

  • value (float) – 评估值。

reset()[source]

将内部统计数据清除到初始状态。

update(pred_bboxes, pred_labels, pred_scores, gt_bboxes, gt_labels, gt_difficults=None)[source]

使用最新的预测和 gt 对更新内部缓冲区。

参数
  • pred_bboxes (mxnet.NDArraynumpy.ndarray) – 形状为 B, N, 4 的预测边界框。其中 B 是 mini-batch 大小,N 是 bboxes 的数量。

  • pred_labels (mxnet.NDArraynumpy.ndarray) – 形状为 B, N 的预测边界框标签。

  • pred_scores (mxnet.NDArraynumpy.ndarray) – 形状为 B, N 的预测边界框得分。

  • pred_bboxes (mxnet.NDArraynumpy.ndarray) – 形状为 B, N, 4 的预测边界框。其中 B 是 mini-batch 大小,N 是 bboxes 的数量。

  • pred_labels (mxnet.NDArraynumpy.ndarray) – 形状为 B, N 的预测边界框标签。

  • pred_scores (mxnet.NDArraynumpy.ndarray) – 形状为 B, N 的预测边界框得分。