帮助文档
  • 帮助文档
  • 注册账号
    • 个人设置
    • 团队设置
  • 开发者文档
    • 开发者工具
      • Python SDK
      • CLI
      • Open API
        • Dataset Operation
        • Data Operation
      • 示例演示
        • 模型训练
        • 数据挖掘
  • 产品使用文档
    • TensorBay
      • TensorBay 适用于算法研究的各个阶段
      • 概念说明
      • 快速入门 - 开发者版
      • 快速入门 - 团队版
      • 数据集准备
        • 新建数据集
        • 管理云服务上的数据
          • 阿里云oss用户授权RAM
        • 利用数据集筛选快速新建
        • 数据合并拆分及复制移动
        • 通过Fork使用公开数据集
      • 数据版本管理
        • 管理数据文件
        • 管理标注数据
        • 管理数据集信息
        • 管理版本信息
        • 管理数据集分支
        • 数据集活动
        • 数据集设置
      • Pharos 数据可视化
        • 获取 Pharos
        • Pharos 使用指南
      • 团队协作
        • 创建团队空间
        • 资料/成员管理
        • 数据集管理
        • 团队活动日志
      • Action 流程自动化
        • 新建工作流
        • 运行工作流
        • 管理工作流
        • YAML语法说明
        • Crontab语法说明
        • 自动化配置
      • 如何与Pipeline集成
    • Open Datasets
      • 数据集概念
      • 查找公开数据集
      • 在线预览数据及标签分布
      • 在线使用并管理数据集
      • 下载公开数据集
      • 找不到想要的数据集?
  • APPs
    • GroundTruth Tools
      • 图片标注
      • 语音分类
    • TeraGood Service
      • 需求方使用手册
      • 运营方使用手册
      • 标注方使用手册
    • Sextant
      • 新建评估
      • 自定义Metrics
      • 参与评估
      • 查看评估结果
  • 更新日志
  • 格物钛官网
由 GitBook 提供支持
在本页
  • 支持类型
  • Float
  • Curve
  • 生效范围
  • 定义规则
  • 代码示例
  • 目录结构示例
  • init.py示例
  • requirements.txt示例:
  • Evaluator.py示例

这有帮助吗?

  1. APPs
  2. Sextant

自定义Metrics

上一页新建评估下一页参与评估

最后更新于3年前

这有帮助吗?

Sextant支持用户自定义Metrics计算方式,并输出计算结果。您只需要将自定义Metrics算法上传至Github Repo并把Url填入Sextant即可。

需要将您的Metrics算法使用python进行编写,并放到Github中

支持类型

Sextant支持自定义Float和Curve两种类型的指标,并指定他们的生效范围

Float

输出结果为一个浮点值,在前端显示为“名称=数值“的样式,如mAP=0.75

Curve

输出结果为两个一维数组,分别命名为x和y,在前端渲染为曲线样式,x数组和y数组中的值会对应的渲染为曲线上点的横纵坐标

生效范围

可以定义指标的生效范围为Data级别或者Dataset级别

Data级别:针对参与评估的每个数据会返回一个对应值,例如单张数据的标注IoU均值

Dataset级别:每一次评估只会返回一个对应值,例如本次评估的mAP

定义规则

您的Metrics算法需要满足以下规则:

  1. ‌如果您的代码中需要额外的依赖包,则需要在根目录下创建requirements.txt,并在其中写入依赖(不支持torch、tensorflow等深度学习框架的GPU运算)。

  2. 您需要在github根路径下创建一个__init__.py,以确保repo被clone到本地后,其路径能够作为python package导出一个名为 Evaluator 的 class。

  3. python库中有且只有一个名为 Evaluator 的 class

  4. Evaluator 中需要有获取整体标注评分的方法 get_result() -> dict

  5. 以上两个方法的返回值需满足以下结构:(当前仅支持float和curve两种类型的数据)

代码示例

目录结构示例

(yourgithubrepo_root) 
    -- __init.py 
    -- Evaluator.py 
    -- requirements.txt

init.py示例

from .Evaluator import Evaluator
all = ["Evaluator"]

requirements.txt示例:

numpy=1.21.0

Evaluator.py示例

import numpy as np

class Evaluator:
   def __init__(self):
       """
       You can initialize your model here
       """
       ...


   evaluate_one_data(self, input_source: dict, input_target: dict) -> dict:
       """
       Do the evaluation job
       :param input_source: Ground truth boxes in one image
       :param input_target:Target boxes in the same image
       :return: A dict containing evaluation on one image and each category within it.
       """
       ...
   def get_result(self) -> dict:
       """Overall evaluation.


       Returns:
           A dict containing overall evaluation on all images and all categories.
       """
```
{
   'scope':1,//1-data级别;2-dataset级别
   'overall': {
       'mAP':0.123, // Float类型返回
       'pr':{  // Curve类型返回
             'x':[1,0.5],
             'y':[1,0.5]//x数据将在前端渲染为横轴数据,y数据将在前端渲染为纵轴数据,x和y均为list,且长度一致。
            }
   },
   'categories': {
       '{your_category}': {
            'mAP': np.mean([1, 2, 3]).tolist(),
       }
   }
}

Evaluator 中需要有获取单个图片标注的评分方法 evaluate_one_data(input_source: dict, input_target: dict) -> dict 方法,input_source 和 input_target 值请参考

graviti标准化文档