|
@@ -0,0 +1,88 @@
|
|
|
|
|
+## 3 使用LabelMe标注「语义分割」任务数据
|
|
|
|
|
+语义分割中常用的数据集是CityScape和COCO,此小节主要讲述CityScape数据集在LabelMe上标注的使用,有关COCO部分请参考 2.3 小节中有关Mask RCNN部分。
|
|
|
|
|
+
|
|
|
|
|
+### 3.1 准备工作
|
|
|
|
|
+
|
|
|
|
|
+* **3.1.1** 对收集的图像划分为训练、验证(非必须)、测试三个部分的数据集,分别存放于对应的文件夹中
|
|
|
|
|
+
|
|
|
|
|
+* **3.1.2** 创建与图像文件夹相对应的文件夹,用于存储标注的json文件
|
|
|
|
|
+
|
|
|
|
|
+* **3.1.3** 点击”Open Dir“按钮,选择需要标注的图像所在的文件夹打开,则”File List“对话框中会显示所有图像所对应的绝对路径
|
|
|
|
|
+
|
|
|
|
|
+### 3.2 标注
|
|
|
|
|
+
|
|
|
|
|
+* **3.2.1** 点击右侧的“Create Polygons”以打点的方式圈出目标的轮廓,并在弹出的对话框中写明对应label(当label已存在时点击即可),具体如下提所示:
|
|
|
|
|
+
|
|
|
|
|
+<div align=center><img width="800" height="450" src="./pics/detection5.png"/></div>
|
|
|
|
|
+
|
|
|
|
|
+当框标注错误时,可点击右侧的“Edit Polygons”再点击标注框,通过拖拉进行修改,也可再点击“Delete Polygon”进行删除。
|
|
|
|
|
+
|
|
|
|
|
+* **3.2.2** 点击右侧”Save“,将标注结果保存到***3.1.1***中创建的文件夹中
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+## 3.3 对LabelMe标注数据的转换
|
|
|
|
|
+语义分割中常用的数据集是CityScape和COCO,此小节主要讲述CityScape数据集的转换,有关COCO部分请参考 2.4 小节。由于LabelMe标注的数据与CityScape数据集所需的格式不一致,所以需要将LabelMe数据集转换为CityScape数据集格式。
|
|
|
|
|
+
|
|
|
|
|
+CityScape的数据目录结构如下:
|
|
|
|
|
+```
|
|
|
|
|
+data/mydataset/
|
|
|
|
|
+|-- gtFine
|
|
|
|
|
+ |-- test
|
|
|
|
|
+ |-- train
|
|
|
|
|
+ |-- val
|
|
|
|
|
+|-- leftImg8bit
|
|
|
|
|
+ |-- test
|
|
|
|
|
+ |-- train
|
|
|
|
|
+ |-- val
|
|
|
|
|
+```
|
|
|
|
|
+其中,`gtFine`用于存放json文件,`leftImg8bit`用于存放图像文件。
|
|
|
|
|
+
|
|
|
|
|
+针对训练、验证(非必须)、测试三个部分的数据集,分别在命令行中执行下述命令进行转换:
|
|
|
|
|
+```cmd
|
|
|
|
|
+# 进入Anaconda环境后,安装下述python包
|
|
|
|
|
+# 安装numpy
|
|
|
|
|
+pip install numpy
|
|
|
|
|
+# 转换
|
|
|
|
|
+cd ./DataAnnotation
|
|
|
|
|
+python ./labelme2cityscape.py \
|
|
|
|
|
+ --json_input_dir ~/Users/json/ \
|
|
|
|
|
+ --output_dir ~/Users/cityscape/ \
|
|
|
|
|
+# --json_input_dir:LabelMe所标注文件的文件夹路径
|
|
|
|
|
+# --output_dir:最终转换的文件的存放路径
|
|
|
|
|
+
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
|
|
+转换后的标注文件为每张图像对应一个.json文件,将训练、验证(非必须)、测试的转换结果分别放入gtFine的train/val/test中,同时将各个文件夹下json文件所对应的图像文件分别放入leftImg8bit的train/val/test中。转换后的.json文件的格式如下所示:
|
|
|
|
|
+```
|
|
|
|
|
+{
|
|
|
|
|
+ "imgHeight": int,
|
|
|
|
|
+ "imgWidth": int,
|
|
|
|
|
+ "objects": [
|
|
|
|
|
+ {
|
|
|
|
|
+ "label": str,
|
|
|
|
|
+ "polygon": [
|
|
|
|
|
+ [
|
|
|
|
|
+ int,
|
|
|
|
|
+ int
|
|
|
|
|
+ ],
|
|
|
|
|
+ [
|
|
|
|
|
+ int,
|
|
|
|
|
+ int
|
|
|
|
|
+ ],
|
|
|
|
|
+ ...
|
|
|
|
|
+ ]
|
|
|
|
|
+ ...
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+}
|
|
|
|
|
+```
|
|
|
|
|
+相关标签含义:
|
|
|
|
|
+
|
|
|
|
|
+|标签|备注|
|
|
|
|
|
+|-----|-----|
|
|
|
|
|
+|objects| 目标信息的列表|
|
|
|
|
|
+|label| 目标类别|
|
|
|
|
|
+|polygon| 目标坐标的列表,有多边形点的所有坐标组成|
|
|
|
|
|
+|imageHeight| 图像高度|
|
|
|
|
|
+|imageWidth| 图像宽度|
|