很多时候拿到深度学习的网路都是跑下公开数据集,有的库例如pytorch、TensorFlow、caffe2都会将一些数据集集成到框架中,直接调用就可以使用。我们更多的时候想要使用模型检测自己的数据集。首先你要选择一个标注软件,一般用的比较多的是LabelImg和Labelme。LabelImg生成的是xml文件数据而Labelme生成的是json 数据格式。有的单位也会使用自己开发的标注软件和自己的云服务器对接,这样能够更加细化标志任务。我平时除了目标检测外还会用到分割任务,因此我用Labelme更加多一些。LabelImg数据格式可以直接用于网上公开的yolo系列,因此选择哪个标注软件完全看个人的使用习惯。
如果你是ubuntu系统直接安装,如果是Windows系统可以直接使用labelme的exe文件,官网有下载。
pip install labelme
终端打开
labelme
点击Open Dir打开你要表述的数据集
鼠标右键选择Create Rectangle来标注矩形框,或者使用快捷键ctrl+R快速画框
这里我标注2个分类一个为face一个为do
标注完当前张按D键快速到下一章,其中会跳出json文件保存路径位置,我一般就保存在当前图像路径下,当然规范化的还是选一个文件夹保存文件。
可以看到文件下生成一个json数据文件大致结构如下,imageData是截取部分,保存了图像数据的base64格式,即如果你的原图丢了没关系,后面说明如何单用一个json文件就能够生成图像,这个也是我喜欢用labelme的原因之一,有的时候标签在 图像找不到了,非常的苦恼啊。
{"version": "5.0.1",
"flags": {},
"shapes": [
{
"label": "face",
"points": [
[
130.17525773195877,
28.350515463917528
],
[
293.0618556701031,
222.16494845360825
]
],
"group_id": null,
"shape_type": "rectangle",
"flags": {}
},
{
"label": "dog",
"points": [
[
52.34020618556701,
232.47422680412373
],
[
195.12371134020617,
361.8556701030928
]
],
"group_id": null,
"shape_type": "rectangle",
"flags": {}
}
],
"imagePath": "000001.jpg",
"imageData": "/9j***********************",
"imageHeight": 500,
"imageWidth": 353
}
至此标注的工作大致流程就这样,标注非常的枯草乏味,因此标注完以后需要回头核查下数据,有没标注错误的。毕竟“再好的算法也经不起烂数据的摧残!”
下一篇介绍如何转换这些json数据到网络能够训练的数据格式。



