如何下载安装以及使用labelme,一个可以打标签的工具,实现数据集处理,详细教程

📌 Labelme安装指南

首先,我们完成Labelme的安装。强烈建议使用Anaconda创建一个独立的Python环境,这样可以避免与电脑上其他项目的软件包发生冲突。

  1. 安装Anaconda :如果你还没有安装,请前往Anaconda官网下载并安装适合你操作系统的版本。

  2. 创建虚拟环境 :打开Anaconda Prompt(Windows)或终端(macOS/Linux),执行以下命令创建一个名为labelme的新环境(推荐使用Python 3.6至3.8版本,兼容性较好):

    bash 复制代码
    conda create --name=labelme python=3.6

    输入y确认安装。

  3. 激活环境 :环境创建好后,使用以下命令激活它:

    bash 复制代码
    conda activate labelme

    命令提示符前的(labelme)字样表示你已进入该环境。

  4. 安装Labelme :在激活的labelme环境中,使用pip安装Labelge及界面依赖:

    bash 复制代码
    # 安装界面依赖的PyQt5
    pip install pyqt5
    # 安装labelme
    pip install labelme

    为了加快下载速度,你可以使用国内的镜像源,例如清华源:-i https://pypi.tuna.tsinghua.edu.cn/simple

验证安装 :在labelme环境中输入labelme并回车,如果能成功弹出图形界面,说明安装一切就绪。

🖱️ 使用Labelme标注图像

安装成功后,我们来学习如何使用Labelme进行标注。整个流程可以概括为:准备图片 -> 启动工具与标注 -> 保存结果 -> 格式转换。下图展示了这一核心流程:
是 否 准备图像数据集 启动Labelme并载入图像 使用多边形工具进行标注 为每个区域输入标签 继续标注? 保存JSON文件 转换JSON为数据集 得到可视化标注图

下面我们来分解图中的关键步骤:

  1. 准备与载入 :首先,将你需要标注的所有图片放在同一个文件夹里。在终端输入labelme启动工具,点击界面上的 Open Dir 按钮,选择这个图片文件夹。
  2. 开始标注 :点击 Create Polygons 按钮,你就可以开始描点勾勒目标的轮廓了。
    • 描点:用鼠标在目标的边缘依次点击,形成一个闭合的多边形。
    • 标注中 :如果某个点标错了,可以按 Ctrl+Z 撤销上一个点。
    • 完成一个目标 :闭合多边形后,会弹出一个对话框,让你输入该目标的标签名称。请确保同类别的标签名称完全一致。
  3. 保存结果 :一张图片上的所有目标都标注完成后,点击 Save 按钮。Labelme会生成一个与图片同名的.json文件,这个文件记录了所有的标注信息。
  4. 格式转换(用于模型训练) :保存得到的JSON文件不能直接用于训练模型,需要转换成模型能识别的格式(通常是像素级的标签图)。
    • 单文件转换 :对于单个JSON文件,可以使用Labelme自带的命令将其转换为带标签的PNG图像:

      bash 复制代码
      labelme_json_to_dataset your_annotation.json

      这会在当前目录生成一个包含标签图像的新文件夹。

    • 批量转换 :如果你有大量的JSON文件需要转换,推荐使用Labelme项目中提供的脚本(如 labelme2voc.py)进行批量处理。你需要先下载Labelme的源码:

      bash 复制代码
      git clone https://github.com/wkentaro/labelme

      然后根据你的任务(语义分割或实例分割)运行相应的脚本,并指定JSON文件所在目录、输出目录和一个定义好所有类别名的labels.txt文件。

💡 实用技巧与注意事项

掌握基础操作后,下面这些技巧能让你的标注工作更高效、准确:

  • 规划标签列表 :在开始大型标注项目前,先预先定义好所有可能的类别名称 (如 cat, dog, road, building),并确保所有标注人员统一使用,避免出现大小写或单复数的混乱。

  • 高效编辑 :如果标注的点位有偏差,可以点击 Edit Polygons 按钮,然后拖动点来进行微调。

  • 处理带洞目标 :如果一个物体内部包含空洞(例如甜甜圈),你需要标注两个多边形:先标注外部轮廓,再标注内部空洞的轮廓,并将内部空洞的标签设置为 _background_,这样转换后空洞区域就会被正确识别为背景。

  • 解决中文乱码(Windows用户) :部分Windows用户可能在查看转换后的可视化图片时遇到标签中文乱码的问题。这是因为Labelme的某个源码文件在读取文件时未指定编码。解决方法是找到 label_file.py 文件,在大约第36行,修改代码为:

    python 复制代码
    with open(filename, 'rb' if PY2 else 'r', encoding='utf-8') as f:

    即添加 encoding='utf-8'

🗂️ 从标注到数据集

完成所有标注和转换后,你应该得到一个结构清晰的数据集文件夹,通常包含以下内容:

  • JPEGImages/:存放所有的原始图片。
  • SegmentationClass/:存放转换后的像素级标签PNG图像。这是语义分割训练最关键的真值文件。
  • class_names.txt:列出数据集中所有的类别名称。

现在,你的自定义数据集已经准备就绪,可以用于训练你自己的图像分割模型了!

相关推荐
Elastic 中国社区官方博客2 小时前
Elasticsearch:相关性在 AI 代理上下文工程中的影响
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索
HMS Core2 小时前
【FAQ】HarmonyOS SDK 闭源开放能力 — Push Kit
linux·python·华为·harmonyos
CODE_RabbitV2 小时前
【1min 速通 -- PyTorch 张量数据类型】张量类型的获取、转化与判别
人工智能·pytorch·python
良策金宝AI2 小时前
2025电力工程AI助手:良策金宝AI如何领跑行业数智化转型?
人工智能·工程设计
网络精创大傻3 小时前
在 AWS 上启动您的 AI 代理:Bedrock、Lambda 和 API 网关
人工智能·云计算·aws
程序猿20233 小时前
Python每日一练---第九天:H指数
开发语言·python
说私域3 小时前
链动2+1模式、AI智能名片与S2B2C商城小程序:破解直播电商流量转化困局的创新路径
人工智能·小程序
武陵悭臾3 小时前
Python应用开发学习:Pygame中实现切换开关及鼠标拖动连续填充功能
python·学习·程序人生·个人开发·pygame
JELEE.3 小时前
Django中的clean()方法和full_clean()方法
后端·python·django