跳到主要内容

数据质检

数据质检按规则扫描每条 MCAP 录制的结构化报告,对数据集给出通过或未通过的判定,并在数据集上汇总展示结论。规则分项目级与全局两级,判定可被人工覆盖,结论与系统标签、导出拦截联动。

数据质检的对象是 ROS 录制数据(当前以 MCAP 为主)。

使用前提​

项内容
菜单入口数据 → 质检
路由规则列表 /qc/rules;执行日志 /qc/logs;数据集质检详情 /qc/dataset/{id}
必需权限「查看质检」
相关权限「执行质检」(质检执行回写)、「质检规则管理」、「数据计算/预处理」(在数据集侧手动触发质检)
依赖数据集为 MCAP;规则所选算法已注册且声明非空指标 schema
生效规则管理员不受模块权限限制;其他角色按角色默认模板生效,用户级覆盖优先于角色默认

模块权限的配置方式见 模块权限。各角色的模块默认级别:

角色「查看质检」「执行质检」「质检规则管理」
项目经理只读读写读写
采集员只读读写禁止
标注员禁止禁止禁止
审核员禁止禁止禁止

规则与指标​

角色与规则维护范围​

操作管理员项目经理其他角色
查看规则与执行日志允许允许,受项目数据范围约束需「查看质检」
维护项目规则允许允许,限所属项目禁止
维护全局规则允许禁止禁止
覆盖执行结果允许允许,限所属项目的数据集禁止

全局规则的创建、编辑、删除、复制仅管理员可执行;非管理员在列表中可见全局规则,但不能修改。

质检规则​

一条规则绑定一种质检算法、一个作用域与一组断言。

质检规则列表

字段类型必填默认值取值范围说明
规则名文本是—最多 200 字规则标识
规则说明文本否空最多 500 字规则用途备注
作用域选项是项目全局、项目全局规则对全平台 MCAP 生效;项目规则仅对所选项目生效
匹配数据名文本否*glob,支持 * 与 ?对数据集名称匹配;留空表示作用域内全部数据名
质检算法选项是—已注册且声明指标 schema 的算法决定报告指标的来源
启用开关是启用启用、停用停用后不参与匹配与自动排队
优先级整数是100整数,越小越优先决定列表与执行排序;命中规则各自独立判定
断言列表否空—见「断言」

有项目归属的数据集同时匹配全局规则与所属项目规则,两级规则各自产生独立的执行记录。

新建或编辑质检规则

断言​

断言是规则内的判定条件,共三种类型。

类型判定对象判定规则
数值阈值报告指标按比较符与阈值判定,如 frame_rate >= 20
必需 Topic全文件 Topic 列表报告中必须出现指定 Topic
禁止 Topic全文件 Topic 列表报告中不得出现指定 Topic

数值断言带比较符、阈值、严重度与范围:

属性取值说明
比较符<=、>=、<、>、==、!=与阈值比较
严重度不通过(error)、警告(warning)任一不通过级断言失败即判定本次未通过;警告仅记录
范围全部、按 Topic、按 Schema全局指标仅支持「全部」;逐 Topic 指标须选「按 Topic」或「按 Schema」

范围决定指标的取值来源:范围为「全部」时读取全文件指标;范围为「按 Topic」或「按 Schema」时,对匹配到的每一行 Topic 明细独立比对,任一行失败则该断言失败。按 Schema 比对前会归一化消息类型名称(小写,移除 /msg/)。

注意

全局指标与逐 Topic 指标的取值范围不通用。错误组合会直接判定失败,失败明细标明配置错误。范围「按 Topic」或「按 Schema」的模式未匹配到任何 Topic 时,该断言判定失败。

检测指标​

质检由算法容器与平台两层完成:容器扫描 MCAP 并输出结构化报告,平台依据规则中的断言对报告字段逐项评估。

全局指标​

全局指标取自报告的全文件标量,配置数值断言时范围须为「全部」。

