文章目录

  • 1.labelme介绍
  • 2.labelme使用教程
    • 2.1语义分割(单张图片)
    • 2.2语义分割(多张图片)
  • 参考

1.labelme介绍

Labelme 是一个图形界面的图像标注软件。它是用 Python 语言编写的,图形界面使用的是 Qt(PyQt)。

2.labelme使用教程

2.1语义分割(单张图片)

Labelme 能够进行多种形式的图像数据标注。Labelme 以 JSON 文件存储标注信息。下面介绍一些 labelme 软件的基本操作。

hsh@hsh-G7-7588:~$ conda activate labelme
(labelme) hsh@hsh-G7-7588:~$ labelme #打开labelme软件
[INFO] Loading config file from: /home/hsh/.labelmerc (__init__.py:73)

  1. open:打开某一张图片
  2. openDir:打开某一文件夹下所有的图片

通过 open 读取图片,选择 create polygons 手动进行勾画,全部完成后保存为 json 文件(保存在当前目录下):

# tutorial (single image example)
cd examples/tutorial
labelme apc2016_obj3.jpg  # 打开tutorial文件夹下指定的某张图片
labelme apc2016_obj3.jpg -O apc2016_obj3.json  # 对图片编辑完成后点击save,图片会自动保存为json格式并自动退出软件
labelme apc2016_obj3.jpg --nodata  # JSON文件不包含图像数据,而包含图像的相对路径
labelme apc2016_obj3.jpg \--labels highland_6539_self_stick_notes,mead_index_cards,kong_air_dog_squeakair_tennis_ball  # 指定 label list

也可以在终端直接输入命令打开图片,需要将之前打开的labelme软件先关掉。我重新创建了一个文件夹practise,里面存放了原始未分割的示例图片,我按照教程重新再做一遍。

(labelme) hsh@hsh-G7-7588:~/Documents/labelme-master/examples/tutorial$ cd practise/
(labelme) hsh@hsh-G7-7588:~/Documents/labelme-master/examples/tutorial/practise$ ls
apc2016_obj4.jpg
(labelme) hsh@hsh-G7-7588:~/Documents/labelme-master/examples/tutorial/practise$ labelme apc2016_obj4.jpg
[INFO] Loading config file from: /home/hsh/.labelmerc (__init__.py:73)




点击save保存为json格式


也可以直接在终端中输入命令将编辑完的图片保存为json格式,先将软件关掉并将json文件也删除。

(labelme) hsh@hsh-G7-7588:~/Documents/labelme-master/examples/tutorial/practise$ ls
apc2016_obj4.jpg  apc2016_obj4.json
(labelme) hsh@hsh-G7-7588:~/Documents/labelme-master/examples/tutorial/practise$ rm apc2016_obj4.json
(labelme) hsh@hsh-G7-7588:~/Documents/labelme-master/examples/tutorial/practise$ ls
(labelme) hsh@hsh-G7-7588:~/Documents/labelme-master/examples/tutorial/practise$ ls
(labelme) hsh@hsh-G7-7588:~/Documents/labelme-master/examples/tutorial/practise$ labelme apc2016_obj4.jpg -o apc2016_obj4.json
[INFO] Loading config file from: /home/hsh/.labelmerc (__init__.py:73)


按照之前的步骤注释完后,直接点击save就可以保存为json格式,不会像之前一样跳出让你选择保存为哪种格式的文件的界面,并且软件自动关闭。

  1. labelme_draw_json
    使用该命令可以快速查看JSON格式的可视化标注。
    注意:要先注释大的物体(比如说此处为“shell”,先注释shell再注释其他3个物体),否则之前的注释会无效。
(labelme) hsh@hsh-G7-7588:~/Documents/labelme-master/examples/tutorial/practise$ labelme_draw_json apc2016_obj4.json

  1. labelme_json_to_dataset
    要将json转换为图像和标签集,得到 label_data文件,需要将 json 转换为单通道的 image,终端输入命令:
(labelme) hsh@hsh-G7-7588:~/Documents/labelme-master/examples/tutorial/practise$ labelme_json_to_dataset apc2016_obj4.json -o apc2016_obj4_json
[WARNING] This script is aimed to demonstrate how to convert theJSON file to a single image dataset, and not to handlemultiple JSON files to generate a real-use dataset. (json_to_dataset.py:15)
[INFO] Saved to: apc2016_obj4_json (json_to_dataset.py:72)
(labelme) hsh@hsh-G7-7588:~/Documents/labelme-master/examples/tutorial/practise$ ls
apc2016_obj4.jpg  apc2016_obj4_json  apc2016_obj4.json

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

  • img.png:原始图像
  • label.png:标签,uint8
  • label_viz.png:可视化的带标签(label.png)图像
  • label_names.txt:记录了标签(label.png)的名称
  1. labelme_draw_label_png
    将label文本文件以图例的形式绘制到PNG格式的标签上,并显示出来
    label.png 用 scipy.misc.imread 或者 skimage.io.imread 读取可能会出错,推荐用 PIL.Image.open 读取:
