文章目录
补充下:下文是几个月前写的,最近发现了更好的标注手段。有梯子的可以登录这里。然后就是labelme,这工具更全面、对比labelimg也不容易遇到很多标注问题。
1、python版本没有对应上,导致闪退
报错信息如下:
可能是因为你用的是高版本python,比如python 3.11
TypeError: arguments did not match any overloaded call:
drawLine(self, QLineF): argument 1 has unexpected type 'float'
drawLine(self, QLine): argument 1 has unexpected type 'float'
drawLine(self, int, int, int, int): argument 1 has unexpected type 'float'
drawLine(self, QPoint, QPoint): argument 1 has unexpected type 'float'
drawLine(self, Union[QPointF, QPoint], Union[QPointF, QPoint]): argument 1 has unexpected type 'float'
解决方法:
conda create -n labelimg python=3.9
conda创建labelimg的环境,指定python版本为3.9
2、重新打开标注文件时候,发生闪退
2.1顺序变化,那么会导致你标注的图片上的label都错乱。将顺序修改回原来的位置就可以了。
- 举例
原来的顺序
打乱后的顺序
2.2类别减少,有些类别在classes.txt上消失了。
- 你的classes.txt文件中类别变少了。此时需要将classes.txt补全回到原来的样子,才可以重新打开labelimg。
- 种类减少
常见报错信息
# 此时你的classes.txt重构之后的类别总数会减少比如减少为2种了,
#但你标注在图片上的类别有几十种类别,那么这个种类的list里面就不会有那么多的,
#就会显示超出了索引列表
IndexError: list index out of range
3、如何避免(重点重点)
- 原理
构建完整的classes.txt文件,其实只需要第一张图。
为什么这么说呢?classes.txt文件记录了所有标注信息。那是不是只有你标注完了所有图片才可以建立完整的
classes.txt文件呢?其实不是,一张标注了所有类别的图,就可以生成完整的classes.txt文件。换句话说,
只要你第一张图包含所有类别,classes.txt将不会再发生任何闪退的问题。但你仍然需要你注意标注的顺序,
因为不闪退不代表标注顺序就没有问题。
第一张图片:这里没有戴沐白和马红俊,但是只要标上,以后就可以规避闪退的问题。