[YOLOv8] - 使用LabelMe对数据集进行标注(含安装和使用技巧)

什么是LabelMe?

LabelMe是一款开源的图像标注工具,它可以帮助用户对图像中的物体、区域和特征进行标记和分类。该工具支持多种图像格式,包括常见的JPEG、PNG、BMP等,同时也支持TIFF、GIF等格式。

使用LabelMe可以方便地对图像进行手动标注,用户可以通过鼠标在图像上点击或拖拽来选择要标记的物体或区域,然后输入相应的标签信息。

总之,LabelMe是一款功能强大、易于使用的图像标注工具,适用于各种图像处理和计算机视觉任务。  

Labelme is a graphical image annotation tool inspired by http://labelme.csail.mit.edu.
It is written in Python and uses Qt for its graphical interface.

版本还是比较新的,看来这个软件还在不断持续更新。

labelme · PyPI

GitHub - wkentaro/labelme: Image Polygonal Annotation with Python (polygon, rectangle, circle, line, point and image-level flag annotation).

Windows下如何安装LabelMe?

创建并激活YOLOv8虚拟环境

通过miniconda创建名为yolov8的python虚拟环境:

conda create -y -n yolov8 python==3.11

激活“yolov8”python虚拟环境:

conda activate yolov8

安装LabelMe

pip install labelme

启动LabelMe

labelme

一个小细节,打开时控制台有一行日志信息:

“C:\Users\Laolang\.labelmerc” 保存的是LabelMe用到的配置文件:

使用LabelMe来管理标注

点击左上方侧的按钮栏“Open Dir”打开要标注的图像目录,这时候在右下角列出图像目录的所有图像,第一次打开图像目录时,它会让你也选中标注保存的目录,后续还可以通过“File”菜单中的“Change Output Dir”进行修改。从右下角的图像列表中选中图像,打开图像,鼠标移到你要标注图像的左上角,按下“CTRL+W”键,将会出现一个矩形框,向右下方滑动鼠标,进行标注框绘制,选择现有的标签或者创建新的标签名,进行保存即可。绘制完成,你还按下“CTRL+J”选中绘制的矩形,进行移动和修调整形框的大小。最后按下“CTRL+S”进行标签保存。

 LabelMe的图像标注数据使用Coco数据集的json格式来保存,文件名为“被标注的图像名字.json”:

备注:LabelMe目前不支持YOLO的数据集格式,后续通过写python代码了进行格式转化。

LabelMe使用技巧

1. 选中“File->Save Automatically”,启动自动保存标注数据,可以减少按“CTRL+S”手动保存花费的时间,也可以直接修改“C:\Users\Laolang\.labelmerc”中的属性“auto_save”属性为“true”。

2. 选中“Save With Image Data”,对应的图像数据会以base64字符串保存到“.json”文件的“imageData”字段,可以方便后续,通过python脚本把标注数据导出为YOLOv8的格式。

3. 根据你要标注的图像整体色调,可以通过修改“C:\Users\Laolang\.labelmerc”中和颜色相关的属性来让标注框更醒目。

4. 通过给“labelme命令参数”,可以避免每次打开LabelMe都得手动设置图像目录,标注目录等。

下面是我创建的dos的bat命令:

D:\my_project\Anaconda3\envs\yolov8\Scripts\labelme.exe D:\YOLOv8Train\labelme_datasets\mktk_datasets\cut_640_images --labels D:\YOLOv8Train\labelme_datasets\mktk_datasets\cut_640_labels\classes.txt --output D:\YOLOv8Train\labelme_datasets\mktk_datasets\cut_640_labels

LabelMe命令帮助

可以通过dos命令“labelme --help”来查看命令参数,这个平时似乎很少用,大部分情况直接用UI就可以了。

怎么使用可以参考 GitHub - wkentaro/labelme: Image Polygonal Annotation with Python (polygon, rectangle, circle, line, point and image-level flag annotation).

要将 Labelme 标注数据转换为 YOLOv3/v4/v5 格式,你可以按照以下步骤进行操作: 1. 使用 Labelme 软件加载并标注你的数据。 2. 在 Labelme 软件中选择 "File"(文件)菜单,然后点击 "Save As"(另存为)选项。 3. 选择保存为 JSON 格式,并将文件命名为 "labelme.json"。 4. 将生成的 "labelme.json" 文件与以下代码保存在同一目录下: ```python import json def convert_labelme_to_yolo(labelme_json_path, yolo_txt_path): with open(labelme_json_path, 'r') as f: data = json.load(f) with open(yolo_txt_path, 'w') as f: for shape in data['shapes']: label = shape['label'] points = shape['points'] x1, y1 = points[0] x2, y2 = points[1] width = x2 - x1 height = y2 - y1 x_center = x1 + (width / 2) y_center = y1 + (height / 2) x_center /= data['imageWidth'] y_center /= data['imageHeight'] width /= data['imageWidth'] height /= data['imageHeight'] f.write(f"{label} {x_center} {y_center} {width} {height}\n") labelme_json_path = 'labelme.json' yolo_txt_path = 'labelme.txt' convert_labelme_to_yolo(labelme_json_path, yolo_txt_path) ``` 5. 运行上述代码,将 "labelme.json" 文件转换为 YOLOv3/v4/v5 格式的文本文件 "labelme.txt"。 在转换完成后,你可以使用生成的 "labelme.txt" 文件来训练 YOLOv3/v4/v5 模型。每行文本表示一个标注框,包标签名标注框的坐标信息。请注意,YOLOv3/v4/v5 要求标签坐标为归一化的相对值,因此在转换过程中进行了归一化处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老狼IT工作室

你的鼓励将是我创作的最大动力。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值