Skip to main content

框架组

ClearML 企业版提供FrameGroup作为一种易于使用的框架类型,支持多种来源。 将SingleFrames列表添加到FrameGroup中,然后在数据集版本中注册FrameGroups。 查看和编辑 FrameGroups及其包含的SingleFrames 在ClearML 企业版WebApp(UI)中。

一个SingleFrame由在特定时间点针对特定空间区域收集的原始数据的元数据组成,还包括注释和掩码等附加元数据。因此,FrameGroup将同一时间点的多组原始数据及其附加元数据组合在一起。

例如,使用FrameGroups用于以下情况:

  • 自动驾驶汽车上的多个摄像头 - 由每个摄像头的SingleFrame组成的FrameGroup。
  • 机器上的多个传感器检测缺陷 - 由每个传感器的SingleFrame组成的FrameGroup。

用法

创建FrameGroup

FrameGroup 类似于 SingleFrames 的字典。实例化一个 FrameGroup 和一个 SingleFrame。然后将 SingleFrame 对象添加到 FrameGroup 中,键为 SingleFrame 的名称,值为 SingleFrame 对象。

from allegroai import FrameGroup, SingleFrame

# Create a FrameGroup object
frame_group = FrameGroup()

# Create a SingleFrame
frame = SingleFrame(
source='https://allegro-datasets.s3.amazonaws.com/tutorials/000012.jpg',
width=512, height=512,
preview_uri='https://allegro-datasets.s3.amazonaws.com/tutorials/000012.jpg'
)

# Add the first SingleFrame to the FrameGroup.
frame_group['FrameOne'] = frame

向数据集版本添加FrameGroups

要向数据集版本添加FrameGroups:

  1. 创建一个FrameGroup对象

  2. 将SingleFrames添加到FrameGroup中,其中FrameGroup中每个SingleFrame的键是SingleFrame的名称

  3. 将FrameGroup对象附加到帧列表中

  4. 使用DatasetVersion.add_frames()方法将该列表添加到DatasetVersion中。使用upload_retries参数设置在上传失败的情况下,应重试上传帧的次数,然后将帧标记为失败并继续上传下一帧。如果FrameGroup中的单个帧上传失败,则整个组将不会被注册。该方法返回未成功注册或上传的帧列表。

# Create a FrameGroup object
frame_group = FrameGroup()

# Create SingleFrame
single_frame = SingleFrame(
source='https://allegro-datasets.s3.amazonaws.com/tutorials/000012.jpg'
)

# Add the first SingleFrame to the FrameGroup.
frame_group['FrameOne'] = single_frame

# The DatasetVersion.add_frames requires a list of frames.
frames = []

frames.append(frame_group)
# Add the FrameGroup to the version
myVersion.add_frames(frames)

访问FrameGroup

要访问一个FrameGroup,请使用DatasetVersion.get_single_frame(), 就像访问SingleFrame时一样:

# Get the FrameGroup
frame_group = DatasetVersion.get_single_frame(
frame_id='f3ed0e09bf23fc947f426a0d254c652c',
dataset_name='MyDataset',
version_name='FrameGroup'
)

更新FrameGroups

更新FrameGroups与更新SingleFrames类似,不同之处在于每个SingleFrame需要使用其名称作为FrameGroup中的键来引用。

frames = []                

# Get the FrameGroup
frame_group = DatasetVersion.get_single_frame(
frame_id='f3ed0e09bf23fc947f426a0d254c652c',
dataset_name='MyDataset',
version_name='FrameGroup'
)

# Add metadata by referencing the name of the SingleFrame in the FrameGroup
frame_group['FrameOne'].metadata['new_key'] = 'new_value'

# Update change to the FrameGroup
frames.append(frame_group)
myVersion.update_frames(frames)

删除帧

要删除一个FrameGroup,请使用DatasetVersion.delete_frames()方法,就像删除SingleFrame时一样,只是这里引用的是FrameGroup。

frames = []                

# Get the FrameGroup
frame_group = DatasetVersion.get_single_frame(
frame_id='f3ed0e09bf23fc947f426a0d254c652c',
dataset_name='MyDataset',
version_name='FrameGroup'
)

# Delete the FrameGroup
frames.append(frame_group)
myVersion.delete_frames(frames)