labelme、labelimg的安装及使用(含格式转换)

news2024/10/7 15:29:08

目录

labelme、labelimg简要介绍 

labelme

labelimg

Anaconda虚拟环境

labelme安装

labelme的使用

labelimg安装

labelimg的使用

json格式转换

标注便携操作


labelme、labelimg简要介绍 

        labelme和labelimg都是图像标注工具,它们在机器学习和计算机视觉领域的数据准备阶段扮演着重要的角色。这些工具的主要目的是帮助用户为图像数据集创建标签,这些标签随后可以用于训练机器学习模型,以识别和理解图像中的对象、场景和活动等。

labelme

        labelme是一个开源的图像标注工具,它支持多种类型的标注,包括矩形框、多边形、点、线和圆形等。它提供了一个用户友好的界面,允许用户通过简单的点击和拖动来创建标注。Labelme支持导出多种格式的标注文件,如JSON、XML等,这些文件可以被不同的机器学习框架所使用。

labelimg

        labelimg是另一个广泛使用的图像标注工具,它同样提供了矩形框、多边形、点和线的标注功能。labelimg的用户界面相对简洁,易于上手,同时也支持导出多种格式的标注文件,如XML、CSV等。

Anaconda虚拟环境

在进行 labelme 和 labelimg 安装前需要先创建Anaconda虚拟环境。

详情请参考:深度学习环境搭建详解

在电脑搜索栏中搜索Anacodna Prompt打开Anaconda

最开始界面如下,base是基础环境

(base) C:\Users\ZhuanZ>

创建环境:conda create -n labelme python=3.7.16

其中labelme是需要创建的环境名称,pytho=3.7.16是该环境的python版本,可根据自己的需求调整版本号。

激活环境:activate labelme

退出环境:deactivate

labelme的安装

activate labelme 激活 labelme 的虚拟环境

成功显示以下界面,其中(labelme)是激活的对应环境名称

输入以下代码进行下载:

pip install labelme==3.16.7 -i https://pypi.tuna.tsinghua.edu.cn/simple

这里安装 labelme==3.16.7 的版本,其他的版本容易出现报错(后期易出现维度不匹配的问题)

为减少一些不必要的麻烦,建议大家都安装这个版本

labelme的使用

安装好后直接输入 labelme 即可打开该软件

这里 Open 打开的是单个的图片,Open Dir 打开的是一整个图像文件夹

打开后点击 Create Polygons 进行标注,标注特点:首尾相连形成一个封闭区域、尽可能的贴合目标的边界轮廓

补充:导入图像数据后建议打开这两个进行标签保存,其中 Save Automatically 是指标注后的文件自动保存在当前图像的路径下;Change Output Dir 是指标签保存的指定文件夹(可自己选择),请注意,若要使标签和原图像分开保存,选择完标签保存路径后仍需要再次点击Save Automatically ,不然每次保存时还会跳出那些烦人的窗口。

示例:

我这里选择的是单个图像标注,完成后会让你填写对应的 label ,正确填写即可

labelimg的安装

同样按照 labelme 的方式创建 labelimg 环境

activate labelimg 激活labelimg 虚拟环境

输入以下代码进行下载:

pip install PyQt5 -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install pyqt5-tools -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install lxml -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install labelImg -i https://pypi.tuna.tsinghua.edu.cn/simple/

注意:可能遇到的问题

error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools

上面这个报错如果出现的话基本上是在安装PyQt5时缺少C++的插件造成。

解决办法如下(不唯一):

使用 WIN+R 输入 Powershell 输入以下命令

wget https://aka.ms/vs/17/release/vs_BuildTools.exe -o vs_BuildTools.exe ; cmd /c vs_BuildTools.exe

进入安装界面,注意:对v143生成工具的C++/CLI支持一定要勾选

安装完成后重新下载PyQt5即可

labelimg的使用

安装好后直接输入 labelimg 即可打开该软件

界面及功能与 labelme 基本一致,需要注意 Change Save Dir 是标签保存文件夹路径,标红的地方表示标签的格式,其具有 VOC、YOLO、ML三种格式,标注时请根据需要选择对应的标签格式。

示例:

json格式转换

一般来说我们标注的图像是JMG格式,标注后的图像为JSON格式,而我们传入图像数据进行模型训练的一般是JSON转换后的PNG格式图像。提供的转换脚本如下:

import base64
import json
import os
import os.path as osp
import numpy as np
import PIL.Image
from labelme import utils


