跳到主要内容

sanitize_data

函数源码

sanitized_data: Annotations = sanitize_data(
data: Annotations | Sequence[th.AnnoItem],
deduplicate: "add" | "drop" = "drop",
)

针对一组标记数据,进行完全清理。

数据清理将会确保:

  1. 所含的时间戳对应调用该方法的时刻。
  2. data字段的所有数据项均是可标记为AnnoItem的字典。
  3. 任何包含值为None的文字标注的项,会标准化为不含文字标注的数据项。
  4. 标记数据的边界框总是含有正值的宽和高(负值的宽或高表示起始点反向)。
  5. 标记数据项将会去重。换言之,所有的ID都会得到清理。

该方法可以在需要保存标记数据的时候调用。运行可能会话一点时间,所以该方法可能不适合用来实时地清理标记数据。

别名

该函数可以按以下方式之一获取

import dash_picture_annotation as dpa


dpa.sanitize_data
dpa.utilities.sanitize_data

参数

输入

参数类型必选
说明
dataAnnotations | [AnnoItem]要清理的标记数据。注意该方法不会原处修改此输入值本身。
deduplicate"add" | "drop"针对ID使用的去重方法。"add"表示透过添加后缀的方式保留重复的 ID。"drop"表示仅保留那些具有重复ID的第一次出现的项。

输出

参数类型
说明
sanitized_dataAnnotations数据经过清理后的副本。

范例

清理一组数据(drop模式)

以下代码会清理数据,但所有包含已重复ID的项均会删去。对任一重复ID,只保留其第一次出现的数据项。

sanitize_data_drop.py
import json
import dash_picture_annotation as dpa


with open("./data-input.json", "r") as fobj:
data = json.load(fobj)

with open("./sanitized-data.json", "w") as fobj:
json.dump(dpa.sanitize_data(data), fobj, indent=2, ensure_ascii=False)

清理一组数据(add模式)

以下代码会清理、并保留全体数据。对任一重复ID,会透过随机生成、并添加后缀的方式去重。

sanitize_data_add.py
import json
import dash_picture_annotation as dpa


with open("./data-input.json", "r") as fobj:
data = json.load(fobj)

with open("./sanitized-data.json", "w") as fobj:
json.dump(dpa.sanitize_data(data, "add"), fobj, indent=2, ensure_ascii=False)