sanitize_data
函数源码
sanitized_data: Annotations = sanitize_data(
data: Annotations | Sequence[th.AnnoItem],
deduplicate: "add" | "drop" = "drop",
)
针对一组标记数据,进行完全清理。
数据清理将会确保:
- 所含的时间戳对应调用该方法的时刻。
data
字段的所有数据项均是可标记为AnnoItem
的字典。- 任何包含值为
None
的文字标注的项,会标准化为不含文字标注的数据项。 - 标记数据的边界框总是含有正值的宽和高(负值的宽或高表示起始点反向)。
- 标记数据项将会去重。换言之,所有的ID都会得到清理。
该方法可以在需要保存标记数据的时候调用。运行可能会话一点时间,所以该方法可能不适合用来实时地清理标记数据。
别名
该函数可以按以下方式之一获取
import dash_picture_annotation as dpa
dpa.sanitize_data
dpa.utilities.sanitize_data
参数
输入
参数 | 类型 | 必选 | |
---|---|---|---|
data | Annotations | [AnnoItem] | 要清理的标记数据。注意该方法不会原处修改此输入值本身。 | |
deduplicate | "add" | "drop" | 针对ID使用的去重方法。"add" 表示透过添加后缀的方式保留重复的 ID。"drop" 表示仅保留那些具有重复ID的第一次出现的项。 |
输出
参数 | 类型 | |
---|---|---|
sanitized_data | Annotations | 数据经过清理后的副本。 |
范例
清理一组数据(drop
模式)
- 输入数据
- 代码
- 输出数据
data-input.json
data | [-]data [10]
|
以下代码会清理数据,但所有包含已重复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)
sanitized-data.json
timestamp | 1730913816961 | ||||||||||||||||||||||||||||||||||||||||||||||
data | [-]data [8]
|
清理一组数据(add
模式)
- 输入数据
- 代码
- 输出数据
data-input.json
data | [-]data [10]
|
以下代码会清理、并保留全体数据。对任一重复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)
sanitized-data.json
timestamp | 1730915309229 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||
data | [-]data [10]
|