labelme使用教程_labelme和labelimg区别

labelme使用教程_labelme和labelimg区别LabelMe可用于实例分割,语义分割,目标检测,分类任务的数据集标注工作。在线标注版本:http://labelme2.csail.mit.edu/Release3.0/index.php?message=1python版本:https://github.com/wkentaro/labelme分类标注:Classification目标检测标注:ObjectDetection语义分割标注:SemanticSegmentation实例分割标注:InstanceSegmentation视频

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/194661.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号