if __name__ == '__main__':
    jpgs_path = "datasets/JPEGImages"
    pngs_path = "datasets/SegmentationClass"

    classes = ["_background_", "cat", "dog"]

    count = os.listdir("./datasets/before/")
    for i in range(0, len(count)):
        path = os.path.join("./datasets/before", count[i])

        if os.path.isfile(path) and path.endswith('json'):
            data = json.load(open(path))

            if data['imageData']:
                imageData = data['imageData']
            else:
                imagePath = os.path.join(os.path.dirname(path), data['imagePath'])
                with open(imagePath, 'rb') as f:
                    imageData = f.read()
                    imageData = base64.b64encode(imageData).decode('utf-8')

            img = utils.img_b64_to_arr(imageData)
            label_name_to_value = {'_background_': 0}
            for shape in data['shapes']:
                label_name = shape['label']
                if label_name in label_name_to_value:
                    label_value = label_name_to_value[label_name]
                else:
                    label_value = len(label_name_to_value)
                    label_name_to_value[label_name] = label_value

            # label_values must be dense
            label_values, label_names = [], []
            for ln, lv in sorted(label_name_to_value.items(), key=lambda x: x[1]):
                label_values.append(lv)
                label_names.append(ln)
            assert label_values == list(range(len(label_values)))

            lbl = utils.shapes_to_label(img.shape, data['shapes'], label_name_to_value)

            PIL.Image.fromarray(img).save(osp.join(jpgs_path, count[i].split(".")[0] + '.jpg'))

            new = np.zeros([np.shape(img)[0], np.shape(img)[1]])
            for name in label_names:
                index_json = label_names.index(name)
                index_all = classes.index(name)
                new = new + index_all * (np.array(lbl) == index_json)

            utils.lblsave(osp.join(pngs_path, count[i].split(".")[0] + '.png'), new)
            print('Saved ' + count[i].split(".")[0] + '.jpg and ' + count[i].split(".")[0] + '.png')

其中 class 是需要分开的种类,jpgs_path 是分开后得到的原图像文件夹路径,pngs_path 是分开后得到的 PNG 格式图像文件夹路径,count 和 path 是需要进行转换的图像数据集路径。具体路径请根据自己的需求进行修改。

标注快捷操作

在这里补充一下标注时的部分快捷键和操作指南:

  • 字母 D 下一张图像
  • 字母 A 上一张图像
  • Ctrl + s 保存标注好的标签(自动保存模式下会自动保存);
  • Ctrl + d 复制当前标签和矩形框;
  • Ctrl + Shift + d 删除当前图片;
  • Ctrl + 滚动滑轮实现放大和缩小
  • Ctrl + z 撤销上一步操作
  • delete 删除标签
  • 标注时尽量贴合目标边界线,尽可能的保证完全标注目标图像且标注区域足够小(不要有多余的部分)

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

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

相关文章

在CentOS 8.5.2111下安装vncserver tigervnc-server

# 参考: How to Install TigerVNC Server on CentOS 8 前提: 默认用root操作所有命令 安装桌面GUI dnf groupinstall "Server with GUI" 安装tigervnc-server dnf install tigervnc-server 增加vncuser用户(这里默认就是vncuse…

基础数据结构-链表,栈,队列

链表 常见的链表有单链表和双链表 单链表:每个结点有一个next指针指向下一个结点,data存放数据 双链表:每个结点有一个next指针指向下一个结点,prev指针指向上一个结点,data存放数据。 4的下一结点为-1,…

【GO语言卵细胞级别教程】11.探索Go语言的面向对象编程之美(含源码仅此一份,先到先得)

【GO语言卵细胞级别教程】11.探索Go语言的面向对象编程之美(含源码仅此一份,先到先得) 目录 【GO语言卵细胞级别教程】11.探索Go语言的面向对象编程之美(含源码仅此一份,先到先得)1.面向对象的引用1.1简介1…

详解TCP/IP五层模型

目录 一、什么是TCP五层模型? 二、TCP五层模型的详细内容 1. 应用层 2. 传输层 3. 网络层 4. 数据链路层 5. 物理层 三、网络设备所在分层 封装和分⽤ 三、Java示例 引言: 在网络通信中,TCP/IP协议是至关重要的。为了更好地理解TCP协议的工…

02-JDK新特性-try-with-resources自动管理资源关闭

