深度学习100问-13:深度学习如何制作个人数据集?
深度学习100问
Author:louwill
Machine Learning Lab
上一节我们谈到深度学习,尤其是计算机视觉方向的一些经典数据集。这些数据除了供我们学习和实验之外,在实际的生产环境下很难起到帮助作用。面对专业领域和定制化场景,我们往往需要自己动手采集和制作数据集。毕竟,有多少人工就有多少智能。数据量越大、数据标注质量越高,训练出来的AI模型才能够越强大。
本节笔者就介绍如何使用一些开源的标注工具来制作自己的深度学习训练数据集。数据标注是一项耗时和费力的工作,在一些专业领域,比如说医学图像的标注,可能标注起来难度更大、专业性更强。
目前开源的深度学习标注工具有很多。像Labelme、LabelImg、Vatic、Sloth、ImageJ、CVAT、Yolo_mark、RectLabel和Labelbox等等。本节就介绍如何使用开源的图像标注工具Labelme来制作个人的训练数据集。至于其它标注工具,大家可自行去搜索尝试。
CVAT语义分割标注
Labelme是MIT的计算机科学和人工智能实验室基于Python和Qt编写的一款开源图像标注工具。我们可以使用Labelme轻松实现分类、检测和分割等视觉任务的图像标注工作。
Labelme的安装非常简单,直接用Python的包安装工具pip即可安装:
pip install labelme
安装完成后直接在命令行输入labelme即可调出gui界面:
调出gui后,可以尝试打开某一张图片或者某一文件夹加载所有图片。打开任意一张图片,选择edit菜单栏下的create polygons进行手动标注,勾勒出每个动物的轮廓,最后点击保存为.json标签文件。
重新打开.json标注文件:
得到.json文件还不够,我们还需要将json转化为mask标签图像,直接在命令行调用labelme提供好的json_to_dataset函数将json进行标签转换:
labelme_json_to_dataset dogcat.json
转换完成后会生成一个标签文件夹,包括原始图像img.png、标签图像label.png、标签可视化图像label_viz.png、标签名称的.txt文件和.yaml格式标签名称文件。
查看label的像素分类值情况:
import numpy as np
from PIL import Image
np.unique(label)
array([0, 1, 2, 3], dtype=uint8)
labelme作为一个开源工具,我们也可以尝试对其源码进行修改或者二次开发来实现定制化的标注功能。labelme代码目录结构:
labelme在PASCAL VOC数据集上的实例分割标注示例:
参考资料:
https://github.com/wkentaro/labelme