labelme安装使用,以及标注我们自己的数据

使用labelme对图像进行语义分割标注

写在前面

这个文档旨在教大家如何使用labelme软件进行语义分割标签的标注。

语义标注

cityscapes里面有效的标注是19类,还有很多虽然标注了,但是是无效的类别。

序号 名称 category 说明(CS的官方说明翻译而来)
0 road(道路) flat 汽车通常行驶的地面部分,即所有车道、所有方向、所有街道。包括道路上的标记。仅由标线与主干道划定的区域(无纹理变化)也是道路,如自行车道、环岛车道或停车位。这个标签不包括路缘石。
1 sidewalk(人行道) flat 指定给行人或骑自行车者的部分地面。由一些障碍物,如路缘石或杆子(可能很小),而不仅仅是由标记来划分的道路。与道路相比,通常被抬高。通常位于道路的两侧。这个标签包括一个可能限定的路边,交通岛(可行走的部分),或行人区(通常在白天不允许汽车行驶的地方)。
parking (停车场) flat 停车场和车道。不是用于常规驾驶,而是用于停放车辆。与道路的质地不同。在车道未与人行道分开的模糊情况下(如建筑物入口),标记为人行道。
rail track(铁轨) flat 所有不能被汽车驾驶的轨道,如地铁和火车轨道,而有轨电车轨道通常可以被汽车驾驶,因此是道路的一部分。
2 building(建筑) construction 建筑物,摩天大楼,房屋,公共汽车站建筑,车库,汽车港口。如果建筑物有一堵可以看穿的玻璃墙,这堵墙仍然是建筑物。包括附属于建筑物的脚手架。
3 wall construction 独立的立墙。不是建筑物的一部分。
4 fence(栅栏) construction 栅栏,包括任何孔洞。
guard rail 所有类型的护栏/碰撞屏障。
bridge 桥。只有桥。栅栏、上面的人或车辆是单独标注的。
tunnel 隧道墙和 "黑暗"。没有车辆。
5 pole(杆) object 主要是垂直方向的小杆。如:标志杆、交通灯杆。如果杆子有一个水平部分(通常为交通灯杆),这部分也被认为是杆子。如果在杆子上安装有既不是交通灯也不是交通标志的东西(例如路灯),并且其直径(以像素计)最多为杆子直径的两倍,那么这些东西也可能被标为杆子。如果它们更大,则被标记为静态。
pole group 多个杆子,单独标注起来很麻烦。如果两根柱子之间的空隙最多只有一个柱子的宽度,那么使用这种标签是可以的。
6 traffic light object 没有杆子的交通灯箱。
7 traffic sign object 由国家/城市当局安装的标志,通常在日常交通场景中为司机/骑车人/行人提供信息,例如,交通标志、停车标志、方向标志--不包括其杆子。没有广告/商业标志。只有标志的正面包含信息。背面是静态的。请注意,附着在建筑物上的商业标志成为建筑物,附着在电线杆上或自己站立的标志成为静态的。
8 vegetation(植被) nature 树木、树篱、各种垂直植被。附着在建筑物上的植物通常不单独注解,也标明建筑物。如果生长在墙壁或建筑物的侧面,如果覆盖了表面的很大一部分(超过20%),则标记为植被。
9 terrain(地形) nature 草,各种水平植被,土壤或沙子。这些区域是不允许在上面行驶的。这个标签包括一个可能是划定的路边。单个的草茎不需要注释,得到它们所生长的区域的标签。
10 sky(天空) sky 开放的天空,没有树叶。包括在天空前面的细电线。
11 person(行人) human 一个符合以下标准的人。假设这个人移动了1米的距离,然后又停下来。如果这个人会走路,标签就是人,否则就不是。例如,人在地上、长椅上、椅子上行走、站立或坐着。这个类别还包括幼儿、推着自行车的人或站在自行车旁边,两只脚在自行车的同一侧。这类人包括由人携带的任何东西,如背包,但不包括接触地面的物品,如手推车。
12 rider human 一个会使用某种设备移动1米距离的人。包括,自行车、摩托车、滑板车、滑板、马、轮滑、轮椅、道路清洁车、无车顶汽车的骑手/司机。注意,有车顶的汽车的可见司机只能通过窗户看到。由于洞口没有标示,所以人被列入汽车标签中。
13 car(汽车) vehicle 轿车、吉普车、SUV、有连续车身形状的面包车、大篷车,没有其他拖车。
14 truck vehicle 卡车,箱式卡车,皮卡。包括其拖车。后部/装载区与驾驶室物理隔离。
15 bus vehicle 9人以上的巴士,公共运输或长途运输。
16 train vehicle 轨道上的车辆,如有轨电车、火车。
17 motorcycle vehicle 摩托车、轻便摩托车、没有司机的踏板车(那是骑手,见上文)。
18 bicycle vehicle 没有司机的自行车(那是骑手,见上文)。
caravan 像卡车一样,但后面主要是用来居住/睡觉的。包括大篷车拖车。
trailer 拖车通常由汽车拉动。请注意,卡车拖车的标签是卡车,大篷车拖车的标签是大篷车,自行车或马拖车的标签是动态。
ground 所有其他形式的不符合上述任何一条的水平地面结构。例如汽车和行人全天共用的区域,平坦但由路缘石与道路隔开的环岛,交通岛的高架部分,水。平坦区域的虚空标签。
dynamic 第二天/一小时/一分钟后可能不再存在的东西。可移动的垃圾桶、手推车、袋子、轮椅、动物。
static 背景中无法区分的杂物。不符合上述任何一项的物体。例如,小我私家车辆的可见部分、山、路灯、标志的背面。另外,图像中相当小的区域也是上述的一些类别,但要精确标注却很麻烦,可能会被注释为静态。

