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

目录

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 utilsif __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 denselabel_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 是需要进行转换的图像数据集路径。具体路径请根据自己的需求进行修改。

标注便携操作

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【卫星家族】 | 高分六号卫星影像及获取

1. 卫星简介 高分六号卫星(GF-6)于2018年6月2日在酒泉卫星发射中心成功发射,是高分专项中的一颗低轨光学遥感卫星,也是我国首颗精准农业观测的高分卫星,具有高分辨率、宽覆盖、高质量成像、高效能成像、国产化率高等特…

智慧驿站式的“智慧公厕”,给城市新基建带来新变化

随着智慧城市建设的推进,智慧驿站作为一种多功能城市部件,正逐渐在城市中崭露头角。这些智慧驿站集合了智慧公厕的管理功能,为城市的新基建带来了全新的变革。本文以智慧驿站智慧公厕源头实力厂家广州中期科技有限公司,大量精品案…

正大国际:安全合规的外盘期货途径

“外盘期货”一词是指在中国大陆以外建立的期货交易市场。交易所基于国内期货和外盘期货的全球定价、价格权威、巨大的外部交易量、成熟的交易市场和交易机制、强大的流动性、巨大的市场容量、在中国大陆没有控制和强劲的趋势。然而,许多人被引诱进入非法甚至非法平…

金三银四求职季,最新面试题分享和解析,建议收藏

随着金三银四招聘旺季的到来,在这个竞争激烈的时刻,了解最新的软件测试面试题,充分准备面试,对求职者来说显得尤为重要。本文将分享一些金三银四期间最新的软件测试面试题,帮助求职者更好地应对面试挑战。 一.登录页面…

快速上手Spring Cloud 十六:与DevOps的完美协同

快速上手Spring Cloud 一:Spring Cloud 简介 快速上手Spring Cloud 二:核心组件解析 快速上手Spring Cloud 三:API网关深入探索与实战应用 快速上手Spring Cloud 四:微服务治理与安全 快速上手Spring Cloud 五:Spring …

Jenkins实现CICD

Jenkins实现CICD JenkinsCI简介环境安装新建任务源码管理构建配置发送邮件配置自动化项目定时构建 JenkinsCD简介配置ssh保证其可以免登录接下来配置github的webhook正式实现自动化打包master主分支的代码将前端三剑客代码文件发送到网站服务器对应的tomcat Jenkins面试题 Jenk…

JavaScript发票查验接口如何集成?返回错误的信息原因是什么呢?

发票查验的过程中,很可能出现各种各样的问题,那么返回错误信息的原因一般可能是因为以下几种原因:第一种是接口没有调通,第二种是本身发票就是一张错票、假票,第三种可能是税局系统或网络问题等等,如果在使…

迈向数字化医疗:互联网医院APP开发中的设计思路与技术要点

在开发互联网医院APP时,需要综合考虑设计思路和技术要点,确保用户体验和医疗服务质量的提升。接下来,小编将从设计思路和技术要点两个方面进行讲解。 一、设计思路 用户导向:在设计互联网医院APP时,需要将用户体验放在…

ADB 命令之 模拟按键/输入

ADB 命令之 模拟按键/输入 模拟按键/输入 在 ​​adb shell​​​ 里有个很实用的命令叫 ​​input​​&#xff0c;通过它可以做一些有趣的事情。 ​​input​​ 命令的完整 help 信息如下&#xff1a; Usage: input [<source>] <command> [<arg>...] Th…

[人工智能] AI为农业赋能:智能灌溉系统

前言 人工智能&#xff08;AI&#xff09;在农业方面具有广泛的应用前景&#xff0c;这主要得益于其在数据处理、预测分析和决策优化等方面的优势。 农业生产涉及到大量的数据&#xff0c;包括土壤湿度、气温、降雨量、植物生长情况等。人工智能可以利用先进的数据处理技术&…

AE——重构数字(Pytorch+mnist)

1、简介 AE&#xff08;自编码器&#xff09;由编码器和解码器组成&#xff0c;编码器将输入数据映射到潜在空间&#xff0c;解码器将潜在表示映射回原始输入空间。AE的训练目标通常是最小化重构误差&#xff0c;即尽可能地重构输入数据&#xff0c;使得解码器输出与原始输入尽…

分享一个宝藏课程:近屿AIGC工程师和产品经理训练营

说起AIGC&#xff0c;大家都会自然地想到近两年火的一塌糊涂的ChatGPT,而开发出它的OpenAI&#xff0c;去年年底的年化收入已突破16亿美元&#xff0c;部分OpenAI的管理层认为&#xff0c;按目前进度&#xff0c;到2024年底&#xff0c;OpenAI的年化收入至少能达到50亿美元。而…