【教程】标注工具Labelimg的安装与使用

【教程】标注工具Labelimg的安装与使用

图片标注主要是为了建立自己的数据集,便于进行更深度的学习训练。本篇文章将对一款十分好用的图片标注工具labelimg进行介绍,重点介绍其安装以及使用的过程。

- 什么是labelimg

labelimg 是一个可视化的图像标定工具。它是用Python编写的,并将Qt用于其图形界面。批注以PASCAL VOC格式(ImageNet使用的格式)另存为XML文件。此外,它还支持YOLO格式。Faster R-CNN,YOLO,SSD等目标检测网络所需要的数据集,均需要借此工具标定图像中的目标。

在安装labelimg之前,我们需要先进行一个环境搭建,搭建环境之后再进行labelimg的安装和使用。

打开anaconda3的安装文件,进入安装界面,在install for安装选项中建议勾选all users,如下图。

在设置安装路径时,不建议使用默认的安装路径,建议在其他的盘符中新建文件夹进行安装。

在advanced options中勾选第一个√,将anaconda3的安装路径加入环境变量中。

安装完成后,打开开始菜单栏,选择anaconda3-anaconda prompt进入命令行。

在命令行中输入下列代码,若如下图显示pip版本号则证明anaconda3安装成功。

pip --version

环境配置完成后就可以进行labelimg的安装啦!

安装labelimg

在命令行窗口中依次输入下列代码,安装labelimg依赖的第三方库。

pip install PyQt5

pip install pyqt5-tools

pip install lxml

pip install labelimg

(注:此处可能会因网络原因造成卡顿,请耐心等待,若因为网络问题安装失败则重试)

使用pip安装第三方库流程如下:

#安装PyQt5,安装成功截图如下

#安装pyqt5-tools,安装成功截图如下

#安装lxml,安装成功截图如下

#安装labelimg,安装成功截图如下

至此,环境配置步骤已经全部完成。在第三方库安装完成后,在命令行中输入labelimg指令以启动labelimg(注:环境配置完成后再次启动只需要打开anaconda prompt命令行并输入labelimg即可启动,无需再次安装第三方库)。

进入labelimg标注工具的初始化界面如下图所示。

2. labelimg使用说明

2.1 使用labelimg进行数据集标注

labelimg的标注模式分为VOC和YOLO两种,两种模式下生成的标注文件分别为.xml文件和.txt文件,因此在进行标注前需要优先选择好标注的模式。

labelimg左侧菜单栏中按钮功能说明如下。

按钮功能
Open打开单个图像文件
Open Dir打开文件夹多幅图像
Change Save Dir标注后图像数据存储的路径
Next Image切换到下一张图像
Prev Image切换到上一张图像
Verify Image校验图像
Save保存图像
Create RectBox画一个标注框
Duplicate RectBox重复标注框
Delete RectBox删除标注框
Zoom In放大图像
Zoom Out缩小图像
Fit Window图像适应窗口
Fit Width图像适应宽度

在labelimg中,标注的快捷键为w,标注后用鼠标拖动锚框进行框选,框选完毕后会弹出类别选择框,如果是当前已有类则直接选择即可,若需要新加类别则在输入框中输入类别标签并确定。

(YOLO标注模式下)标注完成后数据集整体结构如下图所示。

2.2 标签文件解释

使用labelimg标注产生的结果如下。

使用labelimg以VOC模式进行标注产生的标注文件如下,与YOLO标注模式产生的类别标签不同,.xml标注文件不需要将类别文件单独进行存放,因为其中已经包含了标注锚框的位置信息和类别信息。

使用labelimg以YOLO模式进行标注产生的标注文件如下,classes.txt文件中存放的是类别标签,标签文件中以类别+锚框的位置坐标信息进行保存,文件中有几行则说明对应的标注图像中有几个锚框。

3. labelimg操作快捷键汇总

标注常用快捷键如下所示。