界面名称(单位)指标键方向检测目的计算方法默认建议值
录制时长(s)record_duration_sec越大越好有效录制时间过短全文件所有 Topic 时间跨度的最大值减最小值>= 3
时间戳回退次数timestamp_monotonic_violations越小越好时间戳非单调或写入乱序各 Topic 内 t[i] < t[i-1] 的次数之和<= 0
参考 topic 帧率(Hz)frame_rate越大越好主数据流平均发布频率偏低参考 Topic 消息数除以文件时间跨度>= 20
帧间隔中位数(ms)frame_gap_median_ms越小越好主数据流基准间隔偏大参考 Topic 相邻时间差序列的中位数<= 50
帧间隔 P95(ms)frame_gap_p95_ms越小越好间歇性发布延迟同一序列的 95 分位<= 200
帧间隔 P99(ms)frame_gap_p99_ms越小越好偶发长间隔同一序列的 99 分位<= 500
最大帧间隔(ms)frame_gap_max_ms越小越好单次最长发布间隔同一序列的最大值<= 1000
丢帧次数drop_frame_count越小越好相对正常节律的异常长间隔参考 Topic 上相邻间隔大于 1.5 倍中位间隔的次数<= 0
跨 topic 同步 P95(ms)cross_topic_sync_p95_ms越小越好多通道时间对齐误差各非参考 Topic 与参考 Topic 最近邻差 P95 的最大值<= 50
跨 topic 同步 P99(ms)cross_topic_sync_p99_ms越小越好多通道对齐误差尾部全部采样最近邻差合并后的 99 分位<= 100
跨 topic 同步最大(ms)cross_topic_sync_max_ms越小越好单次最大对齐偏差全部采样最近邻差的最大值<= 200
开头关节静止时长(s)leading_joint_still_sec越小越好录制开始后长时间未运动文件起点到任一关节首次有效运动<= 3
结尾关节静止时长(s)trailing_joint_still_sec越小越好任务结束后长时间未停录末次有效运动到文件终点<= 3
图像清晰度 P90blur_score_p90越大越好图像整体清晰度不足采样帧拉普拉斯方差的 90 分位>= 40
曝光异常帧比例exposure_outlier_ratio越小越好亮度异常帧占比过高亮度偏离均值 2 倍标准差的帧数占采样帧数之比<= 0.05

参考 Topic:先排除名称含 /tf、/tf_static、/rosout、/parameter_events、/clock 的 Topic,再取剩余中消息条数最多者。帧率、帧间隔、丢帧与跨 Topic 同步均以该 Topic 为基准。图像与关节指标仅在报告中存在相应 Topic 时输出;缺失字段被规则引用时,断言因实际值为空而失败。

逐 Topic 指标​

逐 Topic 指标取自报告的每条 Topic 明细,配置数值断言时范围须为「按 Topic」或「按 Schema」。

界面名称(单位)指标键方向检测目的计算方法默认建议值
单 topic 消息频率(Hz)frequency_hz越大越好指定通道发布频率不足消息数除以首末时间跨度;消息不超过 1 条或跨度为 0 时取 0>= 10
单 topic 最大帧间隔(ms)topic_frame_gap_max_ms越小越好指定通道单次最长发布间隔相邻消息时间差的最大值;消息少于 2 条时为 0<= 500
单 topic 消息条数message_count越大越好通道无有效数据该 Topic 消息总数>= 1
单 topic 时间跨度(s)duration_sec越大越好通道中途断流或有效窗口过短末条与首条时间之差>= 0.1
单 topic 首条时间(s)first_ts_sec按任务定义通道启动时刻首条消息时间按任务定义
单 topic 末条时间(s)last_ts_sec按任务定义通道结束时刻末条消息时间按任务定义

表中的默认建议值来自平台内置的指标预设,须按现场采集配置调整。

执行与结果​

执行方式​

触发方式触发时机说明
自动执行MCAP 数据预处理成功后对命中已启用规则的数据集自动入队,无需逐条手动发起
手动执行数据集质检详情或数据集操作对当前数据集命中规则入队,可限定规则子集;需「数据计算/预处理」
规则回灌规则新建或启用后对历史命中数据异步补跑;已有排队中或执行中记录的数据集不重复入队
全量回灌管理员发起对全部启用规则补跑,仅管理员可执行;数据量较大时任务排队执行

自动入队与回灌均以 MCAP 数据为范围;非 MCAP 数据不进入质检队列。

结果查看​

执行状态​

