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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数据库期末考试复习题 第二�

    数据库期末考试复习题 第二�

    2021年11月14日
    37
  • navicat 15激活码(注册激活)

    (navicat 15激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月21日
    234
  • 显卡三重缓冲

    显卡三重缓冲显卡三重缓冲是解决显示器刷新率不足的问题的方案。

    2022年5月22日
    40
  • mybatis log plugin激活码-激活码分享

    (mybatis log plugin激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~W…

    2022年3月22日
    278
  • Vue上传图片_实现线程的四种方式

    Vue上传图片_实现线程的四种方式项目中需要上传图片可谓是经常遇到的需求,本文将介绍3种不同的图片上传方式,在这总结分享一下,有什么建议或者意见,请大家踊跃提出来。没有业务场景的功能都是耍流氓,那么我们先来模拟一个需要实现的业务场景。假设我们要做一个后台系统添加商品的页面,有一些商品名称、信息等字段,还有需要上传商品轮播图的需求。我们就以Vue、Element-ui,封装组件为例子聊聊如何实现这个功能。其他框架或者不用框架…

    2022年8月15日
    3
  • Gerrit使用教程详解[通俗易懂]

    Gerrit使用教程详解[通俗易懂]个人觉得这几篇博客介绍挺详细的,收藏转发分享:1、gerrit使用教程(一)https://www.cnblogs.com/111testing/archive/2018/08/09/9450530.html2、git上传本地代码到远程仓库https://www.cnblogs.com/111testing/p/7663229.html3、gitlog查看提交历史https:/…

    2022年10月23日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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