LabelMe使用

LabelMe 可用于实例分割,语义分割,目标检测,分类任务的数据集标注工作。

在线标注版本:http://labelme2.csail.mit.edu/Release3.0/index.php?message=1
python 版本:https://github.com/wkentaro/labelme

官方文档:

分类标注:Classification
目标检测标注:Object Detection
语义分割标注:Semantic Segmentation
实例分割标注:Instance Segmentation
视频标注:Video Annotation
其他形式标注:LabelMe Primitives

python版本使用

使用环境:Anaconda
python版本:2.7 / 3.6

1. 安装

# python2.7版本安装
conda create --name=labelme python=2.7
source activate labelme
# conda install -c conda-forge pyside2
conda install pyqt
pip install labelme
# if you'd like to use the latest version. run below:
# pip install git+https://github.com/wkentaro/labelme.git

# python3.6版本安装
conda create --name=labelme python=3.6
source activate labelme
# conda install -c conda-forge pyside2
# conda install pyqt
pip install pyqt5  # pyqt5 can be installed via pip on python3
pip install labelme

2. 使用

# 查看labelme使用方法
labelme --help

(labelme) @supermicro:~$ labelme --help
usage: labelme [-h] [--version] [--reset-config]
               [--logger-level {debug,info,warning,fatal,error}]
               [--output OUTPUT] [--config CONFIG_FILE] [--nodata]
               [--autosave] [--nosortlabels] [--flags FLAGS]
               [--labelflags LABEL_FLAGS] [--labels LABELS]
               [--validatelabel {exact,instance}] [--keep-prev]
               [--epsilon EPSILON]
               [filename]

positional arguments:
  filename              image or label filename

optional arguments:
  -h, --help            show this help message and exit
  --version, -V         show version
  --reset-config        reset qt config
  --logger-level {debug,info,warning,fatal,error}
                        logger level
  --output OUTPUT, -O OUTPUT, -o OUTPUT
                        output file or directory (if it ends with .json it is
                        recognized as file, else as directory)
  --config CONFIG_FILE  config file (default: /home/zyy/.labelmerc)
  --nodata              stop storing image data to JSON file
  --autosave            auto save
  --nosortlabels        stop sorting labels
  --flags FLAGS         comma separated list of flags OR file containing flags
  --labelflags LABEL_FLAGS
                        yaml string of label specific flags OR file containing
                        json string of label specific flags (ex. {person-\d+:
                        [male, tall], dog-\d+: [black, brown, white], .*:
                        [occluded]})
  --labels LABELS       comma separated list of labels OR file containing
                        labels
  --validatelabel {exact,instance}
                        label validation types
  --keep-prev           keep annotation of previous frame
  --epsilon EPSILON     epsilon to find nearest vertex on canvas
  • -h–help 显示帮助信息
  • -V--version 显示 labelme 版本号
  • --output:指定输出标注文件的保存路径,如果路径以 .json 结尾,则保存为一个 .json 文件,否则默认保存为文件夹形式
  • --labels:用于指定标签名称,可以是用逗号分隔的 label list,也可以是包含标签的 txt 文件
  • --nodata:不保存图像到 JSON 文件

3. 分割任务标注示例

终端直接输入:

# 直接打开labelme
labelme
  • open:打开某一张图片
  • openDir:打开某一文件夹,加载其目录下的所有图片

通过 open 读取图片,选择 create polygons 手动进行勾画,全部完成后保存为 json 文件(在当前目录下):
在这里插入图片描述
右键单击可以选择不同的标注方式,比如 polygons 用于分割,rectangle 用于检测。

如果是实例分割,一个图像中有多只猫,标签的命名规则为:cat1、cat2 …,如果是语义分割就不用区分了。
在这里插入图片描述
labelme 可以进行多类别标注,Label List 显示当前已有的类别,Polygon Labels 显示当前已标注的区域,通过勾选 Polygon Labels 前面的 “√”,可以选择显示特定的分割区域:
在这里插入图片描述
要得到 label 文件,需要将 json 转换为单通道的 image,终端输入命令:

# 进入json文件保存目录
cd /path/to/your/jsonfile
# 转换
labelme_json_to_dataset <文件名>.json
# 比如
labelme_json_to_dataset cat.1.json

将在当前目录下得到一个文件夹 cat_1_json,包括四个文件:

  • img.png:原始图像
  • label.png:标签,uint8
  • label_viz.png:可视化的带标签图像
  • label_names.txt:记录了标签的名称

img.png
img.png
label.png:
label.png
label_viz.png:
label_viz.png

4. 其他说明

(1)启动 labelme 的方式:

# 直接打开labelme
labelme

