Labelme的安装与使用教程

news2024/11/25 2:21:59

文章目录

  • 一、Labelme是什么?
  • 二、安装步骤
    • 1.新建虚拟环境
    • 2.安装Labelme
    • 3.Labelme的使用
  • 三、json2yolo


一、Labelme是什么?

Labelme是一个用于图像标注的开源工具,可以实现图像标注、语义分割、实例分割等。

本文记录一下labelme的安装与使用,主要是用于语义分割的,因为我只有一个类别~。

二、安装步骤

1.新建虚拟环境

我这边是新建了一个新的虚拟环境,这样看起来更直观一些。当然也可以在已安装的虚拟环境中安装,毕竟也只是一个工具模块。新建虚拟环境的推荐使用Annconda进行新建虚拟环境。在安装完成Annconda后,在菜单栏搜索界面中搜索Anaconda Prompt (Anaconda)并打开,输入conda create -n test python=3.8创建虚拟环境。

conda create -n test python=3.8

在这里插入图片描述

输入y确认安装。

在这里插入图片描述

命令会自动安装一些必要库,结束之后,虚拟环境就创建完成啦。

2.安装Labelme

  1. 查看本地使用annconda创建的所有虚拟环境,可以看到刚刚创建的test也在其中。

     conda env list
    

在这里插入图片描述

  1. 输入conda activate test激活虚拟环境,test为刚刚创建的虚拟环境名称

     conda activate test
    

在这里插入图片描述

在输入了激活命令后,便由基础环境(base)转到了(test),输入conda install pyqt,这是在安装labelme之前需要安装的第一个库,安装过程中选择y继续安装pyqt的相关库。

	conda install pyqt
  1. 继续输入conda install pillow安装pillow模块

    conda install pillow
    

在这里插入图片描述

  1. 在安装labelme库的时候就不能在conda里面进行安装了,需要使用pip命令。这里记录一个简便进入虚拟环境的方法。打开Annconda的安装目录D:\Anaconda3\envs(这里是我的安装路径),在envs里面就是所有创建的虚拟环境啦。进入刚刚创建的虚拟环境,在 D:\Anaconda3\envs\test\Scripts此目录下,在上方文件目录中输入cmd就进入到虚拟环境中了。
    在这里插入图片描述

在这里插入图片描述

连接清华镜像源后进行安装

	pip install labelimg -i https://pypi.tuna.tsinghua.edu.cn/simple

在这里插入图片描述

至此,模块的安装部分就结束了,在命令行中输入labelme,便会打开labelme的操作界面。

在这里插入图片描述

ps:在安装pyqt和pillow的时候也可以像安装labelme一样在文件中打开虚拟环境,连接镜像源进行安装。

3.Labelme的使用

在控制台输入labelme打开Labelme。

在这里插入图片描述


在labelme软件中,最主要的几个功能如下:

1️⃣打开:只打开一张图像进行标注,建议通过第二个功能打开包含图像的文件夹,进行标注。

2️⃣打开目录:点击后会弹出一个窗口,选择一个文件夹,文件夹中包含要进行标注的图像。

3️⃣上一幅:在打开目录的情况下,点击后可切换到上一张图片,也可以使用快捷键a

4️⃣下一幅:在打开目录的情况下,点击后可切换到下一张图片,也可以使用快捷键d

5️⃣保存:在标注完成后,会生成标签文件。保存选项即选择本地的一个文件夹保存标签文件。建议在选择完打开目录后,便选择一个文件夹路径保存将要生成的标签文件。

6️⃣创建多边形:这一个功能是最重要的,选择了一张图像后便可以进行标注,选择这个功能后即可这对界面中显示的图像进行分割标注,注意标注点要尽可能贴合目标,也可以使用快捷键w

❗ 注意在标注的时候,最后一个点要首尾相连。完成后会弹出一个窗口,在窗口内输入标签,确认后一幅图像就标注完成啦。这样便会在保存目录中生成标签的json文件。

在这里插入图片描述

在这里插入图片描述

在json文件中,
shapes用于内存放目标的相关信息;

imagePath表示被标注图像的相对存储路径;

imageData表示被存储的图像的编码数据;

imageHeight表示该图像的高度;

imageWidth表示该图像的宽度。

在这里插入图片描述

shapes内中的label是目标名称,points内保存了标注过程中点的坐标,从左上角(0,0)开始算起。

在这里插入图片描述

三、json2yolo

