Supervisely 人像分割数据集格式解析

数据集解压后,目录结构:

├── ds#
│   ├── ann
│   └── img
└── meta.json

注:"#" 取[1, 13]。

数据集的下载方法,请参考:Supervisely 人像分割数据集

如果只是想知道如何读取数据库,如何得到mask,请参考:Supervisely 人像分割数据集格式转换

文件和目录描述:

  • ann: 包含图像标注信息的目录,每张图像对应一个标注文件。
  • img: 包含图像的目录。
  • meta.json: 项目的有关信息,包含预定义的类和标签。

supervisely 中以 Project 为单位,每个 Project 中有若干 dataset。

supervisely 详细格式信息参考:https://docs.supervise.ly/data-organization/import-export/supervisely-format

项目信息 meta.json

{
    "classes": [
        {
            "title": "person_poly",
            "shape": "polygon",
            "color": "#18FF00",
            "geometry_config": {}
        },
        {
            "title": "person_bmp",
            "shape": "bitmap",
            "color": "#FF0099",
            "geometry_config": {}
        },
        {
            "title": "neutral",
            "shape": "polygon",
            "color": "#D2210A",
            "geometry_config": {}
        }
    ],
    "tags": [
        {
            "name": "not-marked-people",
            "value_type": "none",
            "color": "#DF1189"
        },
        {
            "name": "multipart-person",
            "value_type": "none",
            "color": "#131EEC"
        }
    ]
}

字段描述:

  • tags: 字符串列表,可以分配给图像或物体的所有可能的标签
  • classes: 对象列表,所有可能的对象类。每个对象有以下字段:
    • title: 字符串,类的唯一标识符
    • shape: 字符串, ["bitmap", "polygon", "rectangle", "line", "point"] 中的一个
    • color: 字符串,hex颜色值

shape 标注示例:

标注信息

对于每个图像,都有一个带有注释的json文件。

{
    "description": "boy",
       "name": "brothers-family-siblings-boys-50692",
    "tags": [],
    "size": {
        "height": 800,
        "width": 1200
    },
    "objects": […]
}

字段描述:

  • description: 可选,用于存储想要分配给图像的文本。例如,如果要构建一个图像字幕系统,它就非常有用。
  • name: 可选,图像的basename(没有后缀名的文件名)。
  • size: 图像尺寸。大多数情况下,它是用来获得图像尺寸而不实际读取图像,以加快一些数据处理。
  • tags: 字符串列表,图像标签。
  • objects: 对象列表,其格式将在下面描述。

对象列表的元素

对象列表的元素用于描述一个对象,对象的几何形状类型有:

  • bitmap: 位图
  • polygon: 多边形
  • rectangle: 矩形
  • line: 线段
  • point: 点
  • cuboids: 立方体

Bitmap

{
    "description": "",
    "geometryType": "bitmap",
    "labelerLogin": "supervisely",
    "tags": [],
    "classTitle": "person_bmp",
    "bitmap": {
        "data": "…",
        "origin": [
            93,
            309
        ]
    }
}

字段描述:

  • description: 字符串,对象的描述
  • geometryType: 可选,几何形状,在 classTitle字段中有描述
  • labelerLogin: 可选,标注人
  • tags: 字符串列表,对象标签
  • classTitle: 字符串,类的名称,它用于标识来自 meta.json 文件的类形状
  • bitmap: 包含两个字段:
    • origin: 位图左上角坐标(x, y),即位图在图像中的位置
    • data: 字符串,字符串编码表示的位图

你可以使用下面的方法将 bitmap data 数据转换成 numpy

def base64_2_mask(s):
    z = zlib.decompress(base64.b64decode(s))
    n = np.fromstring(z, np.uint8)
    mask = cv2.imdecode(n, cv2.IMREAD_UNCHANGED)[:, :, 3].astype(bool)
    return mask

Polygon

{
    "description": "",
    "geometryType": "polygon",
    "labelerLogin": "supervisely",
    "tags": [],
    "classTitle": "person_poly",
    "points": {
        "exterior": [
            [
                1293,
                1026
            ],
            [
                1294,
                1029
            ],
            …,
            [
                1293,
                1026
            ]
        ],
        "interior": []
    }
}

字段描述:

  • description: 字符串,对象的描述
  • geometryType: 可选,几何形状,在 classTitle字段中有描述
  • labelerLogin: 可选,标注人
  • tags: 字符串列表,对象标签
  • classTitle: 字符串,类的名称,它用于标识来自 meta.json 文件的类形状
  • points: 有两个字段:
    • exterior: 点(x和y坐标)列表,例如:[[x1, y1], [x2, y2], [x3, y3], [x4, y4], ...]。物体的轮廓有这些点定义。
    • inter: 与 exterior 字段相同结构的元素列表。这是定义对象孔的多边形列表。如:铜钱中心的孔洞。
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值