labelme简单使用教程
文章目录
- 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)
- open:打开某一张图片
- 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格式,不会像之前一样跳出让你选择保存为哪种格式的文件的界面,并且软件自动关闭。
labelme_draw_json
:
使用该命令可以快速查看JSON格式的可视化标注。
注意:要先注释大的物体(比如说此处为“shell”,先注释shell再注释其他3个物体),否则之前的注释会无效。
(labelme) hsh@hsh-G7-7588:~/Documents/labelme-master/examples/tutorial/practise$ labelme_draw_json apc2016_obj4.json
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)的名称
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 是标签类别。
- *_annotated 存放原图和已经生成的对应 JSON 文件
- 将 labelme 工程文件下的 labelme2voc.py 复制过来
- 自己写一个 *.txt 文件,内容是注释的标签,最前面加上 ignore 和 background
(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简单使用教程相关推荐
- vim简单使用教程【转】
vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的.下面的文章翻译自<Learn Vim Progress ...
- java map set_java中Map、Set、List的简单使用教程(快速入门)
Map.Set.List List的常用方法 1.创建 List list = new ArrayList<>(); List list = new LinkedList<>( ...
- 【转】正则表达式简介及在C++11中的简单使用教程
[转]正则表达式简介及在C++11中的简单使用教程 正则表达式Regex(regular expression)是一种强大的描述字符序列的工具.在许多语言中都存在着正则表达式,C++11中也将正则表达 ...
- PHP在WPS中的应用,PHP+Laravel的简单应用教程【ajax的使用】,wps的使用教程
PHP+Laravel的简单应用教程[ajax的使用]PHP·拉弗尔的简单应用教程[阿贾克斯的使用],下面由Laravel框架教程栏目给大家介绍PHP Laravel的简单应用教程[阿贾克斯的使用], ...
- 史上最简单MySQL教程详解(进阶篇)之存储过程(一)
史上最简单MySQL教程详解(进阶篇)之存储过程(一) 史上最简单MySQL教程详解(进阶篇)之存储过程(一) 什么是存储过程 存储过程的作用 如何使用存储过程 创建存储过程 DELIMITER改变分 ...
- 史上最简单MySQL教程详解(进阶篇)之存储引擎介绍及默认引擎设置
什么是存储引擎? MySQL存储引擎种类 MyISAM 引擎 InnoDB引擎 存储引擎操作 查看存储引擎 存储引擎的变更 修改默认引擎 什么是存储引擎? 与其他数据库例如Oracle 和SQL Se ...
- IDEA简单配置教程
IDEA简单配置教程 --做好前期配置工作,后期少走弯路. 创建模块(Module) 设置(Settings) 设置主题 窗体及菜单字体及大小 设置编辑区主题 通过插件(plugins)更换主题 设置 ...
- kindle的xray怎么用_Xray简单使用教程
Xray简单使用教程 0X00下载 xray 为单文件二进制文件,无依赖,也无需安装,下载后直接使用. 下载地址为: 注意: 不要直接 clone 仓库,xray 并不开源,仓库内不含源代码,直接下载 ...
- navicat fo mysql 教程_Navicat For MySQL的简单使用教程
1.前提是必须先安装好MySQL数据库(Mac下安装MySQL数据库见前一篇) 2.安装Navicat 3.点击navicate左上角:连接->MySQL->先测链接下,如果提示连接成功, ...
最新文章
- 科研人员多维度测试GPT-3发现:它并不是一名“好学生”
- 【转】使用Apache CXF开发WebServices服务端
- Page类的IsPostBack原理
- 本月与上月对比数据叫什么_财务人事应会Excel数据对比Vlookup函数快速核定变动...
- prince2 成功的项目管理_PRINCE2试听福利丨成功的项目管理方法论
- python聚类dbscan案例经纬度_用DBSCAN聚类经纬度坐标
- 线程间的通信方式1--共享变量(内存)
- 【ArcGIS风暴】全国1:100万基础地理数据库获取及ArcGIS图幅完美拼接---以甘肃省为例
- android lable标签,android:label说明
- LeetCode 405. 数字转换为十六进制数
- 大道至简,仅需4行代码提升多标签分类性能!ICCV21 南大提出Residual Attention
- Hibrenate实现根据实体类自动创建表或添加字段
- ado.not--综合练习
- 安装vmware tools 使用hgfs共享文件一波三折
- 手机版浏览器f12_没有广告的浏览器??
- CentOS 安装字体
- python 日历热力图_pyecharts日历热力图
- 楷书书法规则_楷书的结构法则
- 修复计算机有什么用,电脑硬盘坏道修复了对以后电脑使用有什么影响吗?
- 人在职场:可以让你少奋斗10年的工作经验