为了能够满足yolo模型的训练,其传入的标签格式是txt的,所以需要将标注的json格式的数据转成txt格式,代码如下:

import cv2  
import os  
import json  
import glob  
import numpy as np  
  
def convert_json_label_to_yolov_seg_label():  
    json_path = r"D:\\image_denoising_test\\self_test\\RestLabel"  # 本地json路径
    json_files = glob.glob(json_path + "/*.json")  
    print(json_files)  
  
    # 指定输出文件夹  
    output_folder = "D:/image_denoising_test/self_test/RestLabel/txt"  # txt存放路径
    if not os.path.exists(output_folder):  
        os.makedirs(output_folder)  
  
    for json_file in json_files:  
        print(json_file)  
        with open(json_file, 'r') as f:  
            json_info = json.load(f)  
  
        img = cv2.imread(os.path.join(json_path, json_info["imagePath"]))  
        height, width, _ = img.shape  
        np_w_h = np.array([[width, height]], np.int32)  
  
          
        txt_file = os.path.join(output_folder, os.path.basename(json_file).replace(".json", ".txt"))  
  
        with open(txt_file, "w") as f:  
            for point_json in json_info["shapes"]:  
                txt_content = ""  
                np_points = np.array(point_json["points"], np.int32)  
                norm_points = np_points / np_w_h  
                norm_points_list = norm_points.tolist()  
                txt_content += "0 " + " ".join([" ".join([str(cell[0]), str(cell[1])]) for cell in norm_points_list]) + "\n"  
                f.write(txt_content)  
  
convert_json_label_to_yolov_seg_label()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2045751.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【系统架构设计】系统性能评价(一)

【系统架构设计】系统性能评价(一) 性能指标对计算机对网络对操作系统对数据库管理系统对Web服务器 性能计算MIPS(百万条指令/秒)计算方法峰值计算等效指令速度 性能设计性能评估 性能指标 对计算机 时钟频率(主频) 指计算机处…

搜维尔科技:Varjo XR-4 功能详解:实现业界首个凝视驱动自动对焦系统

对可变焦光学元件的需求 目前,所有其他XR HMD都在视频直通摄像头中使用定焦光学元件,其焦距无法改变。人眼可以辨别高达约 60 像素/度 ( PPD ) 的细节,但定焦光学元件的问题在于,在实践中,它们的分辨率极限约为 30 PP…

ESP8266与阿里云物联网平台连接

前言 最近折腾项目,需要用到ESP8266模块对接阿里云物联网平台,网上感觉十分完善的教程少了一点点,比较折腾我哈哈哈,所以打算自己写一篇。 材料准备 1、ESP8266 WiFi模块 数据线 网上随便买一个就好,十块钱左右一个…

BERT:BidirectionalEncoderRepresentations fromTransformers代码及数据解读

论文地址 写在前面 由于官网给的是TensorFlow版本的,github也有pytorch版本,但是给出的pytorch的代码是需要根据实际情况进行修改的。 词表文件vocab.txt文件读取的问题 vocab.py代码的class WordVocab(Vocab)类中的def load_vocab(vocab_path)函数为…

看看人家都用树莓派5做了什么产品?

文章作者: Aleksandar Dakić 原文地址: https://magazinmehatronika.com/edatec-ed-hmi3020-070c-hmi-recenzija/ Aleksandar Dakić《机电一体化》的杂志主编,同时Aleksandar 也是《机电一体化》杂志的创始人。拥有电气工程背景&#x…

MySQL的安装及配置远程链接(WindowsLinux下安装)

一.Windows下安装 在Windows下安装MySQL需要先去官网下载一下安装包 1. 官网下载地址:www.mysql.com 2、选择下载 往下滑选择MySQL 社区 (GPL) 下载 3、选择社区版适配Windows系统 MySQL Installer for Windows 4、选择本地安装版本 my…

十五年以来 — 战略性云平台服务的演进路径之全面呈现(含亚马逊、微软和谷歌)

Gartner每年都发布对全球IaaS平台进行评估的魔力象限报告。2023年底,Gartner将此项评估的名称改为“战略性云平台服务”(Strategic cloud platform services),尽管其核心仍为IaaS,但是,毫无疑问&#xff0c…

算法工程师必知必会的数学基础之微积分下篇

系列文章: 第一篇:算法工程师必知必会的数学基础之线性代数第二篇:算法工程师必知必会的数学基础之微积分上篇第三篇:算法工程师必知必会的数学基础之微积分下篇(本文) 文章目录 2. 微积分2.7 泰勒级数&am…

