YOLOv5--利用labelimg标注数据集

该文章已生成可运行项目,

前言:

        Labelimg是一个图形图像注释工具。它是用Python编写的,并使用Qt作为其图形界面。注释以PASCAL VOC格式保存为XML文件,这是使用的ImageNet格式。此外,它还支持YOLO格式和 CreateML 格式。本文主要记录利用labelimg标注数据集时所遇到的问题

1、labelimg下载

        way1:法1:从官网下载→下载地址:https://github.com/tzutalin/labelImg

        way2:如果你和我一样懒就直接网盘下载吧(感谢提供资源的大佬!)

链接:百度网盘 请输入提取码 

提取码:j666

        注:下载完后记得解压。记得参看其解压后的文件夹内容是否存在嵌套,即labelimg文件夹中还有labelimg文件夹,如下图所示。如果是的话,把最底层的文件夹的内容复制到顶层文件文件,以免后面步骤出错。具体原因参考:安装labelImg时,执行pyrcc5 -o libs/resources.py resources.qrc 报错: File does not exist ‘resources.qrc‘

2、 labelimg的安装

Step1:WIN+R打开终端,依次输入以下指令:

d:                
cd [自己的文件位置]

        注:d:是自己labelimg所在盘,如在c盘,则输入:c: 

Step2:安装 pyqt,本文安装的是pyqt5 

conda install pyqt=5

        安装完成就是下图这样: 

        注:(1)由于每个人的电脑配置不一样,安装结果也不一致。本文所参考的文献的 安装结果如下图所示:

        (2)如出现:

'conda' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

         解决步骤如下:

  1. 右键「此电脑」→「属性」→「高级系统设置」→「环境变量」。
  2. 在「系统变量」或「用户变量」中找到「Path」,双击打开。
  3. 点击「新建」,分别添加以下两个路径(替换为你的实际安装路径):
    • conda 根目录:例如 C:\Users\23665\Anaconda3
    • scripts 目录(conda.exe 所在位置):例如 C:\Users\23665\Anaconda3\Scripts
  4. 点击「确定」保存所有设置。

     

Step3: 安装完成后,执行命令

pyrcc5 -o libs/resources.py resources.qrc

        注: (1)若是出现File does not exist 'resources.qrc',说明在你没有看1、labelimg下载的注释

        (2)这个命令没有返回结果。

Step4:打开labelimg

python labelImg.py

运行结果如下:

        注:若打开时,出现该报错信息:ModuleNotFoundError: No module named 'lxml',其解决方案:依次输入一下命令:

pip install wheel
pip install lxml

        如果在安装时,出现该报错信息: pip._vendor.urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.则在每个命令后面添加: -i https://pypi.tuna.tsinghua.edu.cn/simple,其作用是切换镜像源,加速下载,今后遇到类似的情况,可以优先尝试该方法。

3、 labelImg 的使用

Step1:打开labelimg

        win+r打开终端,进入到labelimg文件夹所在位置,输入python labelImg.py,即可打开labelimg。如图所示。

Step2:在yolov5目录下新建一个名为VOCData的文件夹

Step3:在VOCData的文件夹内建立Annotations和images文件夹

  • Annotations:存放标注的标签文件
  •  images:存放需要打标签的图片文件

Step4:标注前的设置

        (1)将要标注的图片放入images文件夹内,运行软件前可以更改下要标注的类别。

        (2)在labelimg的data文件下找到predefined_classes.txt 这个txt文档,在里面输入自定义的类别名称,如下图所示:

Step5: 开始标注

        标注前我们先认识一下功能键。如下图所示:

还有view的一些功能键,如下图所示: 

 常用快捷键如下:

A: 切换到上一张图片
D: 切换到下一张图片
W:调出标注十字架
del : 删除标注框框
Ctrl+u: 选择标注的图片文件夹
Ctrl+r: 选择标注好的label标签存在的文件夹

 接下来打开图片,按住鼠标左键就可以标注了。

点击鼠标右键还可以移动选框位置和调整大小。 

标签打完以后可以去Annotations 文件下看到标签文件已经保存在这个目录下。

      

报错信息:

标错1:

QMimeDatabase: Error loading internal MIME data
An error has been encountered at line 1 of <internal MIME data>: Premature end of document.:
Traceback (most recent call last):
  File "D:\labelImg-master\labelImg.py", line 1359, in open_dir_dialog
    self.import_dir_images(target_dir_path)
  File "D:\labelImg-master\labelImg.py", line 1374, in import_dir_images
    self.open_next_image()
  File "D:\labelImg-master\labelImg.py", line 1429, in open_next_image
    self.change_save_dir_dialog()
  File "D:\labelImg-master\labelImg.py", line 1309, in change_save_dir_dialog
    self.show_bounding_box_from_annotation_file(self.file_path)
  File "D:\labelImg-master\labelImg.py", line 1198, in show_bounding_box_from_annotation_file
    xml_path = os.path.splitext(file_path)[0] + XML_EXT
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen ntpath>", line 258, in splitext
TypeError: expected str, bytes or os.PathLike object, not NoneType

解决方案:

 

self.show_bounding_box_from_annotation_file(str(self.file_path))

 报错2:在标注时,labelimg可能会出现闪退,此时要在终端参看报错信息,并进行修复。本文在标注时就遇到如下错误:在使用labelimg的框选和label显示功能时,提示canvas.py或者shape.py中drawLine、drawRect、drawText不支持float类型作为参数。

E:\python_test\Visual_Test\labelImg>python labelImg.py
QMimeDatabase: Error loading internal MIME data
An error has been encountered at line 1 of <internal MIME data>: Premature end of document.:
Traceback (most recent call last):
  File "E:\python_test\Visual_Test\labelImg\libs\canvas.py", line 530, in paintEvent
    p.drawLine(self.prev_point.x(), 0, self.prev_point.x(), self.pixmap.height())
TypeError: arguments did not match any overloaded call:
  drawLine(self, l: QLineF): argument 1 has unexpected type 'float'
  drawLine(self, line: QLine): argument 1 has unexpected type 'float'
  drawLine(self, x1: int, y1: int, x2: int, y2: int): argument 1 has unexpected type 'float'
  drawLine(self, p1: QPoint, p2: QPoint): argument 1 has unexpected type 'float'
  drawLine(self, p1: Union[QPointF, QPoint], p2: Union[QPointF, QPoint]): argument 1 has unexpected type 'float'

其本质原因是:在较新的PyQt版本中(如PyQt5),QPainter类中的相关draw方法不支持float数据作为参数传递。

解决方案:参考:【labelimg标注图片时float报错问题 完美解决方案】argument 1 has unexpected type ‘float‘

参考文献:

YOLOv5入门实践(2)——手把手教你利用labelimg标注数据集

本文章已经生成可运行项目
资源下载链接为: https://pan.quark.cn/s/00cceecb854d 在 IT 领域,数据标注是机器学习和深度学习项目的关键环节,主要任务是将图像或视频中的目标对象、行为等信息以结构化形式进行标记,帮助算法更好地学习和理解。LabelImg 是一款广受欢迎的开源图像标注工具,尤其适用于像素级语义分割和物体边界框标注任务。然而,原版 LabelImg 由 AlexeyAB 使用 Python 编写,基于 Qt 图形界面库开发,虽然界面简洁直观,但在处理中文路径和标签时存在局限性,这在标注中文语料时会带来不便。而你提到的这个经过特殊修改的版本,完美解决了这一问题,支持中文环境,极大地提升了其在中文图像标注工作中的适用性。 使用这款修改版 LabelImg 的流程如下:首先,需要安装 Python 环境并确保安装了 PIL 和 PyQt5 等必要依赖库。之后,可以通过下载修改后的源码或直接运行编译好的 dist 文件来启动程序。在程序启动后,可以通过菜单操作或拖放方式加载含有中文路径的图像文件。接着,设置好中文标签类别后,利用工具栏上的画笔或矩形工具在图像上绘制标注区域,每个区域可关联一个或多个标签。完成标注后,程序会将标注结果保存为 XML 文件,这种格式被 TensorFlow、PyTorch 等众多深度学习框架所接受,文件中详细记录了图像路径、标注坐标及对应标签等信息。此外,该工具还具备批处理功能,可自动化处理文件夹内所有图片,大幅提升标注效率。在团队协作项目中,支持中文的 LabelImg 还能帮助团队成员共享和合并标注结果,避免因编码问题导致的兼容性难题。 这款定制版的 LabelImg 对于中文环境下的图像数据标注具有重要意义,尤其在自动驾驶、智慧城市、农业监测等涉及大量中文信息处理的领域,能够方便地对中文命名的图像进行精确标注,为模型训练提供高质
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值