# 打开某个文件夹,加载该文件夹下及其子文件夹下的所有图片
labelme path/to/imgfile/

# 直接打开指定的图片
labelme cat.1.jpg

# 标注保存为json文件同时自动关闭gui窗口
labelme cat.1.jpg -O cat.1.jpg.json

# 指定label list
labelme cat.1.jpg \
  --labels cat,eye
  # 或者传入文件形式的label list
  --labels labels.txt

(2)将 JSON 文件转换为 image 和 label

# 在当前目录下生成一个文件夹cat_1_json
labelme_json_to_dataset cat.1.json

# 指定生成文件夹的名字为cat1
labelme_json_to_dataset cat.1.json -o cat1

(3)可视化 json 文件:

# 终端输入
labelme_draw_json cat.1.json

在这里插入图片描述

5. 加载标签png

label.png 用 scipy.misc.imread 或者 skimage.io.imread 读取可能会出错,推荐用 PIL.Image.open 读取:

>>> import numpy as np
>>> import PIL.Image

>>> label_png = 'imgs/cat1/label.png' # 设置标签文件路径
>>> lbl = np.asarray(PIL.Image.open(label_png))
>>> print(lbl.dtype)
dtype('uint8')
>>> np.unique(lbl)
array([0, 1, 2], dtype=uint8)
>>> lbl.shape
(280, 300)

查看 label.png:

# 终端输入
labelme_draw_label_png imgs/cat1/label.png

在这里插入图片描述

6. 生成VOC格式的标签数据

在下载的 labelme 的 zip 包里,路径 labelme/examples/semantic_segmentation 下,data_annotated 是原图和对应的 JSON 文件,data_dataset_voc 是 voc 格式的输出结果,labelme2voc.py 是转换的主函数,labels.txt 是标签类别。

1)文件组织形式如下:

  • *_annotated 存放原图和已经生成的对应 JSON 文件
  • 将 labelme 工程文件下的 labelme2voc.py 复制过来
  • 自己写一个 *.txt 文件,内容是分割的标签,最前面加上 __ignore___background_
    labels.txt 文件内容
    文件组织格式
    文件组织格式

2)转换为voc数据格式:

# 终端输入
./labelme2voc.py [图像路径] [voc文件夹名称] --labels [label list]

# 比如
./labelme2voc.py cat_annotated cat_dataset_voc --labels labels.txt

在当前目录下自动生成 cat_dataset_voc 文件夹(转换前确保不要有重名文件夹,否则会报错)
在这里插入图片描述
在这里插入图片描述

cat_dataset_voc 文件夹内容:
在这里插入图片描述
转换为 COCO 数据格式,同样的套路:

./labelme2coco.py data_annotated data_dataset_coco --labels labels.txt
  • 32
    点赞
  • 223
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 30
    评论
Labelme是一款开源的图像标注工具,可用于标注图像的对象、区域、关键点等。下面是Labelme使用教程: 1. 安装Labelme 可以在官网上下载Labelme的源代码,也可以使用pip安装,命令如下: ```bash pip install labelme ``` 2. 打开Labelme 在命令行输入 `labelme` 启动Labelme,也可以在Anaconda Prompt输入 `labelme` 命令。 3. 创建新的标注项目 在Labelme,一个标注项目包含多张需要标注的图片,可以通过以下步骤创建新的标注项目: - 点击 `File` 菜单,选择 `New`,或者使用快捷键 `Ctrl+N`。 - 在弹出的对话框选择需要标注的图片所在的文件夹,并设置标注项目的名称和保存路径。 - 点击 `OK` 按钮,即可开始标注。 4. 标注图片 在Labelme,可以对图片进行多种类型的标注,包括矩形框、多边形、线条、点等。标注步骤如下: - 在左侧的工具栏选择需要使用的标注工具,如矩形框、多边形等。 - 在图片上用鼠标进行标注,可以使用滚轮缩放图片,使用鼠标拖动图片。 - 对于需要标注的对象,可以使用不同的颜色进行区分,可以在右侧的颜色栏选择颜色。 - 在标注完成后,可以使用 `Ctrl+S` 快捷键保存标注结果。 5. 导出标注结果 标注完成后,可以将标注结果导出为多种格式,如JSON、PNG、SVG等。导出步骤如下: - 点击 `File` 菜单,选择 `Save As`,或者使用快捷键 `Ctrl+Shift+S`。 - 在弹出的对话框选择需要导出的格式,并设置导出路径和文件名。 - 点击 `Save` 按钮,即可将标注结果导出为指定格式。 以上就是Labelme的使用教程,希望对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不吃饭就会放大招

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值