单次执行的状态取值:

状态含义
排队中已入队,等待执行
进行中执行中,含进度百分比
已完成执行完成且断言全部满足
完成(含不通过项)执行完成且存在不通过级断言失败
运行异常执行过程报错,附异常说明
已取消执行被终止
未执行该规则尚无执行记录

查看入口​

入口内容
质检日志 /qc/logs按数据集、规则、状态、有效判定、是否覆盖、时间区间检索执行记录;可打开单次执行详情
数据集质检详情 /qc/dataset/{id}按命中规则逐条展示有效判定、不通过项、全部指标、Topic 列表与执行信息,并支持重跑单条规则或全部规则
数据集列表与详情显示数据集命中的规则数与通过、未通过、进行中的汇总

汇总口径​

数据集的汇总按命中规则计数,每条规则取其最新一次执行,判定取有效判定:

计数口径
命中规则命中已启用规则的条数
通过有效判定为通过的规则数
未通过有效判定为未通过的规则数
进行中最新执行处于排队中或进行中的规则数
未开始质检尚无任何执行记录的规则数
已覆盖存在人工覆盖的规则数

有效判定 effective_pass = override_pass ?? pass:存在人工覆盖时取覆盖值,否则取执行判定。未通过的规则会同步写入系统标签 qc:failed,判定变化时该标签随之增减。

人工覆盖​

对某条规则的最新一次执行可做人工覆盖,取值为通过、未通过或取消覆盖。覆盖时填写原因,最长 500 字;原因、覆盖人与覆盖时间在质检详情与执行历史中展示。

覆盖立即参与汇总计数、系统标签 qc:failed 与导出拦截的判定。取消覆盖后恢复执行判定。

与导出和训练的关系​

导出前的质量门禁由系统设置中的 质检未通过的数据集是否禁止导出 控制,默认启用:

开关状态行为
启用命中质检规则且有效判定为未通过的数据集在导出界面不可勾选,后端拒绝此类导出请求
关闭已通过或未通过的数据集均可导出

尚未执行完成的规则(排队中或进行中)不单独阻断导出。导出流程见 数据导出,训练数据准备见 模型训练。

约束与限制​

项目取值说明
数据格式MCAP非 MCAP 数据不进入质检队列
全局规则写权限仅管理员项目经理不能创建、编辑、删除全局规则
覆盖原因长度最多 500 字超出部分截断
规则优先级数值越小越优先命中规则各自独立判定,不相互覆盖
回灌去重已有排队中或执行中记录的数据集不重复入队按规则与数据集去重
逐 Topic 指标范围「按 Topic」或「按 Schema」与「全部」范围组合会判定失败
缺失指标报告中不存在该字段规则引用缺失指标时断言因实际值为空而失败
单个执行记录的结果最新一次执行参与汇总历史记录保留在质检日志中

失败处理​

现象可能原因处置责任方
数据集未进入质检队列数据非 MCAP、未命中已启用规则、或预处理未完成确认数据格式与规则匹配数据名;完成预处理后重试项目经理、采集员
执行状态为运行异常数据缺失下载地址、容器执行失败、或报告未生成查看执行详情中的异常说明;确认文件可下载后重跑项目经理、管理员
断言失败且提示配置错误指标与范围组合不匹配按指标类型调整断言范围项目经理、管理员
断言失败且提示无匹配 Topic范围模式未匹配到任何 Topic校正 Topic 或 Schema 模式,或改为必需 Topic 断言项目经理、管理员
规则无法保存未选择项目或算法、算法未声明指标 schema选择项目与可用于质检的算法项目经理、管理员
全局规则无法编辑当前账号非管理员由管理员维护全局规则管理员
导出被拒绝数据集有效判定为未通过,且导出拦截已启用修正数据后重跑质检,或经核实后做人工覆盖项目经理、管理员
规则变更后历史数据无结论回灌尚未执行完成等待回灌排队执行,或在数据集质检详情重跑项目经理、管理员

相关页面​

页面用途
数据管理数据集检索、预览与批量操作
数据导出导出前应用质检门禁
模型训练使用已通过质检的数据训练
模块权限质检模块权限的配置方式
系统设置质检导出拦截等系统开关