从零开始-用LabelMe标注图像数据
LabelMe是一款广泛使用的图像标注工具,主要用于计算机视觉项目中的图像数据准备。它是由日本的京都大学开发的一款开源软件,支持多种类型的图像标注任务,包括但不限于:
对象检测(Object Detection):标记图像中的特定对象及其边界框。
语义分割(Semantic Segmentation):为图像中的每个像素分配一个类别标签。
实例分割(Instance Segmentation):不仅区分不同类别,还能区分同一类别中的不同个体。
关键点检测(Key Point Detection):标注图像中特定物体的关键点位置,如人体关节的位置。
主要特点:
用户界面友好:提供直观的图形界面,方便用户手动标注图像。
高度可定制:支持自定义类标签、颜色方案以及其他参数,满足不同的项目需求。
数据导出灵活:支持导出标注结果为多种格式,便于与不同的机器学习框架集成。
多平台支持:可以在Windows、macOS和Linux等多种操作系统上运行。
使用场景:
学术研究:研究人员可以使用LabelMe来准备用于训练深度学习模型的数据集。
工业应用:在自动驾驶、医疗影像分析、安防监控等领域,LabelMe可以帮助生成高质量的标注数据。
教学工具:对于教学目的,LabelMe可以用来演示数据标注的过程,帮助学生理解图像处理的基本概念。
网址:
labelmeai/labelme: Image Polygonal Annotation with Python (polygon, rectangle, circle, line, point and image-level flag annotation). (github.com)
labelme/examples/classification at v3.11.2 · labelmeai/labelme (github.com)
labelme/examples/bbox_detection at v3.11.2 · labelmeai/labelme (github.com)
labelme/examples/semantic_segmentation at v3.11.2 · labelmeai/labelme (github.com)
labelme/examples/instance_segmentation at v3.11.2 · labelmeai/labelme (github.com)
labelme/examples/video_annotation at v3.11.2 · labelmeai/labelme (github.com)
labelme/examples/primitives at v3.11.2 · labelmeai/labelme (github.com)
安装
labelme是基于pyqt编写的软件,直接使用pip安装即可
pip install labelme
安装完毕后,输入如下命令启动labelme:
labelme
数据标注
点击打开目录,找到需要标注的目录,点击创建多边形,然后点击图片中的目标位置框选起来
框选完毕后,会出现一个标签页面,输入我们所需要目标标签即可
保存后的数据为xxx.json文件,里面包含了标注信息和图像信息
{
"version": "5.5.0",
"flags": {},
"shapes": [
{
"label": "mooncake",
"points": [
[
249.08088235294122,
155.1470588235294
],
[
265.625,
149.63235294117646
],
[
273.34558823529414,
129.77941176470586
],
[
306.06617647058823,
119.48529411764704
],
[
320.0367647058824,
119.48529411764704
],
[
337.68382352941177,
126.83823529411764
],
[
345.77205882352945,
127.5735294117647
],
[
362.31617647058823,
138.23529411764704
],
[
371.875,
152.9411764705882
],
[
379.2279411764706,
168.01470588235293
],
[
382.16911764705884,
195.2205882352941
],
[
384.375,
209.92647058823528
],
[
370.77205882352945,
241.5441176470588
],
[
366.7279411764706,
248.8970588235294
],
[
359.00735294117646,
254.41176470588232
],
[
349.0808823529412,
269.85294117647055
],
[
322.9779411764706,
290.8088235294117
],
[
287.31617647058823,
291.9117647058823
],
[
275.5514705882353,
294.1176470588235
],
[
263.41911764705884,
301.4705882352941
],
[
243.93382352941177,
301.10294117647055
],
[
228.125,
294.1176470588235
],
[
196.875,
263.60294117647055
],
[
184.00735294117652,
226.10294117647055
],
[
184.375,
211.76470588235293
],
[
189.88970588235298,
197.42647058823528
],
[
191.7279411764706,
183.8235294117647
],
[
202.38970588235298,
165.4411764705882
],
[
229.2279411764706,
151.10294117647058
],
[
241.7279411764706,
151.4705882352941
]
],
"group_id": null,
"description": "",
"shape_type": "polygon",
"flags": {},
"mask": null
}
],
"imagePath": "images\\train\\Cake1.jpg",
"imageData": "xxxxxxxxxxx",
"imageHeight": 450,
"imageWidth": 600
}
保存后,右边列表的图像会显示已标注:
如果创建其他的形状(比如说常用的矩形),对着图片右键即可
格式转换
YOLO
json不能直接用于yolo里面,需转换格式
使用工具转换即可,使用如下命令安装python第三方库:
pip install labelme2yolo
这里是labelme2yolo相关网址:
GreatV/labelme2yolo: Efficiently converts LabelMe's JSON format to the YOLOv5 dataset format. (github.com)
安装完毕后,执行如下命令检查是否安装成功:
labelme2yolo -h
输出通常为:
Convert LabelMe JSON to YOLO format
Usage: labelme2yolo.exe [OPTIONS] --json_dir <JSON_DIR> [LABEL_LIST]...
Arguments:
[LABEL_LIST]...
Options:
-d, --json_dir <JSON_DIR>
--val_size <VAL_SIZE> [default: 0.2]
--test_size <TEST_SIZE> [default: 0]
--output_format <OUTPUT_FORMAT> [default: bbox] [aliases: format] [possible values: polygon, bbox]
--seed <SEED> [default: 42]
-h, --help Print help
-V, --version Print version
格式转换
使用-d
指定labelme保存的json路径(通常与图片放在一起)
指令如下:
labelme2yolo -d ./images
输入后等待生成完成,后面会在当前目录生成一个YOLODataset的文件夹,里面就有我们需要的格式(数据集配置文件也在里面)