热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python深度学习之图像标签标注软件labelme详解

Python深度学习之图像标签标注软件labelme详解-前言labelme是一个非常好用的免费的标注软件,博主看了很多其他的博客,有的直接是翻译稿,有的不全面。对于新手入门还是有

前言

labelme是一个非常好用的免费的标注软件,博主看了很多其他的博客,有的直接是翻译稿,有的不全面。对于新手入门还是有点困难。因此,本文的主要是详细介绍labelme该如何使用。

一、labelme是什么?

labelme是图形图像注释工具,它是用Python编写的,并将Qt用于其图形界面。说直白点,它是有界面的, 像软件一样,可以交互,但是它又是由命令行启动的,比软件的使用稍微麻烦点。其界面如下图:

在这里插入图片描述

它的功能很多,包括:

  • 对图像进行多边形,矩形,圆形,多段线,线段,点形式的标注(可用于目标检-测,图像分割等任务)。
  • 对图像进行进行 flag 形式的标注(可用于图像分类 和 清理 任务)。
  • 视频标注
  • 生成 VOC 格式的数据集(for semantic / instance segmentation)
  • 生成 COCO 格式的数据集(for instance segmentation)

二、快速安装使用

安装教程都是参考的labelme github。

2.1 windows安装

官网步骤如下:

# python3
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
# or you can install everything by conda command
# conda install labelme -c conda-forge

1.为labelme创建一个conda环境,命名为lableme

在这里插入图片描述

2.激活该环境

在这里插入图片描述

windows用命令activate labelme 或者 conda activate labelme

很少用windows, 说的不对请指正。

其实在这一步中,我遇到了一个问题

C:\Windows\system32> conda activate labelme
 
CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
To initialize your shell, run
 
    $ conda init 
 
Currently supported shells are:
 - bash
 - fish
 - tcsh
 - xonsh
 - zsh
 - powershell
 
See 'conda init --help' for more information and options.
 
IMPORTANT: You may need to close and restart your shell after running 'conda init'.

初始化conda啥的,不是很懂,最后通过博客解决

我用的第一种方法

  • 首先查看conda env 的地址

在这里插入图片描述

  • 我的在D盘,所以先切换到D盘
  • 命令行输入 conda.bat activate anaconda\envs\labelme(注意和原博客不一样)

在这里插入图片描述

  • 再激活就正常了

3 安装pyqt

前言里讲过labelme是基于Qt的,所以必须安装

conda/pip install pyqt

4 pip install labelme

2.2 linux安装

# Ubuntu 14.04 / Ubuntu 16.04
# Python2
# sudo apt-get install python-qt4  # PyQt4
sudo apt-get install python-pyqt5  # PyQt5
sudo pip install labelme
# Python3
sudo apt-get install python3-pyqt5  # PyQt5
sudo pip3 install labelme

# or install standalone executable from:
# https://github.com/wkentaro/labelme/releases

注意:使用如上安装前,同winsows一样,需要先创建labelme的conda环境。

2.3 macos安装

# macOS Sierra
brew install pyqt  # maybe pyqt5 我用的pip安装
pip install labelme  # both python2/3 should work

# or install standalone executable/app from:
# https://github.com/wkentaro/labelme/releases

说明:这三种系统我都成功安装过,放心吧~

安装成功的哑子

有如下这些包

在这里插入图片描述

下次使用,命令行输入labelme就可以打开软件啦。严谨的来说,它是一个用pyqt5编写的GUI界面。

在这里插入图片描述

三、界面说明

在这里插入图片描述

图上看到,这个界面是非常简洁的。

接下来具体讲讲如何使用。医学图像分析,我主要是研究分类和分割,所以重点讲解如何标注分类标签和分割标签。

四、为图像创建类标签

4.1 参数介绍

使用labelme --help会出来labelme的使用方法,它包括如下参数

在这里插入图片描述

我们解释几个重要的参数设置

  • ?output:标注文件存放位置。如果给的参数是以.json结尾,则会向该文件写入一个标签。也就意味着如果使用.json指定位置,则只能对一个图像进行注释。如果位置不是以.json结尾,程序将假定它是一个目录。注释将以与在其上进行注释的图像相对应的名称存储在此目录中。
  • ?Flags: 为图像创建分类标签,多分类用逗号隔开。
  • ?nosortlabels: 是否对标签进行排序

举例:

命令行输入 labelme image1.png --output image1.json --flags 0,1

在这里插入图片描述

其中,image1.png是图像的地址,而不是名字。注意区别,因为我现在的路径在图像存放的当前文件夹,所以输入名字就可以直接找到该图像。如果你当前路径不在图像存放的文件夹,你需要给出图像的完整路径,如F:\labelmeImage\image1.png
?output image1.json 就是把打标签的结果存放在image1.json这个文件里。因为我是对单一图像打标签,所以是以.json结尾。如果是对一个文件夹进行打标签,那这里就不要以.json结尾,直接输入你想存放的文件夹就行。
?flags: 描述你分类的标签是什么,0,1表示分两类。也可以写成多类,0,1,2,3,4.也可以用其他字符,如 negative,positive, 或者cat, dog。等等~

