时间序列标注
使用这个通用模板标注任何类型的时间序列数据。
交互式模板预览
标注配置
多元时间序列标注的示例项目配置:
<View>
<TimeSeriesLabels name="label" toName="ts">
<Label value="Run"/>
<Label value="Walk"/>
</TimeSeriesLabels>
<TimeSeries name="ts" valueType="url" value="$csv_url" timeColumn="time">
<Channel column="sensorone" />
<Channel column="sensortwo" />
</TimeSeries>
</View>
关于标注配置
所有标注配置必须包含在View标签内。
使用TimeSeriesLabels控制标签来高亮并标注时间序列图中的特定区间:
<TimeSeriesLabels name="label" toName="ts">
<Label value="Run"/>
<Label value="Walk"/>
</TimeSeriesLabels>
该标签通过toName参数与TimeSeries对象标签相关联。
使用TimeSeries对象标签来显示时间序列数据和通道:
<TimeSeries name="ts" valueType="url" value="$csv_url" timeColumn="time">
<Channel column="sensorone" />
<Channel column="sensortwo" />
</TimeSeries>
valueType="url"参数表示Label Studio期望JSON格式任务中包含CSV文件的链接。timeColumn参数指定数据集中用作时间X轴的列。如果未指定timeColumn,Label Studio将使用递增整数值作为X轴:0, 1, 2, ...。
输入数据
标注配置的示例CSV文件输入如下所示:
time,sensorone,sensortwo
0,10,20
1,20,30
2,30,40
相关标签
输入格式
Label Studio 支持多种时间序列输入类型:
- 带或不带标题的CSV文件
- 带或不带标题的TSV文件
- JSON
CSV示例
例如,对于一个包含3列的CSV文件:
time,sensorone,sensortwo
0.0,3.86,0.00
0.1,2.05,2.11
0.2,1.64,5.85
然后,创建一个JSON文件,引用CSV文件的URL以上传到Label Studio:
[ { "data": { "csv_url": "http://example.com/path/to/file.csv" } } ]
由于JSON文件引用了一个URL,且该URL在名为csv_url的字段中指定,因此请在你的标注配置中按如下方式设置TimeSeries对象标签:
<TimeSeries name="ts" valueType="url" value="$csv_url" sep="," timeColumn="time">
<Channel column="sensorone" />
</TimeSeries>
在本例中,标签具有valueType="url"属性,因为CSV文件是通过URL引用的。详见如何导入数据。
TSV 示例
如果您正在上传制表符分隔的文件,请在TimeSeries标签上使用sep属性来指定制表符分隔。
例如,在您的标注配置中按如下方式设置TimeSeries对象标签:
<TimeSeries name="ts" valueType="url" value="$csv_url" sep="\t" timeColumn="time">
<Channel column="0"/>
</TimeSeries>
无表头CSV与TSV
无表头CSV/TSV使用方式的主要区别在于另一种命名列的方法。由于文件没有表头且无法获知列名,因此需改用列索引。例如,要将第一列用作时间列,需指定。对于标签中的column属性也同样适用。
JSON
Label Studio中的所有任务都以JSON格式存储,这是Label Studio的原生格式。
valueType="url"当您为TimeSeries标签使用
valueType="url"并导入CSV文件时,Label Studio会自动创建一个JSON任务,其内容示例如下:{ "csv": "http://localhost:8080/data/upload/my-import-file.csv" }valueType="json"您也可以通过创建并导入如下示例所示的JSON结构,直接使用Label Studio的JSON格式,其中每个键都指定了时间和通道:
{ "ts": { "time": [ 15.97, 15.85, 25.94 ], "sensorone": [ 13.86, 29.05, 64.90 ], "sensortwo": [ 21.00, 15.18, 35.85 ] } }
输出格式示例
标注者为时间序列任务添加标签。Label Studio 使用JSON结构表示每个已完成的标注。每个标注都有一个result字段,对于时间序列标注项目,示例如下:
{
"annotations": [{
"result": [
{
"value": {
"start": 1592250751951.8074,
"end": 1592251071946.638,
"instant": false,
"timeserieslabels": [
"Run"
]
},
"id": "S1DkU7FSku",
"from_name": "label",
"to_name": "ts",
"type": "timeserieslabels"
},
{
"value": {
"start": 1592251231975.601,
"end": 1592251461993.5276,
"instant": false,
"timeserieslabels": [
"Run"
]
},
"id": "XvagJo87mr",
"from_name": "label",
"to_name": "ts",
"type": "timeserieslabels"
}
]
}]
}
增强此模板
如果想增强此模板,可以对标签配置进行多项修改。
单个项目中的多时间序列
如果想在一个项目中使用多个时间序列数据集,必须将CSV文件以URL形式提供,并导入一个JSON格式的文件,其中包含引用这些CSV文件的任务。
例如,对于可以引用两组时间序列数据的任务:
[ { "data": { "csv_file1": "http://example.com/path/file1.csv", "csv_file2": "http://example.com/path/file2.csv" } } ]
然后您可以设置以下标注配置来引用每个CSV文件,并能够在同一个标注界面上对它们进行标注:
<View>
<Header value="First time series" />
<TimeSeriesLabels name="lbl-1" toName="ts-1">
<Label value="Label 1" />
</TimeSeriesLabels>
<TimeSeries name="ts-1" timeColumn="0" value="$csv_file1">
<Channel column="1" />
</TimeSeries>
<Header value="Second time series" />
<TimeSeriesLabels name="lbl-2" toName="ts-2">
<Label value="Label 2" />
</TimeSeriesLabels>
<TimeSeries name="ts-2" timeColumn="0" value="$csv_file2">
<Channel column="1" />
</TimeSeries>
</View>
TimeSeries标签中的value参数用于引用包含CSV文件URL的JSON键。