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

编辑: admin 分类: python 发布时间: 2021-12-24 来源:互联网
目录
  • 前言
  • 一、labelme是什么?
  • 二、快速安装使用
    • 2.1 windows安装
    • 2.2 linux安装
    • 2.3 macos安装
  • 三、界面说明
    • 四、为图像创建类标签
      • 4.1 参数介绍
      • 4.2 文件夹所有文件创建分类标签
      • 4.3 为文件夹所有文件创建分割标签
    • 五、大概步骤
      • 六、 其他问题
        • 6.1 如何快速查看分割的json文件
        • 6.2 json 转 png

      前言

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

      我用的第一种方法

      • 首先查看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文件是可以根据自己需要随便改设置的,而这个内置方法是不允许改动的。

      到此这篇关于Python深度学习之图像标签标注软件labelme详解的文章就介绍到这了,更多相关Python图像标签标注软件labelme内容请搜索hwidc以前的文章或继续浏览下面的相关文章希望大家以后多多支持hwidc!

      【本文出处:国外高防服务器 复制请保留原URL】