在本指南中,将展示如何使用LabelImg来标注自己的数据,以便用于对象检测模型。LabelImg是一个免费的开源工具,用于图形化地标注图像。它用Python编写,并使用QT作为其图形界面。这是标注数百张图像以尝试下一个对象检测项目的简单且免费的方式。
标签用于帮助识别希望模型在未标记的数据集中识别的组件。高质量的数据集对于计算机视觉和构建高性能模型至关重要。创建计算机视觉模型遵循“垃圾进,垃圾出”的原则,这意味着仔细且准确地标注图像非常重要。创建了一个标注指南,以确保训练数据集是高质量的。
LabelImg确实需要一些技术知识(例如使用命令行)才能开始。最简单的下载和安装LabelImg的方法是通过pip,它假设正在运行Python3。只需在命令行中运行以下命令:pip3 install labelImg
。然后,通过在命令行提示符中输入labelImg
来启动LabelImg。如果需要针对机器(例如在Linux上使用Python 2,Windows,MacOS Catalina,或使用Anaconda)的更具体说明,请访问LabelImg的README以获取有关安装的详细说明。
LabelImg支持以VOC XML或YOLO文本文件格式进行标注。强烈建议使用默认的VOC XML格式来创建标签。由于ImageNet的关系,VOC XML是一个更通用的标准,因为它与对象检测相关,而各种YOLO实现的文本文件格式略有不同。此外,可以使用Roboflow轻松地从VOC XML转换为任何其他格式,例如VOC XML到COCO JSON。
通过在LabelImg左侧选择“Open Dir”来打开想要的图像集。要开始一个标签,请输入w并绘制预期的标签。然后,按Ctrl(或Command)S保存标签。按d键转到下一张图像(按a键返回上一张图像)。
在标注图像时,有一些提示需要记住。请注意,这些提示通常是正确的,但可能根据问题上下文而变化。确保阅读关于标注最佳实践的完整深入探讨。
围绕整个对象进行标注。最好包含一点非对象缓冲区,而不是用矩形标签排除对象的一部分。因此,目标是拥有紧密反映想要标注的对象的框,但不要切断对象的一部分。这样,模型将更好地理解边缘。
对于被遮挡的对象,完全标注它们。如果一个对象由于另一个对象挡在前面而无法看到,请将不在视野中的对象标注为如果能看到它的全部一样。这样,模型将开始理解对象的真实边界。
对于部分出框的对象,通常要标注它们。这个提示特别取决于问题,但通常,即使是部分对象也是要标注的对象。
如果外包标注工作,请提供清晰的指示。如果准备扩大标注操作并引入外部帮助,请在指示中非常明确(例如,提及围绕对象标注的重要性,而不是按照第一个提示将对象的一部分排除在边界之外!)。
使用标注图像,可以使用RoboflowTrain免费训练模型。使用Roboflow,可以一键训练模型。
尽管LabelImg具有很高的品牌知名度,但还有许多其他计算机视觉标注工具。偏爱RoboflowAnnotate,这是设计用来平滑许多开源标注工具中存在的粗糙边缘的工具。但还涵盖了终极对象检测指南中的许多其他选项。