首页 > 其他分享 >深度学习图像标签标注软件labelme超详细教程

深度学习图像标签标注软件labelme超详细教程

时间:2023-06-14 21:32:04浏览次数:53  
标签:教程 标签 json conda install 图像 labelme 标注



文章目录

  • 前言
  • 一、labelme是什么?
  • 二、快速安装使用
  • 1.windows安装
  • 2.linux安装
  • 3.macos安装
  • 安装成功的哑子
  • 三、界面说明
  • 四、为图像创建类标签
  • 4.1 参数介绍
  • 4.1 文件夹所有文件创建分类标签
  • 4.2 为文件夹所有文件创建分割标签
  • 5. 其他问题
  • 5.1 如何快速查看分割的json文件
  • 5.2 json 转 png



前言

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


提示:以下是本篇文章正文内容

一、labelme是什么?

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

深度学习图像标签标注软件labelme超详细教程_json


链接: labelme github.

它的功能很多,包括:

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

二、快速安装使用

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

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 <SHELL_NAME>
 
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啥的,不是很懂,最后通过博客解决1

我用的第一种方法

  • 首先查看conda env 的地址
  • 我的在D盘,所以先切换到D盘
  • 命令行输入 conda.bat activate anaconda\envs\labelme(注意和原博客不一样)
  • 再激活就正常了

3 安装pyqt, 前言里讲过labelme是基于Qt的,所以必须安装
conda/pip install pyqt
4 pip install labelme

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环境。

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超详细教程_github_02


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

深度学习图像标签标注软件labelme超详细教程_python_03

三、界面说明

深度学习图像标签标注软件labelme超详细教程_python_04


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

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

四、为图像创建类标签

4.1 参数介绍

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

深度学习图像标签标注软件labelme超详细教程_github_05


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

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

举例:

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

深度学习图像标签标注软件labelme超详细教程_github_06


其中,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。等等~

查看演示:此处无法添加视频,前往GongZhongHao查看

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

深度学习图像标签标注软件labelme超详细教程_json_07


命令行输入labeme 并且给定分类标签。

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

查看演示:此处无法添加视频,前往GongZhongHao查看

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

创建分割标签主要用到多边形工具, 把需要的区域框出来就好了。

实验数据来自labelme github: labelme/tree/master/examples/semantic_segmentation

深度学习图像标签标注软件labelme超详细教程_python_08


深度学习图像标签标注软件labelme超详细教程_github_09

深度学习图像标签标注软件labelme超详细教程_github_10

大概步骤

  1. 运行labelme后,打开文件夹
  2. 使用多边形工具勾勒目标
  3. 勾勒完成后创建标签
  4. 微调边框。点击编辑多边形,有很多操作。如图上所示
  5. 最后存储

查看演示:此处无法添加视频,前往GongZhongHao查看

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

1.首先下载semantic_segmentation 这个文件夹。

链接: https://github.com/wkentaro/labelme/tree/master/examples/semantic_segmentation.

深度学习图像标签标注软件labelme超详细教程_python_11


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

深度学习图像标签标注软件labelme超详细教程_json_12

2. 标注文件

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

深度学习图像标签标注软件labelme超详细教程_github_13


作者已经标注好了,我们就打开看看。3. 标签格式转换

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

深度学习图像标签标注软件labelme超详细教程_python_14

深度学习图像标签标注软件labelme超详细教程_python_15

作者给的命令: ./labelme2voc.py data_annotated data_dataset_voc --labels labels.txt
但是运行时会有报错,修改成如下运行:
python labelme2voc.py data_annotated data_dataset_voc --labels labels.txt

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

5. 其他问题

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

labelme_draw_json 2011_000003.json

深度学习图像标签标注软件labelme超详细教程_json_16

5.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.

深度学习图像标签标注软件labelme超详细教程_github_17


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

更多功能前往github仔细阅读。今天就分享到这里。


深度学习图像标签标注软件labelme超详细教程_json_18


  1. https://www.freesion.com/article/84271090876/ ↩︎


标签:教程,标签,json,conda,install,图像,labelme,标注
From: https://blog.51cto.com/u_16159492/6481604