Ctrl + s 保存当前改动(注:切换图片时若未保存则会进行询问)

Ctrl + d 复制当前标签和矩形框

space 将当前图像标记为已验证

w 创建一个矩形框

d 下一张图片

Del 删除选定的矩形框

Ctrl + +/Ctrl + 滚轮向前 放大

Ctrl + -/Ctrl + 滚轮向后 缩小

↑→↓← 键盘箭头移动选定的矩形框

labelimg完整的快捷键列表如下。

快捷键功能快捷键功能
Ctrl + Q退出软件Ctrl + +放大
Ctrl + UOpen DirCtrl + =原始大小
Ctrl + RChange Save DirCtrl + F图像适应窗口
Ctrl + S保存图像Ctrl + E编辑标签
Ctrl + L线框颜色W画框
Ctrl + J移动编辑标注框Delete删除框
Ctrl + D复制框Ctrl + shift + F图像适应宽度
Ctrl + H隐藏所有的框DNext Image
Ctrl + A显示所有的框APrev Image
space标记当前图片已标记Ctrl + shift + O打开的文件夹只显示.xml文件

这篇文章的目的,就是为了让大家能够更好的安装和使用 labelimg,以及labelimg的一些小窍门。在目标检测上,了解labelimg及其使用还是很有必要的。

本篇文章到这里就结束啦,关于我们更多请前往官网了解https://www.easy-eai.com/

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

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

相关文章

HDFS客户端UnknownHostException事故解析

文章目录 前言事故现场问题分析是否是整个域名解析服务当时都出问题了是否是出问题的pods本身的域名解析有问题 异常发生的全部过程域名的解析是什么时候发生的,怎么发生的域名解析的详细流程 重试发生在什么地方为什么重试会无效 Bugfix代码详解关于StandardHostRe…

特殊权限(suid sticky acl mask)

1.suid 1. 普通用户可不可以修改密码? 答:是可以的,可以修改自己的密码 2. /etc/shadow 文件的作用是什么? 答:存储用户密码的文件 3. 普通用户是否可以修改/etc/shadow 文件? 答:不可以&…

STM32+Codesys工业软件PLC解决方案

工业控制系统在现代制造和自动化领域扮演着关键角色, 基于IEC 61131-3 标准的控制器编程开发软件平台CODESYS,适用于多种行业的控制系统的开发,使用户方便快捷地对自动化工程进行编程和配置,完成项目开发、软件测试和应用调试。 本次STM32联合合作伙伴C…

服务器运行状况监控工具

服务器运行状况监视提供了每个服务器状态和性能的广泛概述,通过监控服务器指标,如 CPU 使用率、内存消耗、I/O、磁盘使用率、进程等,服务器运行状况监控可以避免服务器停机。 服务器性能监控指标 服务器是网络中最重要的组件之一&#xff0…

计算机网络复习6

应用层 文章目录 应用层网络应用模型域名系统DNS文件传输协议FTP电子邮件万维网 网络应用模型 客户/服务器模型 客户/服务器(Client/Server,C/S)模型中,有一个总是打开的主机称为服务器,它服务于许多来自其他称为客户机的主机请求…

Java集合/泛型篇----第一篇

系列文章目录 文章目录 系列文章目录前言一、ArrayList和linkedList的区别二、HashMap和HashTable的区别三、Collection包结构,与Collections的区别四、泛型常用特点前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站…

Spring系列学习四、Spring数据访问

Spring数据访问 一、Spring中的JDBC模板介绍1、新建SpringBoot应用2、引入依赖:3、配置数据库连接,注入dbcTemplate对象,执行查询:4,测试验证: 二、整合MyBatis Plus1,在你的项目中添加MyBatis …

从零开始:使用 BIND 构建和管理您的 DNS 服务器

1 前言 在这篇文章中,我将详细介绍如何使用 BIND(Berkeley Internet Name Domain)软件包中的 named 程序来配置和管理一个基本的 DNS 服务器。 从安装 BIND 开始,到设置 DNS 区域文件,再到运行和测试您的服务器&#x…