try-with-resources 为什么要介绍这个了 看看一下以下代码: public static void fileCopyByTryWithResources(File src, File des) throws IOException {try (FileInputStream fis new FileInputStream(src); FileOutputStream fos new FileOutputStream(des);…

AI预测福彩3D第26弹【2024年4月4日预测--第4套算法重新开始计算第11次测试】

今天清明节假日,一会要外出,可能要晚点回来。咱们尽早先把预测数据跑完,把结果发出来供各位彩友参考。合并下算法,3D的预测以后将重点测试本套算法,因为本套算法的命中率较高。以后有时间的话会在第二篇文章中发布排列…

微电网优化:基于肝癌算法(Liver Cancer algorithm, LCA)的微电网优化(提供MATLAB代码)

一、微电网优化模型 微电网是一个相对独立的本地化电力单元,用户现场的分布式发电可以支持用电需求。为此,您的微电网将接入、监控、预测和控制您本地的分布式能源系统,同时强化供电系统的弹性,保障您的用电更经济。您可以在连接…

Vue3【进阶】

简介 https://cn.vuejs.org/guide/introduction.html 创建vue3工程 【基于 vue-cli创建】 基本和vue-cli的过程类似,只是选择的时候用vue3创建 【基于vite创建】【推荐】 【官网】https://vitejs.cn/ 【可以先去学一下webpack】 步骤 【https://cn.vitejs.…

【APUE】网络socket编程温度采集智能存储与上报项目技术------多进程编程

作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习 擅长领域:驱动开发,嵌入式软件开发,BSP开发 作者主页:一个平凡而乐于分享的小比特的个人主页…

item_search-按关键字搜索淘宝商品接口:精准关键字,多样搜索类型,智能排序——淘宝购物新体验

淘宝购物新体验:item_search接口——精准关键字、多样搜索类型与智能排序 在淘宝购物的新体验中,item_search接口扮演着至关重要的角色,它为用户提供了精准关键字搜索、多样搜索类型以及智能排序等功能,极大地提升了购物的便捷性…

趣学前端 | 综合一波CSS选择器的用法

背景 最近睡前习惯翻会书,重温了《HTML5与CSS 3权威指南》。这本书,分上下两册,之前读完了上册,下册基本没翻过。为了对得起花过的每一分钱,决定拾起来近期读一读。 CSS 选择器 在CSS3中,提倡使用选择器…

Python爬虫-懂车帝城市销量榜单

前言 本文是该专栏的第23篇,后面会持续分享python爬虫干货知识,记得关注。 最近粉丝留言咨询某汽车平台的汽车销量榜单数据,本文笔者以懂车帝平台为例,采集对应的城市汽车销量榜单数据。 具体的详细思路以及代码实现逻辑,跟着笔者直接往下看正文详细内容。(附带完整代码…

程序员的工资是多少,和曹操有莫大的关系

曹操是谁大家都知道了吧,他是三国时期的一个有名的大老板,谁知道曹操的工资是多少呢?这个其实也不好说,有时候曹操赚很多的钱,有时候也亏血本,甚至连脑袋都差点掉了。创业不容易啊,曹老板也是如…

动力云客-B站(第一天)

一 项目技术选型及开发工具 前后端分离的项目(前端项目 后端项目) 前端:Html、CSS、JavaScript、Vue、Axios、Element Plus后端:Spring Boot、Spring Security、MyBatis、MySQL、Redis 相关组件:HiKariCP&#x…

科东软件参加广州机器人产业联盟举办先进工业母机专家研讨会

工业母机是“制造机器的机器”,具有基础性、通用性、战略性特征,包括了减材切削机床、等材成形装备、增材制造装备及其控制系统等,是衡量国家工业水平和竞争力的重要标志。广东省作为全球知名的制造业基地,非常重视高端装备领域工…

(三)LTspice学习交流分析

文章目录 前言一、Edit simulation cmd二、添加激励总结 前言 上一节我们学习了LTspice的安装,很简单,无脑安装 (一)LTspice简介 (二)LTspice学习之简介2 今天我们来学习一下LTspice另一个非常重要的仿真功…

【VASP学习】在Ubuntu系统安装vasp.5.4.4的全过程(包括VASP官方学习资料、安装过程中相关编辑器的配置、VASP的编译及VASP的测试)

在Ubuntu系统安装vasp.5.4.4的全过程 VASP的简介与相关学习资料安装前的准备工作及说明安装过程intel编译器的安装VASP的编译VASP的测试 参考来源 VASP的简介与相关学习资料 VASP(Vienna Ab initio Simulation Package)是基于第一性原理对原子尺度的材料进行模拟计算的软件。比…

7种链游媒体宣发工具助力游戏营销-华媒舍

一. 什么是链游媒体 链游媒体是指以区块链技术为基础,实现游戏与媒体资源之间的连接和交互的媒体形态。通过区块链技术,链游媒体能够确保游戏内容和媒体信息的透明性和不可篡改性,提供更加公正、透明的游戏环境。 二. 链游媒体宣发工具的重要…

使用 mitmproxy 抓包 grpc

昨天在本地执行 grpc 的 quick start(python版本的),我了解 grpc 内部使用的是 HTTP2,所以我就想着抓包来试试,下面就来记录一下这个过程中的探索。 注意:我的电脑上面安装了 Fiddler Classic,…

基于卷积神经网络的土豆疾病识别系统(pytorch框架)【python源码+UI界面+前端界面+功能源码详解】

功能演示: 土豆疾病识别系统,基于vgg16,resnet50卷积神经网络(pytorch框架)_哔哩哔哩_bilibili (一)简介 基于卷积神经网络的土豆疾病识别系统是在pytorch框架下实现的,系统中有两…