(labelme) hsh@hsh-G7-7588:~/Documents/labelme-master/examples/tutorial/practise$ python
Python 3.7.6 (default, Jan  8 2020, 19:59:22)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> import PIL.Image
>>> label_png = 'apc2016_obj4_json/label.png'
>>> lbl = np.asarray(PIL.Image.open(label_png))
>>> print(lbl.dtype)
uint8
>>> np.unique(lbl)
array([0, 1, 2, 3, 4], dtype=uint8)
>>> lbl.shape
(907, 1210)
>>> exit()
(labelme) hsh@hsh-G7-7588:~/Documents/labelme-master/examples/tutorial/practise$ labelme_draw_label_png apc2016_obj4_json/label.png
[INFO] label shape: (907, 1210) (draw_label_png.py:19)
[INFO] unique label values: [0 1 2 3 4] (draw_label_png.py:20)
Traceback (most recent call last):File "/home/hsh/anaconda3/envs/labelme/bin/labelme_draw_label_png", line 8, in <module>sys.exit(main())File "/home/hsh/anaconda3/envs/labelme/lib/python3.7/site-packages/labelme/cli/draw_label_png.py", line 22, in mainlbl_viz = utils.draw_label(lbl)
AttributeError: module 'labelme.utils' has no attribute 'draw_label'
(labelme) hsh@hsh-G7-7588:~/Documents/labelme-master/examples/tutorial/practise$ 

此处报错,在labelme的Utils文件夹里缺少draw.py文件。
1.将draw.py文件添加进Utils文件夹,
这是该文件的网盘链接:https://pan.baidu.com/s/1CJ_u9sQtSgwrRI3L7ohxcQ
提取码:mq15

2.打开Utils文件夹里的__init__.py文件进行编辑,将draw.py文件里的函数导入进去。

再次执行代码便不会报错

2.2语义分割(多张图片)

# semantic segmentation example
cd examples/semantic_segmentation
labelme data_annotated/  # 打开该文件下的所有图片
labelme data_annotated/ --labels labels.txt  # 用文件指定标签列表

此处我同样建立了一个practise,里面存放未注释的原始文件。
按照上文所述注释每张图片

(labelme) hsh@hsh-G7-7588:~/Documents/labelme-master/examples$ cd semantic_segmentation/
(labelme) hsh@hsh-G7-7588:~/Documents/labelme-master/examples/semantic_segmentation$ ls
data_annotated  data_dataset_voc  labelme2voc.py  labels.txt  practise  README.md
(labelme) hsh@hsh-G7-7588:~/Documents/labelme-master/examples/semantic_segmentation$ cd practise/
(labelme) hsh@hsh-G7-7588:~/Documents/labelme-master/examples/semantic_segmentation/practise$ ls
data_annotated
(labelme) hsh@hsh-G7-7588:~/Documents/labelme-master/examples/semantic_segmentation/practise$ labelme data_annotated/
[INFO] Loading config file from: /home/hsh/.labelmerc (__init__.py:73)
(labelme) hsh@hsh-G7-7588:~/Documents/labelme-master/examples/semantic_segmentation/practise$ ls
data_annotated
(labelme) hsh@hsh-G7-7588:~/Documents/labelme-master/examples/semantic_segmentation/practise$ labelme_draw_json data_annotated/2011_000003.json

生成VOC格式的标签数据

# It generates:
#   - data_dataset_voc/JPEGImages
#   - data_dataset_voc/SegmentationClass
#   - data_dataset_voc/SegmentationClassVisualization
./labelme2voc.py data_annotated data_dataset_voc --labels labels.txt

data_annotated 是原图和对应的 JSON 文件,data_dataset_voc 是 voc 格式的输出结果,labelme2voc.py 是转换的主函数,labels.txt 是标签类别。

  1. *_annotated 存放原图和已经生成的对应 JSON 文件
  2. 将 labelme 工程文件下的 labelme2voc.py 复制过来
  3. 自己写一个 *.txt 文件,内容是注释的标签,最前面加上 ignorebackground

(labelme) hsh@hsh-G7-7588:~/Documents/labelme-master/examples/semantic_segmentation/practise$ ./labelme2voc.py data_annotated data_dataset_voc --labels labels.txt
Creating dataset: data_dataset_voc
class_names: ('_background_', 'person', 'bottle', 'sofa', 'chair', 'bus', 'car')
Saved class_names: data_dataset_voc/class_names.txt
Generating dataset from: data_annotated/2011_000025.json
Generating dataset from: data_annotated/2011_000006.json
Generating dataset from: data_annotated/2011_000003.json

参考