Oracle 19c OCP 1z0 082考场真题解析第17题

考试科目:1Z0-082 考试题量:90 通过分数:60% 考试时间:150min 本文为云贝教育郭一军guoyJoe原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。 17. Which three …

AQS之ReentrantReadWriteLock

AQS之ReentrantReadWriteLock 一. 归纳总结 ReentrantReadWriteLock适合读多写少的场景。是可重入的读写锁实现类。其中, 写锁是独占的,读锁是共享的。 支持锁降级(持有写锁、获取读锁,最后释放写锁的过程) 锁降级可以帮助我们…

oracle-存储结构

文件包括 控制文件.ctl、数据文件.dbf、日志文件.log这三类放在存储上。 参数文件:空间的划分,进程的选用(.ora) oracle启动的时候需要读一下,数据库启动后,参数文件并不关闭,但即使文件丢了&a…

Python生成器 (Generators in Python)

Generators in Python 文章目录 Generators in PythonIntroduction 导言贯穿全文的几句话为什么 Python 有生成器Generator?如何获得生成器Generator?1. 生成器表达式 Generator Expression2. 使用yield定义生成器Generator 更多Generator应用实例表示无…

车牌识别技术,如何用python识别车牌号

目录 一.前言 二.运行环境 三.代码 四.识别效果 五.参考 一.前言 车牌识别技术(License Plate Recognition, LPR)在交通计算机视觉(Computer Vision, CV)领域具有非常重要的研究意义。以下是该技术的一些扩展说明&#xff1…

Day20 222完全二叉树的节点个数 110平衡二叉树 257二叉树的所有路径

222 完全二叉树的结点个数 本题先不把它当成完全二叉树来看,用广度优先和深度优先搜索分别遍历,也能达到目的,只要将之前的代码稍加修改即可。注意后序遍历时的result要加上自身本身的那个结点。 //后序递归遍历 class Solution { public:in…

STL——集合算法

算法简介: set_intersection // 求两个容器的交集set_union // 求两个容器的并集set_difference // 求两个容器的差集 1.set_intersection 函数原型: set_intersection(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);…

【办公技巧】怎么批量提取文件名到excel

Excel是大家经常用来制作表格的文件,比如输入文件名,如果有大量文件需要输入,用张贴复制或者手动输入的方式还是很费时间的,今天和大家分享如何批量提取文件名。 打开需要提取文件名的文件夹,选中所有文件&#xff0c…

iptables 防火墙(二)

目录 1. SNAT 策略及应用 1.1 SNAT策略概述 1. 只开启路由转发,未设置地址转换的情况 2. 开启路由转发,并设置SNAT转换的情况 1.2 SNAT策略的应用 1. 2.1 共享固定IP上网 (1)打开网关的路由转发 (2)…

MongoDB 概念介绍

1、MongoDB 应用场景 传统的关系型数据库,在数据操作的"三高"需求以及应对Web2.0的网站需求面前,显得力不从心。 High performance -对数据库高并发读写的需求。Huge Storage -对海量数据的高效率存储和访问的需求。High Scalability &&…

Java核心知识点1-java和c++区别、隐式和显示类型转换

java和c区别 java通过虚拟机实现跨平台特性,但c依赖于特定的平台。java没有指针,它的引用可以理解为安全指针,而c和c一样具有指针。java支持自动垃圾回收,而c需要手动回收。java不支持多重继承,只能通过实现多个接口来…

C++进阶--二叉树进阶(二叉搜索树)

二叉树进阶(二叉搜索树) 一、二叉搜索树1.1 二叉搜索树的概念 二、二叉搜索树的结构2.1 结点结构2.2 树结构 三、二叉搜索树的操作(非递归)3.1 二叉搜索树的插入3.2 二叉搜索树的查找3.3 二叉搜索树的中序遍历3.4 二叉搜索树的删除…