智能算法测试样本管理简介
# 1. 背景
智能算法测试有大量的测试样本需要管理,数据类型多样,测试样本标注信息繁复,需要入库管理,因此我们设计了智能算法测试数据库管家,提供对各类测试样本进行建模管理,提供API进行数据入库和查询。
结合2020年对测试样本库的建设经验,为了简化测试数据入库的开发成本,我们设计开发了AITDBManager作为服务端和AITDBClient作为客户端,调整测试样本的管理方式为CS架构。
# 2. 整体设计
提示
AITDBManager为服务端,通过API提供服务,供客户端操作;
AITDBClient为客户端,由用户安装在本地,对测试样本以及标注数据进行解析并调用服务端API完成测试样本入库。
数据库选型为MySQL,对象存储服务选型为MinIO(类似S3服务,以bucket对不同类型的对象文件进行分类管理,提供可控的下载URL),基于Python的FastAPI框架开发API服务。
# 2.1 数据库设计示意图
主要分为3类表:
- 系统表(用户无需操作,不感知)
- 文件元数据表(各类文件的元数据信息,由客户端自动生成构造入库)
- 标注数据表(用户根据不通的测试样本补充开发)

结合AITDBManager的设计,各类测试样本都有共同的一些数据属性以及一些定制的样本标注数据属性,因此我们对需要入库的测试数据进行如下区分:
| 数据属性分类 | 数据属性名称 | 备注 |
|---|---|---|
| 基础数据属性 | 设备信息 | 需要客户端输入数据【可选】 |
| 基础数据属性 | 数据源信息 | 需要客户端输入数据【必选】 |
| 基础数据属性 | 对象存储服务信息 | 根据数据类型自动关联 |
| 基础数据属性 | 数据对象人员身份信息 | 需要客户端输入数据【可选】 |
| 元数据属性 | 音频对象元数据信息 | 根据数据类型自动生成 |
| 元数据属性 | 视频对象元数据信息 | 根据数据类型自动生成 |
| 元数据属性 | 图片对象元数据信息 | 根据数据类型自动生成 |
| 样本标注数据属性 | 标注数据信息 | 需要客户端输入数据【必选】 |
有了这些基本的数据分类,我们就可以确定测试样本的标注数据应该具备哪些信息了。
- 设备信息【可选】
- 数据源信息【必选】
- 数据对象人员身份信息【可选】
- 标注数据信息【必选】
标注数据信息与预先定义的数据库模型进行映射绑定,我们将这些信息,与每一条测试样本一一对应起来,每条数据一个JSON数据,所有的测试样本组成一份JSON LINE文件,客户端读取解析此数据即可完成测试样本的上传更新。
# 2.2 服务端API在线文档
FastAPI内置的SwaggerAPI文档,可查看,可调式,便捷易用,文档由代码定义自动生成,无需专门编写。

# 2.2 C-S通信时序图
客户端与服务端的通信逻辑,按照下图执行,其中人员信息为可选项,没有则跳过执行。

# 3. 开发和使用

提示
- 使用Python3.7.7版本进行开发和运行;
- 使用PypiManager (opens new window)作为pip源;
- 强烈建议使用
virtualenv创建虚拟环境进行开发和运行
服务端开发请查阅《AITDBManager开发指导》
客户端开发请查阅《AITDBManager开发指导》
使用已有的数据模型上传测试样本请查阅《AITDBClient使用文档》