小白快速上手 labelme:新手图像标注详解教程

前言

本教程主要面向初次使用 labelme 的新手,详细介绍了如何在 Windows 上通过 Anaconda 创建和配置环境,并使用 labelme 进行图像标注。

1. 准备工作

  • 在开始本教程之前,确保已经安装了 Anaconda。可以参考我之前的教程了解 Anaconda 的下载与安装:一步步教你在 Windows 上轻松安装 Anaconda以及使用常用conda命令(超详细)。
  • 本文所有命令操作均在Anaconda Prompt下进行,打开方式如下图。

  • 2. 创建 Conda 环境

    使用 Conda 管理 Python 环境可以避免不同项目之间的依赖冲突。下面是配置步骤:

    # 创建 Python 3.9 的新环境(名称为 labelme)
    conda create -n labelme python=3.9 -y
    
    # 激活环境
    conda activate labelme
    

    注意:可以根据需要选择不同的 Python 版本,但建议使用 3.83.9,以确保 labelme 的兼容性,版本过高会导致不稳定直接退出程序。


    3. 安装 labelme

    安装 labelme 有两种主要方法:使用 CondaPip,各有优缺点。

    方法一:使用 pip 安装 labelme(简洁快速但不稳定)

    激活环境后,直接运行以下命令使用 pip 安装:

    pip install labelme
    

    优点pip 安装方法简洁、快速,适合 Conda 默认不包含 labelme 的情况。

    缺点:有时依赖项可能因 Python 版本或系统环境导致兼容性问题。

    方法二:使用 Conda 安装 labelme(推荐)

    激活环境后,直接运行以下命令使用 conda 安装:

    conda install -c conda-forge labelme
    

    优点:Conda 会自动解决依赖冲突问题,通常更稳定,且 Conda Forge 提供的包适配性较好。

    缺点:Conda Forge 中的包可能不是最新版本,适合追求环境稳定的用户。


    4. 启动 labelme

    使用以下命令启动 labelme

    labelme
    

    日志内容结构

    2024-11-16 13:26:07,488 [INFO   ] __init__:get_config:67- Loading config file from: C:\Users\Natsu\.labelmerc
    

    2024年11月16日 13:26:07,程序正常运行并尝试从路径 C:\Users\Natsu\.labelmerc 加载配置文件。此消息表明程序的配置加载过程已开始,是运行过程中的一个正常操作。


    5. LabelMe 的基本操作指南

    5.1 图像加载

  • 用户可通过以下方式加载需要标注的图像:
  • 在工具栏中选择 “打开” 按钮以加载单张图像。
  • 在工具栏中选择 “打开目录” 按钮以加载目标文件夹中的所有图像。
  • 为方便后续标注文件的管理,可通过 “文件(F)” -> “更改输出路径” 设置 JSON 文件的保存路径。
  • 建议启用 “自动保存” 功能(通过 “文件(F)” -> “自动保存” 启用),确保标注工作实时保存,避免数据丢失。
  • 5.2 创建标注框

  • 选择目标图像后,执行以下操作创建标注框:
  • 在工具栏中选择 “编辑(E)” -> “创建多边形”,进入标注框绘制模式。
  • 使用鼠标在图像上点击以创建多边形的边界点,根据需要绘制目标区域的边界。
  • 弹出对话框后,输入标签名称(如“apple”或其他目标名称),以便于分类和管理。
  • 确认无误后,点击 “OK” 按钮保存标注内容,系统将自动生成对应的 JSON 格式标注文件。
  • 5.3 常用快捷键说明

    为提高标注效率,labelme 提供以下常用快捷键:

  • A / D(必会):切换至上一张或下一张图像。
  • Ctrl + Z(必会) :撤销上一步
  • Ctrl + R:创建矩形框标注。
  • Ctrl + N:创建多边形标注。
  • Ctrl + 鼠标滚轮:放大或缩小当前图像视图。
  • Ctrl + F:还原图像至原始尺寸。
  • Ctrl + J:切换至编辑模式。
  • 6.结果

  • 标注后的JSON格式文件最后会保存在最初选择"文件(F) -> 更改输出路径"的保存路径下。
  • 如下图所示,可能不同电脑图标不同。右键单击文件并选择“属性”,只要文件后缀显示为.json文件,即表示已正确保存。

  • 7.Labelme 生成的 JSON 格式文件详解

    Labelme 的标注结果以 JSON 文件格式保存,包含了标注图像的相关元数据以及每个标注区域的详细信息。以下是 JSON 文件的主要结构及其说明:

    7.1 顶层结构

    {
      "version": "5.0.1",
      "flags": {},
      "shapes": [],
      "imagePath": "example.jpg",
      "imageData": null,
      "imageHeight": 800,
      "imageWidth": 600
    }
    
  • version:记录生成文件的 LabelMe 版本号,便于兼容性分析。
  • flags:用户定义的标志信息(默认为空,若无特别设置)。
  • shapes:一个列表,包含了所有标注的几何形状及其属性(详见下文)。
  • imagePath:图像文件的相对路径或名称,用于追溯标注图像。
  • imageData:图像的 Base64 编码数据,默认为 null,标识未嵌入图像。
  • imageHeightimageWidth:标注图像的分辨率(高度和宽度)。
  • 7.2 shapes 列表(标注内容)

    shapes 是 JSON 文件的核心部分,每个标注对象都会以单独的条目存储在此列表中。结构如下:

    "shapes": [
      {
        "label": "apple",
        "points": [[100, 150], [200, 150], [200, 250], [100, 250]],
        "group_id": null,
        "shape_type": "polygon",
        "flags": {}
      }
    ]
    
  • label:该标注区域的标签名称(例如“apple”)。
  • points:二维数组,存储标注形状的关键点坐标。每个点以 [x, y] 的形式表示。例如,以上数据定义了一个矩形的四个顶点。
  • group_id:标注分组的 ID,便于组织管理(默认为 null,表示无分组)。
  • shape_type:标注形状的类型,可为:
  • "polygon":多边形(常用)
  • "rectangle":矩形
  • "circle":圆形
  • "point":单点
  • "line":直线
  • flags:标注区域的附加属性(默认为空对象 {})。
  • 7.3 示例完整文件

    以下是标注一张图片的 JSON 文件示例:

    {
      "version": "5.0.1",
      "flags": {},
      "shapes": [
        {
          "label": "apple",
          "points": [[100, 150], [200, 150], [200, 250], [100, 250]],
          "group_id": null,
          "shape_type": "polygon",
          "flags": {}
        },
        {
          "label": "banana",
          "points": [[300, 100], [350, 150], [300, 200], [250, 150]],
          "group_id": null,
          "shape_type": "polygon",
          "flags": {}
        }
      ],
      "imagePath": "example.jpg",
      "imageData": null,
      "imageHeight": 800,
      "imageWidth": 600
    }
    

    7.4 注意事项

  • JSON 格式的严谨性:文件必须保持正确的 JSON 格式,否则可能导致加载错误。
  • 路径与图像一致性imagePath 字段中的图像路径应与图像文件实际位置保持一致,否则加载标注可能失败。
  • 点顺序与形状构成:对于多边形或矩形,points 坐标顺序决定了形状的轮廓,绘制时需注意顺时针或逆时针方向。

  • 8. 注意事项

  • 若过程中遇到报错或闪退问题,最好的解决方法是删除当前环境并重新创建
  • 当前最稳定的配置为:Python 版本 3.9 + 通过 Pip 安装 labelme
  • 推荐在 labelme 环境中仅安装 labelme包,避免安装其他不必要的包。
  • 作者:Natsuagin

    物联沃分享整理
    物联沃-IOTWORD物联网 » 小白快速上手 labelme:新手图像标注详解教程

    发表回复