Skip to main content

数据视图

class dataview.DataView(name=None, iteration_order='sequential', iteration_infinite=False, maximum_number_of_frames=None, auto_connect_with_task=True, queries=None, **kwargs)

DataView 对象在数据集版本的混合上创建一个单一视图。

例如:平衡过滤规则(对于来自一个过滤器的每个答案,给我来自另一个过滤器的两个答案)。此外,增强指令与数据迭代器一起发送,以便在飞行中执行。这不仅为我们提供了灵活性和可重复性,还使我们能够在零代码干扰的情况下进行多个训练任务,以进行大规模的超参数优化。

创建一个新的DataView。

  • 参数

    • name (str ) – 命名当前的DataView。当使用多个DataView时非常重要。 例如,一个DataView的名称为‘Test’,另一个为‘Validation’。

    • iteration_order (IterationOrder ) – 使用此 DataView 时帧的迭代顺序。

    • iteration_infinite (bool ) – 如果为 True,dataview 可能会返回 任何帧超过一次,直到达到 maximum_number_of_frames。 如果唯一帧的总数少于 maximum_number_of_frames, 则不会返回重复的帧。

    info

    如果使用,重复的帧在增强方面仍然会有所不同,这是由于增强操作和参数选择的随机性。

    • maximum_number_of_frames (int ) – 当迭代此 DataView 时返回的最大帧数。

    • auto_connect_with_task (bool ) – 如果为True,DataView将自动与主任务上下文连接。默认为True。 可选:只读禁用UI中的DataView更改。 这意味着如果dataview在UI中被更改,它将对代码没有影响!

    • 查询 ] **] ** 查询 (列表 [ 联合 [ 过滤规则 , ) – 此数据视图的初始查询(过滤规则)。

info

Dataview 访问是惰性的,只有在需要迭代器时我们才会实际检查 dataview 的有效性


RoiQuery

class RoiQuery(label=None, count_range=None, conf_range=None, must_not=None)

对数据视图的单个查询。

由attrs为类DataView.RoiQuery生成的方法。

  • 返回类型


标签

标签

ROI的标签。只有具有此标签的ROI才会被匹配。

可能的值为:

  • 单个字符串 - ROI 必须有一个标签等于此字符串

  • 一个字符串序列 - ROI必须包含序列中的所有标签。

  • 一个以空格分隔的标签列表作为单个字符串 - ROI 必须包含列表中的所有标签。

  • 一个lucene查询 - ROI必须具有与查询匹配的标签。

示例:

  • None 或 '*' 或 '':匹配任何标签的 ROI。

  • ‘cat’: 仅选择标签包含单词‘cat’的ROI帧。

  • ‘cat AND dog’:仅选择包含‘cat’和‘dog’标签的ROI帧

  • 类型

    列表[str] 或 str 或 None


count_range

count_range

查询的计数约束。

如果提供,将查询结果限制在匹配查询的ROI数量在给定范围内的帧。

  • 类型

    元组(整数,整数)


置信区间

conf_range

查询的置信度过滤器。

如果提供,帧仅在包含与RoiQuery.label匹配且置信度在给定范围内的ROI时匹配查询。

  • 类型

    元组(浮点数, 浮点数)


must_not

must_not

如果为True,则否定整个roi选择规则

如果为True,将返回匹配查询的帧。 :type: bool


is_none

is_none()


状态

属性状态

  • 返回类型

    Optional[str]

  • 返回

    返回DataView状态,如果已设置。否则,返回None


名称

属性名称

  • 返回类型

    str

  • 返回

    返回 DataView 名称 (str)


DataView.get

classmethod get(dataview_id=None, dataview_name=None)

从服务器获取先前定义的数据视图。

  • 参数

    • dataview_id (str ) – 数据视图的ID。

    • dataview_name (str ) – 数据视图的名称。

  • 返回

    为所需的数据视图创建一个新的Dataview对象

  • 返回类型

    数据视图

info

dataview_id 和 dataview_name 是互斥的。 将两者都设置为非空值将引发 UsageError 异常。


克隆

clone()

将此数据视图克隆到一个新的数据视图中。

新的数据视图是此数据视图的仅SDK克隆,它在后端没有表示。

  • 返回

    克隆的 DataView 对象。

  • 返回类型

    数据视图


add_query

add_query(dataset_id=None, dataset_name=None, version_id=None, version_name=None, weight=1.0, roi_query=None, roi_count_range=None, roi_conf_range=None, roi_query_must_not=None, frame_query=None, source_query=None, query_object=None, dataset_project=None)

向数据视图添加一个新查询。

info

Dataview 访问是惰性的,只有在需要迭代器时我们才会实际创建 dataview。

  • 参数

    • dataset_id (str ) – 用作此查询输入的数据集的ID。

    • dataset_name (str ) – 用作此查询输入的数据集的名称。使用“*”来指定所有数据集。

    info

    dataset_id 和 dataset_name 是互斥的。 同时设置为非空值将引发 UsageError 异常。

    • version_id (str ) – 用作此查询输入的版本的ID。

    • version_name (str ) – 用作此查询输入的版本名称。使用“*”指定数据集中的所有版本。

    warning

    版本名称不是唯一的。查询将应用于单个版本,最后更新的版本将被选中!

    info

    version_id 和 version_name 是互斥的。 将两者都设置为非空值将引发 UsageError 异常。

    info

    如果未指定数据集版本,则将选择数据集中最后更新的版本

    • weight (float ) – 规则的权重。相对于其他查询进行测量。 例如,两个具有相同权重的查询将导致数据视图 从每个查询中获取完全相同数量的帧,无论 输入版本中的帧数如何。这对于 消除数据集中的固有偏差至关重要。

    • str **] ** roi_query (Union [ list [ str ] , ) – 标签列表或表示单个标签或lucene查询的字符串。 只有当帧包含所有标签的ROI时,查询才会返回该帧。 如果roi_query==DataView.EmptyRois,则表示仅选择没有任何ROI的帧。

    info

    即使只有一个ROI匹配查询,帧中的所有ROI也会被返回。

    如果ROI具有查询中的所有标签,则它与查询匹配。

    示例: [“black”, “cat”] 将匹配 [“black”, “occluded”, “cat”] 但不会匹配 [“black”, “dog”] 或 [“cat”] 示例: DataView.EmptyRois 将仅匹配没有rois的帧 示例: “car” 将返回所有带有“car”标签的帧 示例: Lucene查询 - “person OR car” 将返回所有带有“car”或“person”标签的帧

    • frame_query (str ) – Lucene query on the frame (can be mixed with roi query). Notice, this is a direct Lucene query, escape any special Lucene character with . Example: ‘(src:directory_name) AND (meta.key:my_value) AND (width:>50)’ will match any frame with src field containing ‘directory_name’, width over 50px and meta.key contains my_value.
    info

    一个查询如‘meta.cat_type:”white cat”’将匹配meta.cat_type字段包含“white”、“cat”或两者的帧。为了匹配meta.cat_type==”white cat”的帧,请使用‘meta.cat_type.keyword:”white cat”’。

    • source_query (str ) – 对帧源的Lucene查询(可以与其他任何查询混合使用)。 注意,这是一个直接的Lucene查询,使用转义任何特殊的Lucene字符。 示例:'(sources.uri:directory_name) AND (sources.preview.uri:https*)' 返回链接中包含directory_name的源URI和带有https前缀的预览链接的帧

    • roi_count_range (tuple ( int *, * int ) ) – (最小值, 最大值) 匹配项的出现次数。

    • roi_conf_range (tuple ( float *, * float ) ) – (最小值, 最大值) 匹配注释的置信度必须在此范围内。

    • roi_query_must_not (bool ) – 如果为True,则否定roi查询, 即仅返回不符合roi查询条件的帧 示例:roi_query=[“black”, “cat”] roi_query_must_not=True, 将匹配 [“black”, “occluded”, “dog”] 但不会匹配 [“black”, “partial”, “cat”]

    • query_object (Query ) – 一个存储特定规则所有信息的dataview.Query实例 如果传递query_object,所有其他字段应为None,因为它们将被忽略。

    • dataset_project (str ) – 用作此查询输入的数据集的项目。


add_multi_query

add_multi_query(dataset_id=None, dataset_name=None, version_id=None, version_name=None, weight=1.0, roi_queries=None, frame_query=None, source_query=None, dataset_project=None)

向数据视图添加一个包含多个标签查询的新查询。

info

Dataview 访问是惰性的,只有在需要迭代器时我们才会实际创建 dataview。

  • 参数

    • dataset_id (str ) – 用作此查询输入的数据集的ID。

    • dataset_name (str ) – 用作此查询输入的数据集的名称。

    info

    dataset_id 和 dataset_name 是互斥的。 将两者都设置为非空值将引发 UsageError 异常。

    • version_id (str ) – 用作此查询输入的版本的ID。

    • version_name (str ) – 用作此查询输入的版本名称。

    warning

    版本名称不是唯一的。查询将应用于单个版本,最后更新的版本将被选中!

    info

    version_id 和 version_name 是互斥的。将两者都设置为非空值将会引发 UsageError 异常。

    info

    如果未指定数据集版本,则将选择数据集中最后更新的版本

    • weight (float ) – 规则的权重。相对于其他查询进行测量。 例如,两个具有相同权重的查询将导致数据视图 从每个查询中获取完全相同数量的帧,无论 输入版本中的帧数如何。这对于 消除数据集中的固有偏差至关重要。

    • roi_queries (list [ RoiQuery * 或 * dict ] ) – 一个包含 RoiQuery 或带有 ‘label’, ‘count_range’ 和 ‘conf_rang’ 键的字典的列表。列表中的每一项 都是对帧的ROIs的查询。只有匹配所有 查询的帧才会被此数据视图返回。 如果 roi_queries==DataView.EmptyRois ,则意味着仅选择没有任何ROIs的帧。

    • frame_query (str ) – 在帧上的Lucene查询(可以与roi查询混合使用)。 示例:'(src:directory_name) AND (meta.key:my_value) AND (width:>50)' 将匹配任何src字段包含'directory_name', 宽度超过50px且meta.key包含my_value的帧。

    info

    一个查询如‘meta.cat_type:”white cat”’将匹配meta.cat_type字段包含“white”、“cat”或两者的帧。为了匹配meta.cat_type==”white cat”的帧,请使用‘meta.cat_type.keyword:”white cat”’。

    • source_query (str ) – 对帧源的Lucene查询(可以与其他任何查询混合使用)。 注意,这是一个直接的Lucene查询,使用转义任何特殊的Lucene字符。 示例:'(sources.uri:directory_name) AND (sources.preview.uri:https*)' 返回链接中包含directory_name的源URI和带有https前缀的预览链接的帧

    • dataset_project (str ) – 用作此查询输入的数据集的项目。


add_queries

add_queries(queries)

向数据视图添加查询列表。

info

Dataview 访问是惰性的,只有在需要迭代器时我们才会实际创建 dataview。

  • 参数

    queries (Query ) – 表示要添加的新查询的查询对象列表(或单个查询对象)。

  • 返回类型

    None


获取查询

get_queries()

获取此数据视图的查询。

使用示例:基于返回的查询创建一个新的DataView。

dataview = DataView(queries=source_dataview.get_queries())

  • 返回

    此数据视图的查询列表。

  • 返回类型

    列表[查询]


create_version

create_version(version_name, description=None, dataset_id=None, dataset_name=None, parent_version_ids=None, parent_version_names=None, raise_if_exists=False, auto_upload_destination=None, local_dataset_root_path=None, dataset_project=None)

在数据集中创建一个具有特定名称的新版本。

如果已经存在一个具有该名称的版本并且处于草稿模式(即可写),则返回该版本,除非raise_if_existsTrue,则抛出ValueError

版本创建后,当前DataView中的所有帧将被添加到其中

  • 参数

    • version_name (str ) – 新版本的名称。

    • 描述 (可选 [ 字符串 ] ) – 新数据集版本的描述

    • dataset_id (可选 [ str ] ) – 要在其中创建版本的数据集的ID。

    • dataset_name (可选 [ str ] ) – 要在其中创建版本的数据集的名称。

    • parent_version_ids (可选 [ 列表 [ 字符串 ] ] ) – 新版本父级ID的列表。所有ID必须是此数据集中现有版本的ID。目前仅支持单个父级版本。这是一个为未来兼容性准备的列表。

    • parent_version_names (可选 [ 列表 [ 字符串 ] ] ) – 新版本父级名称的列表。所有名称必须是此数据集中现有版本的名称。目前仅支持单个父级版本。这是一个为未来兼容性准备的列表。

    • raise_if_exists (bool ) – 如果为 True 并且名为 name 的版本已经存在,则抛出 ValueError。如果为 False 并且该名称的版本已经存在, 则返回它。

    • auto_upload_destination (可选 [ str ] ) – 如果指定了任何由SingleFrame/FrameGroup链接的本地文件,将自动上传到目标存储。

    • local_dataset_root_path (可选 [ 联合 [ str *, * 路径 ] ] ) – 如果提供了auto_upload_destination,则为必需。 它应指向所有本地源文件的公共文件夹

    • dataset_project (可选 [ str ] ) – 创建版本的数据集项目。

  • 返回类型

    DatasetVersion

  • 返回

    新的DatasetVersion对象,表示新版本。

info

dataset_id 和 dataset_name 是互斥的。将两者都设置为非空值将会引发 UsageError 异常。


获取版本

get_versions()

获取此数据视图的数据集版本列表。

数据视图的版本是所有查询中指定的版本,以及注册为数据视图输入的版本。

  • 返回类型

    List[DatasetVersion]

  • 返回

    一个allegroai.DatasetVersion对象的列表,每个对象对应数据视图的一个版本。


获取数据集

get_datasets()

获取此数据视图的数据集版本列表。等同于 get_queries()

数据视图的版本是所有查询中指定的版本,以及注册为数据视图输入的版本。

  • 返回类型

    List[DatasetVersion]

  • 返回

    allegroai.DatasetVersion 对象的列表,每个对象对应数据视图的一个版本。


add_mapping_rule

add_mapping_rule(from_labels, to_label, dataset_id=None, dataset_name=None, version_id=None, version_name=None, dataset_project=None)

向数据视图添加新映射。

在遍历数据视图时,映射自动将标签名称转换为ROI返回的规范名称。这是为了确保不同数据集中的不同命名不会为同一对象产生两个不同的类别。

示例:如果一个数据集中的ROI标签为‘pedestrian’,而另一个数据集中的ROI标签为‘person’,我们可以在单个数据视图中使用两者,通过添加从‘pedestrian’到‘person’的映射来创建一个人检测器。

info

如果此Dataview不是从服务器中的现有dataview创建的,此函数将触发创建此类dataview。

info

在帧与数据视图的查询匹配后,执行标签映射。因此,必须根据数据集的原始标签定义查询。

  • 参数

    • dataset_id (str ) – 要应用映射规则的数据集的ID。

    • dataset_name (str ) – 要应用映射规则的数据集的名称。

    info

    dataset_id 和 dataset_name 是互斥的。将两者都设置为非空值将会引发 UsageError 异常。

    • version_id (str ) – 要应用映射规则的版本的ID。

    • version_name (str ) – 要应用映射规则的版本名称。

    info

    version_id 和 version_name 是互斥的。将两者都设置为非空值将会引发 UsageError 异常。

    info

    如果未指定数据集版本,则将选择数据集中最后更新的版本

    • from_labels (str * 或 * list [ str ] ) – 要映射到 to_label 的标签或标签列表。ROI 必须匹配 所有 标签才能进行映射。

    • dataset_project (str ) – 要应用映射规则的数据集的项目。

    • to_label (str ) – 将 from_labels 更改为的标签。

  • 返回类型

    ()


设置标签

**设置标签(label_dict, *label_dicts, force=False, labels)

设置数据视图标签枚举。

标签枚举将标签字符串映射为整数,以便在网络中后续使用。

  • 参数

    • label_dict (Mapping [ str: int ] ) – 从标签字符串到其在网络中的整数表示的映射。例如 {'cat': 0, 'dog': 1, 'hound': 1}

    • label_dicts (映射 [ str: int ] ) – 已弃用,请使用 label_dict 代替

    • force (bool ) – 如果为True,即使任务在远程运行,也会设置标签。

    • labels (int ) – 已弃用,请使用 label_dict 代替

  • 返回类型

    None


添加仿射增强

add_augmentation_affine(operations=('bypass', 'scale', 'rotate', 'shear', 'reflect-horiz', 'reflect-vert'), strength=1.0)

向数据视图添加基于仿射的增强指令。

增强功能由后端选择,其中生成随机性并且可以重现(在操作选择和附加参数中)

增强的实际执行由工作器完成,同时使用ImageFrame从帧中获取数据。

  • 参数

    • operations (Sequence [ Augmentation.Affine ] ) – 一系列仿射操作。将随机且均匀地选择一个。

    • strength (float ) – 增强操作的强度。这是我们如何缩放(乘以)传递给增强操作的随机[0-1]参数。

  • 返回

    True 如果增强已添加到数据视图中。

  • 返回类型

    布尔


add_augmentation_pixel

add_augmentation_pixel(operations=('bypass', 'blur', 'noise', 'recolor'), strength=1.0)

向数据视图添加基于像素的增强指令。

增强由后端选择,其中生成随机性并且可以重现(在操作选择和附加参数中)

增强的实际执行由工作器完成,同时使用ImageFrame从帧中获取数据。

  • 参数

    • operations (Sequence [ Augmentation.Pixel ] ) – 一系列像素操作。将随机且均匀地选择一个操作。

    • strength (float ) – 增强操作的强度。这是我们如何缩放(乘以)传递给增强操作的随机[0-1]参数。

  • 返回

    True 如果增强已添加到数据视图中。

  • 返回类型

    布尔


添加自定义增强

add_augmentation_custom(operations, strength=1.0, arguments=None)

向数据视图添加自定义增强指令。

增强功能由后端选择,其中生成随机性并且可以重现(在操作选择和附加参数中)

增强的实际执行由工作器完成,同时使用ImageFrame从帧中获取数据。

  • 参数

    • operations (Sequence ( str ) ** ) – 一系列自定义操作名称。每个名称都必须通过 ImageFrame.register_custom_augmentation 进行注册。 将随机且均匀地选择一个操作。

    • strength (float ) – 增强操作的强度。这是我们如何缩放(乘以)传递给增强操作的随机[0-1]参数。

    • arguments (Mapping ( str: Mapping ( str: Any ) ) ) – 自定义操作的参数。对于operations中的每个操作,arguments中可能有一个条目,其键等于操作名称。条目的值是从名称到任何可JSON化的值的映射。所选操作的条目将从服务器原样返回,即它不会被随机选择。此映射在执行增强代码时可以从增强代码中访问。

    from allegroai import ImageFrame, DataView
    from my_augmentation_library import MyCustomAugmentation, MyCoolAugmentation

    ImageFrame.register_custom_augmentation('custom_aug', MyCustomAugmentation)
    ImageFrame.register_custom_augmentation('cool_aug', MyCoolAugmentation)

    aug_arguments = {
    'custom_aug': {
    'color': 'blue',
    'count': 42,
    },
    'cool_aug': {
    'vector': [1, 2, 5],
    'verify: True,
    },
    }

    dv = DataView()
    dv.add_augmentation_custom(
    operations=('custom_aug', 'cool_aug'),
    arguments=aug_arguments,
    )
  • 返回

    True 如果增强已添加到数据视图中。

  • 返回类型

    布尔


设置迭代参数

set_iteration_parameters(order=None, infinite=None, maximum_number_of_frames=None, random_seed=None)

设置数据视图的一般迭代参数。

  • 参数

    • order (IterationOrder ) – 使用此 DataView 时帧的迭代顺序。None 表示不适用(忽略)

    • infinite (bool ) – 如果 True,dataview 无限返回帧(当然会有重复)。None 表示不适用(忽略)

    info

    如果使用,重复的帧在增强方面仍然会有所不同,这是由于增强操作和参数选择的随机性。

    • maximum_number_of_frames (int * or * None ) – 限制 dataview 返回的总帧数。None 表示不适用(忽略)
    info

    零或负值表示帧数“无限制”。

    • random_seed (int * or * None ) – 任何需要的随机性的随机种子(例如顺序、增强等)。默认随机种子是固定的,以便于重现。

    None 表示不适用(忽略)

  • 返回

    True 如果至少设置了一个指定的数据视图迭代参数

  • 返回类型

    布尔


获取迭代参数

get_iteration_parameters()

获取数据视图迭代参数(包括通用和视频迭代参数)

  • 返回

    指定迭代参数的字典

  • 返回类型

    字典


设置视频参数

set_video_parameters(minimum_time_between_consecutive_frames=0, sequence_minimum_time=0)

设置数据视图视频特定的迭代参数。

这些设置仅适用于视频内容(共享相同源URI但时间戳不同的帧)。

warning

此方法将所有未设置的参数覆盖为默认值。

  • 参数

    • minimum_time_between_consecutive_frames (int ) – 当帧包含正时间戳(即视频)时,确保两个连续帧之间至少相隔 minimum_time_between_consecutive_frames 毫秒。

    • sequence_minimum_time (int ) – 当帧包含正时间戳(例如视频)时,使用足够的帧扩展所选帧(基于过滤器),以便我们最终得到一个至少为sequence_minimum_time长度(以时间基准/毫秒为单位)的序列。

  • 返回

    True 如果至少设置了一个指定的数据视图迭代参数

  • 返回类型

    布尔


设置随机种子

设置随机种子(random_seed)

设置此数据视图的随机种子。

随机种子始终固定,因此整个运行是可重复的。 默认的随机种子固定为1337。

  • 参数

    random_seed (int ) – 任何需要随机性的随机种子 (例如,顺序、增强等)。

  • 返回类型

    None


获取随机种子

get_random_seed()

获取此数据视图的随机种子。

随机种子始终固定,因此整个运行是可重复的。 默认的随机种子固定为1337。

  • 返回整数

    用于任何需要的随机性的随机种子(例如,顺序、增强等)。

  • 返回类型

    int


to_dict

to_dict(projection=None)

获取DataView作为字典列表。列表中的每个字典代表一个帧。 警告:此函数会同时从后端拉取所有帧。建议尽可能使用DataView.get_iterator(projection=projection or [‘*’]),以避免这种情况。

示例:

dataview.to_dict(projection=['id', 'dataset.id', 'sources'])
# will return a list containing dictionaries with the following fields:
# [
# {
# 'id': '514504adbb6a91620eefa3e21ecfcc31',
# 'dataset': {
# 'id': 'df3638ec95454589bf86ba97f344f697'
# },
# 'sources': [
# {
# 'id': 'Frame',
# 'uri': 'https://clearml-public.s3.amazonaws.com/datasets/food_dataset/pizza/3724187.jpg',
# 'timestamp': 0,
# 'preview': {
# 'uri': 'https://clearml-public.s3.amazonaws.com/datasets/food_dataset/pizza/3724187.jpg',
# 'timestamp': 0
# }
# }
# ]
# },
# some other dictionaries with the same format here
# ]
  • 参数

    projection (可选 [ 序列 [ 字符串 ] ] ) – 用于选择将返回帧的哪些部分。 每个字符串代表一个字段或子字段(使用点分隔符号)。为了指定特定的数组元素,使用数组索引作为字段名。为了指定所有数组元素,使用‘*’。 要查看支持的投影字段,请参阅backend_api.services.frames.Frame中的模式。

  • 返回类型

    列表[字典[字符串, 字符串]]

  • 返回

    表示每个帧的字典列表


get_iterator

**get_iterator(query_cache_size=None, query_queue_depth=None, allow_repetition=False, projection=None, kwargs)

获取此DataView的迭代器。

迭代器将根据其查询(参见add_queryadd_multi_query)及其迭代参数(参见set_iteration_parametersset_video_parameters)从数据视图中生成帧。

生成的帧仅包含帧的元数据。 如果DataView是基于图像的,您可以使用ImageFrame包装SingleFrame/FrameGroup 以获得内置的增强支持。

info

每次函数调用都会为DataView创建一个新的迭代器!

info

迭代器长度将根据特定查询返回预期的帧数

如果设置了DataView的无限标志,len(iterator)将返回2^32

如果设置了maximum_number_of_frames,len(iterator)将返回maximum_number_of_frames

如果allow_repetitions为True,将自动计算返回的最大帧数的限制。这个限制可以被视为一个完整的周期,因为它保证了我们在每个规则中覆盖所有唯一的帧(也就是说,在某些规则中,我们可能会有重复作为规则比例平衡的一部分)。len(iterator)将返回这个合成的周期限制,并且当达到这个限制时,迭代器将引发StopIteration(如迭代器所预期的那样)。

  • 参数

    • query_cache_size (int ) – 每次向服务器发出API调用时请求的元数据帧数。较大的值在每个请求上较慢,但对于迭代器返回的帧来说,平均速度更快。

    • query_queue_depth (int ) – 存储在返回队列中的API请求结果数量。返回队列中存储的元数据帧的最大总数是 query_cache_size * query_queue_depth。

    • allow_repetition (bool ) – 返回的迭代器的长度将被限制为覆盖所有来自DataView不同查询的唯一帧。 例如:如果我们有两个查询,一个有100个唯一帧,另一个有2个唯一帧。 allow_repetition将设置DataView的maximum_number_of_frames为200帧, 并取消数据视图的无限标志。 这将导致len(iterator)返回200, 并且在200帧后引发StopIteration(如预期的那样)

    • projection (可选 [ 序列 [ 字符串 ] ] ) – 用于选择将返回帧的哪些部分。 每个字符串代表一个字段或子字段(使用点分隔符号)。为了指定特定的数组元素,使用数组索引作为字段名。为了指定所有数组元素,使用‘*’。 要查看支持的投影字段,请参阅backend_api.services.frames.Frame中的模式。 如果设置了此参数,迭代器返回的值将是表示每个帧的字典

    例如:

    dataview.get_iterator(projection=['id', 'dataset.id', 'sources'])
    # will return an iterator that yields dictionaries with the following fields:
    # {
    # 'id': '514504adbb6a91620eefa3e21ecfcc31',
    # 'dataset': {
    # 'id': 'df3638ec95454589bf86ba97f344f697'
    # },
    # 'sources': [
    # {
    # 'id': 'Frame',
    # 'uri': 'https://clearml-public.s3.amazonaws.com/datasets/food_dataset/pizza/3724187.jpg',
    # 'timestamp': 0,
    # 'preview': {
    # 'uri': 'https://clearml-public.s3.amazonaws.com/datasets/food_dataset/pizza/3724187.jpg',
    # 'timestamp': 0
    # }
    # }
    # ]
    # }
    • kwargs (int ) –
  • 返回

    DataView帧的迭代器。

  • 返回类型

    生成器((SingleFrame, FrameGroup, 字典))


to_list

to_list(allow_repetition=False, auto_synthetic_epoch_limit=None)

获取此DataView的帧列表。

返回的列表将根据其查询(参见add_queryadd_multi_query)及其迭代参数(参见set_iteration_parametersset_video_parameters)从DataView中获取帧。

生成的帧仅包含帧的元数据(SingleFrame/FrameGroup)。

info

每次函数调用都会为DataView创建一个新的帧列表!

  • 参数

    • allow_repetition (bool ) – 返回的迭代器的长度将被限制为覆盖所有来自DataView不同查询的唯一帧。 例如:如果我们有两个查询,一个有100个唯一帧,另一个有2个唯一帧。 allow_repetition将设置DataView的maximum_number_of_frames为200帧, 并取消数据视图的无限标志。 这将导致len(iterator)返回200, 并且在200帧后(如预期)会引发StopIteration。

    • auto_synthetic_epoch_limit (Optional[int]) – 已弃用,请改用 allow_repetition

  • 返回

    从DataView的查询生成的SingleFrame、FrameGroup列表。

  • 返回类型

    列表((SingleFrame, FrameGroup))


split_to_lists

split_to_lists(ratio, allow_repetition=False, seed=42, frame_id_fn=None)

根据分割权重,将DataView表示的帧划分为不重叠的列表(例如训练/验证/测试)

  • 确保列表之间没有重叠。

  • 确保帧的分区仅基于权重和种子,并且与DataView查询无关,这意味着分区是一致的。

生成的帧基于frame_stringify_fn(frame)返回的标识符与种子号组合进行均匀分割。

生成的帧仅包含帧的元数据(SingleFrame/FrameGroup)。

info

每次函数调用都会为DataView创建一个新的帧列表!

  • 参数

    • ratio (list ( int ) ) – 分区权重(整数)列表。 分割基于权重与总权重之和的比率。 例如:60% / 20% / 20% 的训练/验证/测试分割可以通过 partition_weights=[3, 1, 1] 实现,并将生成三个分区,第一个分区将拥有 DataView 帧的 3/5, 第二个分区将拥有 1/5,第三个分区将拥有 DataView 帧的最后 1/5。

    • allow_repetition (bool ) – 返回的迭代器的长度将被限制为覆盖所有来自DataView不同查询的唯一帧。 例如:如果我们有两个查询,一个有100个唯一帧,另一个有2个唯一帧。 allow_repetition将设置DataView的maximum_number_of_frames为200帧, 并取消数据视图的无限标志。 这将导致len(iterator)返回200, 并且在200帧后引发StopIteration(如预期的那样)

    • seed (int ) – 添加到帧标识符的随机数,控制帧分区选择标准中的随机性

    • frame_id_fn (lambda ) – 用户提供的帧标识符函数,用于DataView帧的一致分区。默认值为 (lambda frame: frame.id)

  • 返回

    分区列表,其中每个分区是从DataView的查询生成的SingleFrame/FrameGroup列表。

  • 返回类型

    列表(列表((SingleFrame, FrameGroup)))


to_json

to_json(json_file, allow_repetition=False, auto_synthetic_epoch_limit=None)

将DataView数据存储到json文件。 存储的DataView帧仅包含元数据。

  • 参数

    • json_file (Union[str, BytesIO]) – 路径 (str) 或 BytesIO 对象,用于存储 DataView 数据(以 JSON 格式)。

    • allow_repetition (bool ) – 返回的迭代器的长度将被限制为覆盖所有来自DataView不同查询的唯一帧。 例如:如果我们有两个查询,一个有100个唯一帧,另一个有2个唯一帧。 allow_repetition将设置DataView的maximum_number_of_frames为200帧, 并取消数据视图的无限标志。 这将导致len(iterator)返回200, 并且在200帧后(如预期)会引发StopIteration。

    • auto_synthetic_epoch_limit (Optional[int]) – 已弃用,请改用 allow_repetition

  • 返回类型

    bool

  • 返回

    如果成功则为真


从JSON到列表

从JSON到列表(json_file)

从json文件加载DataView数据。 返回的帧仅是帧的元数据,类型为SingleFrame/FrameGroup。

  • 参数

    json_file (Union[str, BytesIO]) – 路径(str)或BytesIO对象,用于加载DataView数据(JSON格式)。

  • 返回

    从JSON文件DataView数据生成的SingleFrame、FrameGroup列表。

  • 返回类型

    列表((SingleFrame, FrameGroup))


预取文件

prefetch_files(num_workers=None, wait=False, query_cache_size=None, get_previews=False, get_masks=True)

预取DataView的文件(由DataView中的帧指向的文件/URI)。 例如,在DataView中的所有帧上调用SingleFrame.get_local_source() .get_local_preview() .get_local_mask() 预取在后台完成,函数调用立即返回

  • 参数

    • num_workers (Optional[int]) – 无(默认),工作线程数设置为CPU数量

    • wait (bool) – 如果为True,则在所有文件预取到本地存储后返回

    • query_cache_size (Optional[int]) – 每次向服务器发出API调用时请求的元数据帧数量。

    • get_previews (Optional[bool]) – 预取预览文件(默认 False)

    • get_masks (Optional[bool]) – 预取掩码(默认值为 True)

  • 返回类型

    bool

  • 返回

    如果预取开始则为真


获取映射规则

get_mapping_rules()

获取当前数据视图映射

注意:如果数据视图是从现有数据视图创建的,此函数将触发数据视图的创建

  • 返回类型

    List[MappingRule]

  • 返回

    映射对象列表


获取标签

get_labels()

获取数据视图标签枚举(即标签字符串到ID的字典)

示例: {'person': 1, 'background': 0, 'pedestrian': 1} 注意: 每次函数调用都会为数据视图创建一个新的迭代器!

  • 返回类型

    Dict[str, int]

  • 返回

    字符串到整数的字典


存储

store(project_name=None, name=None, description=None, tags=None)

将当前的数据视图存储在系统中以供将来使用

  • 参数

    • project_name (Optional[str]) – 项目名称 (字符串)

    • name (Optional[str]) – 数据视图名称(字符串)

    • 描述 (Optional[str]) – 数据视图描述 (字符串)

    • 标签 (Optional[List[str]]) – 此数据视图的标签列表(字符串)

  • 返回类型

    None


连接

连接(任务)

将当前数据视图与特定任务连接

在调试模式下运行时(即在本地),任务会使用dataview对象进行更新 在远程运行时(即从守护进程运行),dataview会从任务中更新 注意!在远程运行时,dataview会被忽略,并且无论代码如何,都会从任务对象中加载

  • 参数

    任务 (任务 ) – 任务对象

  • 返回类型

如果DataView对象已经连接到其他任务,则引发 ValueError异常

  • 返回类型

  • 参数

    任务 (任务 ) –


更新任务

update_task(task)

将此数据视图的内容设置到任务中。此操作不会设置对提供的数据视图的引用,而是将所有数据复制到任务对象维护的适当内部结构中,并使用API在后端更新任务信息。 此函数即使在远程运行时也会设置数据视图的内容。 请注意,尝试更新数据视图已连接的任务将引发ValueError。

  • 参数

    任务 (任务 ) – 设置内容的任务

  • 返回类型


get_id

get_id()

返回系统中的dataview ID(供将来使用)

  • 返回类型

    str

  • 返回

    数据视图 ID (字符串)


has_id

has_id()

  • 返回类型

    bool

  • 返回

    当且仅当数据视图存储在服务器中的ID下时为真。


get_count

get_count()

返回此数据视图返回的唯一帧的总数,以及从此数据视图的每个查询(规则)返回的唯一帧的数量

  • 返回类型

    Tuple[int, Sequence[int]]


获取来源

get_sources()

返回当前DataView中所有帧的源URI链接列表 :rtype: Sequence[str] :returns: URI字符串列表

  • 返回类型

    序列[str]