关于以上的类别的具体的含义,可以见CS的这个链接

上面表格中的红色部分是CS虽然标记了的,但是并没有作为真实的类别去考虑,也就是作为无效的类别。

对我们的问题而言,标注很多类需要巨大的工作量,所以为了简便起见,只标注八类,如下表格所示

序号 名称 category 注意事项
0 road (道路) flat 注意和sidewalk以及parking进行区分
2 building(建筑) construction
5 pole(杆) object
7 sign object 原来为traffic sign,只要是sign都可以标注,详见cs:由国家/城市当局安装的标志,通常在日常交通场景中为司机/骑车人/行人提供信息,例如,交通标志、停车标志、方向标志--不包括其杆子。没有广告/商业标志。只有标志的正面包含信息。背面是静态的。请注意,附着在建筑物上的商业标志成为建筑物,附着在电线杆上或自己站立的标志成为静态的。交通标识的背面不标记
8 vegetation nature 注意和terrain的区别
10 sky(天空) sky
11 person(行人) human rider不算行人,哪怕推着自行车也不行
13 car(汽车) vehicle

软件安装

label是一个开源的软件,通过conda配置环境,并且进行安装,链接。视频教程链接

软件使用

下载修改之后的仓库

软件安装完成之后,需要这个链接下载labelme这个修改过之后的代码仓库,切换到该仓库下的examples\semantic_segmentation目录下,然后运行启动labelme的,并且加载对应的标签的命令

# linux or mac用户:
labelme 需要标注的数据路径 --labels labels.txt --nodata --validatelabel exact --config '{shift_auto_shape_color: -2}'
# 对windows用户而言,需要将最后config的单引号修改为双引号
labelme 需要标注的数据路径 --labels labels.txt --nodata --validatelabel exact --config "{shift_auto_shape_color: -2}"

比如我将需要标注的数据和仓库放到同一目录,运行命令如下

labelme ../../../../source_data3 --labels labels.txt --nodata --validatelabel exact --config "{shift_auto_shape_color: -2}"

进行标注

标注过程见教程链接.

  1. rider不是person,可以不进行标注
  2. sign的背面不是sign

数据可视化

python ./labelme2voc.py 包含json的文件夹 存储的诸如Pascal voc的路径 --labels labels.txt

posted on 2021-07-06 15:20  YongjieShi  阅读(684)  评论(0编辑  收藏  举报

导航