4.2 文件夹所有文件创建分类标签

在这里插入图片描述

命令行输入labeme 并且给定分类标签。
打开图上右边界面后,导入文件夹,就可以点图像,对它进行标注。标注完一个,需要对其进行保存,才能打第二个图像的标签。这里没有给定输出位置,就会默认保存在图像这个文件夹,并且名字和图像的名字一样,并以.json结尾。

4.3 为文件夹所有文件创建分割标签

创建分割标签主要用到多边形工具, 把需要的区域框出来就好了。
实验数据来自labelme github: labelme/tree/master/examples/semantic_segmentation

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

五、大概步骤

1.运行labelme后,打开文件夹

2.使用多边形工具勾勒目标

3.勾勒完成后创建标签

4.微调边框。点击编辑多边形,有很多操作。如图上所示

5.最后存储

以上是简单的演示,官方做的实验如下:

首先下载semantic_segmentation 这个文件夹。

注意:以下实验都是在该文件夹下打开的终端

在这里插入图片描述

标注文件

labelme data_annotated --labels labels.txt --nodata --validatelabel exact --config ‘{shift_auto_shape_color: -2}'

在这里插入图片描述

作者已经标注好了,我们就打开看看。

标签格式转换

由于标注好的文件是json格式,我们将其转化成图片格式或者其他格式。使用作者给的代码labelme2voc.py。主要转化的格式有: 类名字文件,原始图像的jpeg格式,分割图像的npy格式,png格式, 以及将分割图像叠在原始图像上的jpg格式。

在这里插入图片描述

在这里插入图片描述

作者给的命令: ./labelme2voc.py data_annotated data_dataset_voc --labels labels.txt

但是运行时会有报错,修改成如下运行:

python labelme2voc.py data_annotated data_dataset_voc --labels labels.txt

针对报错:如果命令行不好修改代码,建议直接修改这个Python文件里面的参数配置,再运行都可以。

六、 其他问题

6.1 如何快速查看分割的json文件

labelme_draw_json 2011_000003.json

在这里插入图片描述

6.2 json 转 png

labelme_json_to_dataset apc2016_obj3.json -o apc2016_obj3_json

apc2016_obj3.json: 待转化的json文件,

apc2016_obj3_json: 转化后文件保存地址

一共会生成4个文件:

img.png: Image file.

label.png: uint8 label file.

label_viz.png: Visualization of label.png.

label_names.txt: Label names for values in label.png.

在这里插入图片描述

这和第4小节讲的格式转化差不多,4小节的python文件是可以根据自己需要随便改设置的,而这个内置方法是不允许改动的。


推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了Linux Shell中括号和整数扩展的使用方法,包括命令组、命令替换、初始化数组以及算术表达式和逻辑判断的相关内容。括号中的命令将会在新开的子shell中顺序执行,括号中的变量不能被脚本余下的部分使用。命令替换可以用于将命令的标准输出作为另一个命令的输入。括号中的运算符和表达式符合C语言运算规则,可以用在整数扩展中进行算术计算和逻辑判断。 ... [详细]
  • 本文介绍了如何在Azure应用服务实例上获取.NetCore 3.0+的支持。作者分享了自己在将代码升级为使用.NET Core 3.0时遇到的问题,并提供了解决方法。文章还介绍了在部署过程中使用Kudu构建的方法,并指出了可能出现的错误。此外,还介绍了开发者应用服务计划和免费产品应用服务计划在不同地区的运行情况。最后,文章指出了当前的.NET SDK不支持目标为.NET Core 3.0的问题,并提供了解决方案。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • Python已成为全球最受欢迎的编程语言之一,然而Python程序的安全运行存在一定的风险。本文介绍了Python程序安全运行需要满足的三个条件,即系统路径上的每个条目都处于安全的位置、"主脚本"所在的目录始终位于系统路径中、若python命令使用-c和-m选项,调用程序的目录也必须是安全的。同时,文章还提出了一些预防措施,如避免将下载文件夹作为当前工作目录、使用pip所在路径而不是直接使用python命令等。对于初学Python的读者来说,这些内容将有所帮助。 ... [详细]
  • Introduction(简介)Forbeingapowerfulobject-orientedprogramminglanguage,Cisuseda ... [详细]
  • 引号快捷键_首选项和设置——自定义快捷键
    3.3自定义快捷键(CustomizingHotkeys)ChemDraw快捷键由一个XML文件定义,我们可以根据自己的需要, ... [详细]
author-avatar
mobiledu2502934191
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有