自制数据集之labelme软件的使用,深度学习入门(1)

自制数据集之labelme软件的使用,深度学习入门(1)

  • 说明
    • 一.安装labelme
    • 二.使用labelme标注
    • 三 解析json文件
    • 四、批处理json文件夹

说明

因为之前做语义分割项目需要自己制作数据集,故了解到labelme标注软件,语义分割需要标注出同类别的信息,使用labelme过程中的一些坑和心得记录下来。笔者的环境,win10+python3.7+tensorflow2.1.0+labelme 4.5.9

一.安装labelme

安装labelme比较简单,我是在win10+anaconda环境下,打开anaconda prompt(或者win+r+cmd 然后键入:activate base(你的python环境),推荐这种)终端,直接pip install labelme即可,若是网络波动下载缓慢,可以使用国内源进行下载。

1.可以直接pip

pip install labelme

2.网络问题的话可以指定国内源并且可以指定版本,以豆瓣源为例

pip install -i https://pypi.douban.com/simple --trusted-host pypi.douban.com labelme=4.5.9

安装之后直接在终端键入labelme即可打开labelme界面

可能出现的问题1:
在win+r+cmd activate base(你的python环境)时出现activate既不是外部命令,也不是可运行程序等等那就是没有把activate bat脚本配置到Path环境变量里,这一步需要找到安装anaconda时的activate脚本所在的位置,事实上activate和conda,deactivate这些脚本存放的位置都是在一起的,我的存放位置是:D:\ProgramData\Anaconda3\condabin,相对位置都是一样的,比较好找。

二.使用labelme标注

终端键入labelme即可使用labelme标注,点击open dir可以对文件夹中的文件进行标注,edit菜单栏下也有不同的标注方式,多点标注,长方形标注,正方形并标注等等。点击save即可保存为同名的json配置文件。

标注注意事项:
如果是面对项目工程量大的标注,需要多人标注,那么标注的顺序是很重要的,所有人必须有同样的先后顺序的标注。在labelme中,第一个标注的物体类别是红色框框起来的,第二个是绿色框,如下图所示,我先标了火腿肠所以是用红色框起来的,后标的积木是用绿色框起来的,如果我和我的队友没有协商好,他先标了积木后标了火腿肠,那么在解析json文件后是需要编写脚本重新将两个数据集合并的,增加了许多不必要的麻烦。
自制数据集之labelme软件的使用,深度学习入门(1)_第1张图片

三 解析json文件

对于上一步生成的json文件,labelme中为我们提供了脚本来解析json文件,键入如下即可将json文件生成对应的同名目录

labelme_json_to_dataset   C:\Users\Administrator\Desktop\test\1_img.json

labelme_json_to_dataset解析json的脚本,后面的是待解析json文件的绝对路径

解析后的文件夹如图所示:
自制数据集之labelme软件的使用,深度学习入门(1)_第2张图片
其中的img.png即为喂给神经网络待学习的数据,而label.png是所谓的标准答案,也就是标签,与目标检测不同的是,语义分割的label是一张图像而不是具体的数值或字段。

直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC语法后生成一个完美的目录。

四、批处理json文件夹

可以想象的是,一个个接送文件的处理是及其麻烦的,对此,我们可以方便的编写python脚本来进行json文件的批处理,我们需要单独建一个文件夹里面存放所有的json文件,具体脚本代码如下:

def batch_handle_json(path):  # 批处理json文件:  path为json文件夹存放的绝对路径
    json_file = os.listdir(path)
    os.system("activate base")  # 在当前进程打开子进程执行command命令,相当于在命令行下敲命令
    for file in json_file:
        os.system("labelme_json_to_dataset.exe %s"%(path + '/' + file))  # 格式化输出

你可能感兴趣的:(深度学习,深度学习,tensorflow)