LabelImg图像标注工具

LabelImg是一款开源的图像标注工具,标签可用于分类和目标检测。它是用Python编写的,并使用Qt作为其图形界面,简单好用(虽然是英文版的)。

其注释以PASCAL VOC格式保存为XML文件,这是ImageNet使用的格式。此外,它还支持COCO数据集格式。

安装

点击链接下载现中文 Windows labelImg 可执行程序。

使用

打开LabelImg后

LabelImg主界面

建议在View中勾选自动保存标注结果

LabelImg设置

接下来打开需要标注的图片文件夹,并设置标注文件保存的目录(Change Save Dir)。

打开文件夹

开始标注:画框,标记目标的label,然后按D切换到下一张继续标注,不断重复。

标注过程

快捷键

使用快捷键可以显著提高标注效率:

快捷键 功能说明 快捷键 功能说明
Ctrl + Q 退出软件 Ctrl + Shift + O 打开的文件夹只显示.xml文件
Ctrl + O 打开文件 Ctrl + U 打开目录
Ctrl + R 更改保存目录 Ctrl + S 保存
Ctrl + + 放大图像 Ctrl + - 缩小图像
Ctrl + F 适应窗口 Ctrl + Shift + F 适应宽度
Ctrl + = 恢复原始大小 W 创建矩形标注框
Ctrl + E 编辑标签 Ctrl + J 移动和编辑标注框
Ctrl + D 复制选定的标注框 Delete 删除选定的标注框
Space 标记当前图片为已标注 Ctrl + L 更改框线颜色
Ctrl + A 显示所有的标注框 Ctrl + H 隐藏所有的标注框
D 下一张图像 A 上一张图像

标注结果

VOC格式

VOC格式的标注结果保存为XML文件,包含图片大小、通道数、标签名称、选框位置的参数等信息。

VOC格式示例

YOLO格式

切换到YOLO格式,在View中勾选自动保存模式,然后保存。

YOLO格式的标注保存为TXT文件,同时生成一个classes.txt文件定义类别名称。

YOLO格式示例

classes.txt 文件定义了你的 YOLO 标签所引用的类名列表。

YOLO标注文件中每一行表示一个目标,以空格进行区分,分别表示目标的类别id,归一化处理之后的 中心点x坐标、y坐标、目标框的宽w和高h。

classes.txt 文件的内容如下(例子:cat和speak是类名列表):
txt
cat speak
图片对应文件的内容如下(样例):
txt
0 0.353093 0.315742 0.219072 0.144902 0 0.568299 0.578712 0.139175 0.252236 1 0.228737 0.743292 0.189433 0.223614

YOLOv8模型训练

首先需要安装ultralytics 库:

shell
pip install ultralytics

修改predefined_classes.txt文件为你想要训练识别什么物品的物品(通常在data文件夹下)。

predefined_classes.txt文件内容(样例)

txt
football goal

数据集组织

按YOLOv8约定的结构放置数据集(示例):

dataset
|---- images        # 存放所有图像文件
│   |---- train     # 训练集图像
│   |---- val       # 验证集图像)
│   |---- test      # 测试集图像(可选)
|---- labels        # 存放所有标签文件
    |---- train     # 训练集标签
    |---- val       # 验证集标签
    |---- test      # 测试集标签(可选)

YOLO标注文件与图片同名(只扩展名不同)。

训练模型

创建一个YAML配置文件(记事本编辑然后把文件后缀名改yaml),文件的内容如下:

yaml
# path为自己数据集的文件夹名称 path: ./mydata # train是训练时加载的图片或者标签的路径 train: images/train # val是验证时加载的图片或者标签的路径 val: images/train # test是测试时加载的图片或者标签的路径(可选) test: images/test # 类别名称 names: 0: football 1: goal ……(以此类推写下去,你想要训练可以识别什么物品的模型就写进去,与前面的predefined_classes.txt文件一一对应)

使用命令行进行训练:

shell
yolo detect train model="D:\study\models\yolo\yolov8n.pt" data="D:\study\windows_v1.8.1\dataset\dataset.yaml" imgsz=640 epochs=100 batch=4 device=cpu workers=0 amp=False

如果遇到下载字体Arial.ttf超时的问题,可以运行以下命令(Windows):

shell
New-Item -ItemType Directory -Force -Path "$env:APPDATA\Ultralytics" | Out-Null Copy-Item "C:\Windows\Fonts\arial.ttf" "$env:APPDATA\Ultralytics\Arial.ttf" -Force

模型输出

默认情况下,YOLOv8 会把训练结果保存在runs/detect/train/目录下,(或 train2, train3... 根据你跑的次数自动递增)包含:

训练可能比较慢需要耐心等待,训练完成后即可使用模型自测。