跳转至

语言特性

数据是人工智能的基石。数据获取、传播和使用的效率直接影响科技发展和应用进步。在人工智能漫长历史中,大量的数据集被制造和发布推动整个领域的发展。然而,这些数据集基于不同的形式定义,使得其在传播、融合和使用时成本较高。这通常表现为每个使用者/团队需要制定一套新的格式,开发定制化工具或脚本将新的数据集标准化合并到已有的工作流。

为了克服上述问题,我们设计了一套数据集描述语言DSDL(Data Set Description Language)。

1. 设计目标

DSDL的设计目标总共有三点:通用性(Generic)便携性(Portable),以及可拓展性(Extensible)。三种特性总称为GPE

1.1 通用性

该语言主要目的是提供一种统一表示的标准,可以覆盖各个领域的人工智能数据,而不是基于特定的一种任务或者某个领域设计。该语言应该可以用一致的格式来表达不同模态和结构的数据。

1.2 便携性

写完无需修改,随处分发。

数据集描述可以被广泛的分发和交换,不需要修改就可以在各种环境下使用。这一目标的实现对于建立开发繁荣生态至关重要。为此我们需要仔细检查实现细节,使其对底层设施或组织无感知,从而去除基于特定假设的无必要依赖。

1.3 可拓展性

在不需要修改核心标准的情况下可以拓展表述的边界。对于C++或者Python等编程语言,应用边界可以通过使用链接库或者软件包得以显著拓展,而核心语法可以在很长的时间内保持稳定。基于链接库和包,可以形成丰富的生态系统,使对应语言可以长时间保持活跃度和发展。

2. 设计总览

数据集本质上是存储在永久存储中的数据结构。通常由非结构化目标(如图像、视频、音频、文本等)和与之关联的标注组成。这些元素按照特定的方式组合为一个数据集。

值得注意的是,上述提到的非结构化目标通常包含大量的数据。为了方便数据的快速分发,我们的设计将一个数据集的结构化描述与非结构化内容分离开。

下面是语言设计的全面总结:

2.1 基础数据模型

DSDL使用基本元素的集合来描述一个数据集,基本元素由structs, lists, sets等容器组成。

  • 基础元素(Basic elements) :数据集描述中的独立单元,不仅包含了诸如数字、字符串等基础类型,也包含了那些可以便于目标定位、标注结果表达的元素。
  • 非结构化目标(Unstructured objects):例如图像、视频、音频、文本等特殊的基本元素,因为他们在数据集描述中是不可见的。具体而言,非结构化目标由目标定位器表示,用来指定它的存放位置而不是将整个媒体文件放入描述中。另外,可选择的额外描述符可以用来提供目标的额外信息,例如一个图像的格式或者分辨率。
  • 聚合体(Aggregates):将基础元素组合成一个数据结构。DSDL提供list和struct类型来表示数据结构。具体而言,单个样本由一个结构体表示(多个字段的聚合),而数据集又由一个样本列表组成。

2.2 拓展类型系统

在DSDL中,所有的元素和结构体单元都有类型。

DSDL采用了一种简单而易拓展的类型系统。具体地,DSDL有三种类型:

  • 基础类型(Primitive types):包含布尔类型、数字、字符串等基础元素值的类型。 DSDL提供了基础类型的统一大集合。
  • 非结构目标类(Unstructured object classes):非结构化目标的抽象。例如:图像、视频、音频、点云、文本等等。这些目标尽管内部结构丰富多样,但在数据集定义中会被当成不可分割的单元。DSDL提供一系列预定义好的非结构化目标类集合,覆盖常用的应用场景,同时允许开源力量拓展该集合,通过最小接口集合注册非结构化目标类达到这一目的。
  • 结构体类(Struct classes):DSDL中聚合数据结构的抽象。结构体类中的每个实例被称为一个结构体(struct),包含多个字段,每个字段有自己类型。结构体的一个重要应用是表述数据样本。DSDL为标准库中的常见任务提供一套预定义的结构体类,同时允许用户针对特殊任务自定义结构体类。

注意:类型必须在使用前被定义(无论是内置类型、第三方定义类型,又或者是用户自定义类型)。循环引用(circular references)在当前DSDL中是不允许的。

2.3 目标定位器 (Object locators)

如前所述,非结构化目标并没有完全嵌入到数据集描述中。 而由目标定位器来表示。具体地,目标定位器是一种特殊格式的字符串类型。当对应的目标被加载时会经过DSDL解析器转换成一个真正的地址。

目标定位器的引入使用分离数据集中结构化描述和非结构化媒体文件的关键。这种方式使得无需移动大体量的媒体数据,使数据集描述分发更加轻量化。与此同时允许快速的对数据集进行操作,如:组合多个集合、合并属性或者取某个子集。

2.4 基于YAML或者JSON

DSDL属于特定领域的语言,基于当前流行的数据交互语言YAML或者JSON进行定义。 需要注意的是,YAML或JSON中的元素在语言级别上并不与特定的含义相关联。而我们通过赋予这些元素以特定语义,DSDL可以以一种有意义的方式对数据集进行描述。

这种设计使得使用者可以使用YAML和JSON语言对应的丰富工具系统。基于这些工具,可以很容易地构建一套完整系统:支持解析、校验和查询等功能,并基于互联网生态系统进行便捷地交互。