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标注数据集

本文章已经生成可运行项目
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值