相关文章

  • Python教程-多线程与多进程
    什么是线程,什么是进程?进程是程序(软件,应用)的一个执行实例,每个运行中的程序,可以同时创建多个进程,但至少要有一个。每个进程都提供执行程序所需的所有资源,都有一个虚拟的地址空间、可执行的代码、操作系统的接口、安全的上下文(记录启动该进程的用户和权限等等)、唯一的进程ID、环境变......
  • javascript现代编程系列教程之六——parseInt()整数转换
    在JavaScript中,parseInt()函数会将其参数转换为字符串,然后解析该字符串,并返回一个整数或NaN。如果parseInt()函数的参数是一个非常大的浮点数(如1000000000000000000000.5),那么它首先会被转换为科学记数法的字符串形式(即"1e+21"),然后parseInt()会尝试从这个字符串中解析出......
  • javascript现代编程系列教程之五——正零和负零
    在JavaScript中,正零(+0)和负零(-0)都代表数值0,它们在大多数情况下是等价的。然而,在某些特定的场景下,正零和负零的行为会有所不同。除法操作:当0被用作除数时,正零和负零会产生不同的结果:console.log(42/+0);//输出:Infinityconsole.log(42/-0);//输出:-InfinityObject......
  • 操作教程:如何正确配置让EasyNVR级联至EasyNVS平台?
    EasyNVS是EasyNVR的云管理平台,可实现内网监控上云,视频汇聚等功能。近期经常有用户咨询EasyNVR如何级联至EasyNVS平台进行云端统计和管理,在今天的文章中,我们来详细介绍一下。1、配置EasyNVS1)运行EasyNVS之前,可以先在easynvs.ini文件中将IP、端口、HTTPS证书及端口、设备接入密码等信......
  • 全景VR KRPano项目打包成安卓APP快速简易教程
    有时候,我们可能不想把我们制作的全景VR项目发布到网站上,而是想把它作为一个手机应用来使用或者分享。这样,我们就可以更好地保护我们的作品,也可以更方便地展示给客户或者朋友。本文将介绍一种简单的方法,让你可以把你的全景VRKRPano项目打包成安卓APP文件。准备工作在开始打包之......
  • Aurelia教程_编程入门自学教程_菜鸟教程-免费教程分享
    教程简介Aurelia是一个用于Web和移动应用程序开发的现代开源UI框架。它允许您编写干净、模块化的JavaScript。该框架遵循简单的约定,并专注于Web标准。Aurelia入门教程-从简单的步骤了解Aurelia,从基本到高级概念,包括概述,环境设置,第一个应用程序,配置,依赖注入,组件,组件生......
  • 开发者必备:动态贴纸和美颜SDK的集成教程
    动态贴纸和美颜技术不仅能带来多样的拍摄方案,还可以增加应用的吸引力。本篇文章将为开发者提供动态贴纸和美颜SDK的集成教程、技术方案,帮助开发者快速实现这些功能。一、动态贴纸美颜SDK集成教程1.  导入SDK 在Android Studio中,开发者需要在build.gradle文件中添加以下依赖:depe......
  • Cmake 基础教程
    介绍CMake是个一个开源的跨平台自动化建构系统,用来管理软件建置的程序,并不依赖于某特定编译器,并可支持多层目录、多个应用程序与多个库。它用配置文件控制建构过程(buildprocess)的方式和Unix的make相似,只是CMake的配置文件取名为CMakeLists.txt。CMake并不直接建构出最终的软件,......
  • N1 安装 armbian 简单教程
    制作镜像选择Armbian_23.02.0_amlogic_s905d_bullseye_6.0.11_server_2022.12.08.img.gz,下载好之后,解压,利用rufus刷入u盘。安装由于盒子在刷入armbian前为安卓系统,已开启adb,mac的终端执行adbconnect192.168.123.193连接无线adb,192.168.123.193修改成N1的实际的ip地址,然后执行......
  • ssh 简单教程
    ssh配置免密码登录服务器生成密钥对执行ssh-keygen-ted25519-C"[email protected]"以生成密钥对,存放在~/.ssh文件夹下,id_ed25519.pub为公钥,id_ed25519为私钥。上传公钥到服务器这里以我的N1为例,执行ssh-copy-id-i~/.ssh/[email protected]和ssh-copy......