1.数据标注软件labelme详解
2.LabelMe使用
3.https://github.com/wkentaro/labelme
4.批量转换json文件,出现AttributeError: module ‘labelme.utils’ has no attribute 'draw_label’错误

labelme简单使用教程相关推荐

  1. vim简单使用教程【转】

    vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的.下面的文章翻译自<Learn Vim Progress ...

  2. java map set_java中Map、Set、List的简单使用教程(快速入门)

    Map.Set.List List的常用方法 1.创建 List list = new ArrayList<>(); List list = new LinkedList<>( ...

  3. 【转】正则表达式简介及在C++11中的简单使用教程

    [转]正则表达式简介及在C++11中的简单使用教程 正则表达式Regex(regular expression)是一种强大的描述字符序列的工具.在许多语言中都存在着正则表达式,C++11中也将正则表达 ...

  4. PHP在WPS中的应用,PHP+Laravel的简单应用教程【ajax的使用】,wps的使用教程

    PHP+Laravel的简单应用教程[ajax的使用]PHP·拉弗尔的简单应用教程[阿贾克斯的使用],下面由Laravel框架教程栏目给大家介绍PHP Laravel的简单应用教程[阿贾克斯的使用], ...

  5. 史上最简单MySQL教程详解(进阶篇)之存储过程(一)

    史上最简单MySQL教程详解(进阶篇)之存储过程(一) 史上最简单MySQL教程详解(进阶篇)之存储过程(一) 什么是存储过程 存储过程的作用 如何使用存储过程 创建存储过程 DELIMITER改变分 ...

  6. 史上最简单MySQL教程详解(进阶篇)之存储引擎介绍及默认引擎设置

    什么是存储引擎? MySQL存储引擎种类 MyISAM 引擎 InnoDB引擎 存储引擎操作 查看存储引擎 存储引擎的变更 修改默认引擎 什么是存储引擎? 与其他数据库例如Oracle 和SQL Se ...

  7. IDEA简单配置教程

    IDEA简单配置教程 --做好前期配置工作,后期少走弯路. 创建模块(Module) 设置(Settings) 设置主题 窗体及菜单字体及大小 设置编辑区主题 通过插件(plugins)更换主题 设置 ...

  8. kindle的xray怎么用_Xray简单使用教程

    Xray简单使用教程 0X00下载 xray 为单文件二进制文件,无依赖,也无需安装,下载后直接使用. 下载地址为: 注意: 不要直接 clone 仓库,xray 并不开源,仓库内不含源代码,直接下载 ...

  9. navicat fo mysql 教程_Navicat For MySQL的简单使用教程

    1.前提是必须先安装好MySQL数据库(Mac下安装MySQL数据库见前一篇) 2.安装Navicat 3.点击navicate左上角:连接->MySQL->先测链接下,如果提示连接成功, ...

最新文章

  1. 科研人员多维度测试GPT-3发现:它并不是一名“好学生”
  2. 【转】使用Apache CXF开发WebServices服务端
  3. Page类的IsPostBack原理
  4. 本月与上月对比数据叫什么_财务人事应会Excel数据对比Vlookup函数快速核定变动...
  5. prince2 成功的项目管理_PRINCE2试听福利丨成功的项目管理方法论
  6. python聚类dbscan案例经纬度_用DBSCAN聚类经纬度坐标
  7. 线程间的通信方式1--共享变量(内存)
  8. 【ArcGIS风暴】全国1:100万基础地理数据库获取及ArcGIS图幅完美拼接---以甘肃省为例
  9. android lable标签,android:label说明
  10. LeetCode 405. 数字转换为十六进制数
  11. 大道至简,仅需4行代码提升多标签分类性能!ICCV21 南大提出Residual Attention
  12. Hibrenate实现根据实体类自动创建表或添加字段
  13. ado.not--综合练习
  14. 安装vmware tools 使用hgfs共享文件一波三折
  15. 手机版浏览器f12_没有广告的浏览器??
  16. CentOS 安装字体
  17. python 日历热力图_pyecharts日历热力图
  18. 楷书书法规则_楷书的结构法则
  19. 修复计算机有什么用,电脑硬盘坏道修复了对以后电脑使用有什么影响吗?
  20. 人在职场:可以让你少奋斗10年的工作经验

热门文章

  1. Elasticsearch笔记(四)—— Java API的使用
  2. 【WLAN】【调试】小米MIUI系统下,如何查看无线(WLAN)相关日志
  3. android开发笔记汇总(二)
  4. 如何做一个优秀完整的自我介绍?
  5. Facebook广告数据
  6. java雍俊海_JAVA程序设计 雍俊海(学习笔记2)
  7. 直播报名|Flutter在「饿了么 ICBU」 的研发与沉淀
  8. FPGA学习笔记(六)Modelsim单独仿真和Quartus联合仿真及signaltap使用
  9. excel爬虫相关学习1:简单的excel爬虫
  10. 查找DLL、EXE文件依赖的DLL