【大模型从入门到精通24】开源库框架LangChain Embedding的力量1

这里写目录标题 嵌入的力量什么是嵌入?创建嵌入的详细过程嵌入在语义搜索中的应用向量存储:相似向量的有效检索关键特性与操作选择向量存储的标准示例:Chroma 适用于快速原型开发和小型数据集结论 嵌入的力量 什么是嵌入? 嵌入是…

通过CLIP引导解码减轻大型视觉-语言模型中的幻觉问题

人工智能咨询培训老师叶梓 转载标明出处 大型视觉-语言模型(LVLMs)因其在视觉推理方面的能力而备受瞩目,被视为实现自主操作智能体的重要里程碑。但它在生成文本时容易出现对象幻觉问题,即描述中包含不存在的对象,这严…

一文带你入门大模型微调

大模型相关目录 大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容 从0起步,扬帆起航。 swift与Internvl下的多模态大模型分布式微调指南(附代码和数据&#xff…

MTK 相机功耗拆解方法

和你一起终身学习,这里是程序员Android 经典好文推荐,通过阅读本文,您将收获以下知识点: 一、硬件功耗二、相机软件功耗三、参考文档 一、硬件功耗 1.1 硬件信息 以下硬件信息最好提前获取到 模块备注平台MTK or Qcom or sprdCPU频率大中小核…

【Qt开发】事件与信号/事件过滤器

事件与信号/事件过滤器 事件一、事件的产生二、事件的派发三、事件类和事件类型四、事件的处理 事件与信号事件过滤器 事件 Qt系统的图形化窗口是由事件驱动的。,点击鼠标、按键,改变窗口大小、最小化窗口、关闭窗口等都会产生相应的事件。 QWidget类的所…

shuashuashua

CVE-2023-2130 靶标介绍: 在SourceCodester采购订单管理系统1.0中发现了一项被分类为关键的漏洞。受影响的是组件GET参数处理器的文件/admin/suppliers/view_details.php中的一个未知函数。对参数id的操纵导致了SQL注入。可以远程发起攻击。 通过标靶介绍可以知道…

通过域名和HTTPS上线MSF

使用受信任证书的Meterpreter载荷 现在大多数安全解决方案还会通过分析进出目标机器的流量来进行网络入侵检测。在这种情况下,很可能即使使用编码器绕过了防病毒软件,但有效载荷也会在尝试连接到我们的侦听器时被捕获和拦截。 # 准备工作 首先需要准备…

FPGA开发——UART回环实现之接收模块的设计

一、简介 因为我们本次进行串口回环的实验的对象是FPGA开发板和PC端,所以在接收和发送模块中先编写接收模块,这样可以在后面更好的进行发送模块的验证。(其实这里先编写哪个模块)都不影响,这里看自己心情,反…

大语言模型微调框架Unsloth:简化模型微调流程,提升模型性能

Unsloth 将 Llama-3、Mistral、Phi-3 和 Gemma 等大型语言模型的微调速度提高了 2 倍,内存使用量减少了 70%,而且准确性不会降低! 特点 通过手动派生所有计算繁重的数学步骤和手写 GPU 内核,unsloth 可以在不更改任何硬件的情况…

IMU助力跑步参数评估

近期,中国研究团队开发了一种创新的跑步参数评估方法,巧妙结合了IMU和多模态神经网络技术,旨在深入研究并有效评估跑步时的步态参数。 科研团队采用IMU传感器,将其固定在跑者的脚踝处,以实时监测并记录跑步时脚踝的加速…

如何利用RPA自动化流程机器人优化企业财务流程

随着企业规模的扩大和业务的复杂性增加,财务流程管理成了一个关键而复杂的任务。传统的财务流程往往涉及大量的重复性、繁琐的工作,不仅效率低下,而且容易出错。为了解决这些问题,越来越多的企业开始引入RPA机器人流程自动化来优化…

JAVA集中学习第五周学习记录(二)

系列文章目录 第一章 JAVA集中学习第一周学习记录(一) 第二章 JAVA集中学习第一周项目实践 第三章 JAVA集中学习第一周学习记录(二) 第四章 JAVA集中学习第一周课后习题 第五章 JAVA集中学习第二周学习记录(一) 第六章 JAVA集中学习第二周项目实践 第七章 JAVA集中学习第二周学…