目录
如何在Windows下安装使用LabelMe以及LabelImg?
在Anaconda创建的虚拟环境中使用pip安装Labelme和LabelImg。
Labelme:
什么是LabelMe?
LabelMe是一款开源的图像标注工具,它基于 Python 编程语言,并使用 Qt 用于图形用户界面的创建,它可以帮助用户对图像中的物体、区域和特征进行标记和分类。该工具支持多种图像格式,包括常见的JPEG、PNG、BMP等,同时也支持TIFF、GIF等格式。
LabelMe有什么用处?
Labelme 特别适用于计算机视觉任务中需要手动标注图像的情况,比如在训练深度学习模型之前,需要对图像中的对象进行标记或分类。
使用LabelMe可以方便地对图像进行手动标注,用户可以通过鼠标在图像上点击或拖拽来选择要标记的物体或区域,然后输入相应的标签信息。
LabelImg:
什么是LabelImg?
LabelImg 是一个图形化的图像标注工具,主要用于计算机视觉任务中的图像标注,特别是用于目标检测和图像分割的数据准备。它允许用户以图形界面的方式为图像中的对象绘制矩形或多边形边框,并为这些边框分配类别标签。
LabelImg有什么用处?
LabelImg 是开源的,可以在多种操作系统上运行,包括 Windows、macOS 和 Linux。它是数据科学家、研究人员和开发人员在进行图像相关项目时的一个有用工具。通过使用 LabelImg,可以有效地创建准确标注的数据集,进而提高模型训练的效果。
如何在Windows下安装使用LabelMe以及LabelImg?
在Anaconda创建的虚拟环境中使用pip安装Labelme和LabelImg。
创建一个虚拟环境
conda create -n use_name python=3.6
激活虚拟环境
conda activate use_name
安装LabelMe/LabelImg
pip install labelme / pip install labelImg
启动LabelMe/LabelImg
labelme / labelImg
使用LabelMe进行图片标注
在使用命令打开LabelMe后会出现以下界面
点击左侧的按钮栏“打开目录”打开要标注的图像目录,这时候在右下角列出图像目录的所有图像
第一次打开图像目录时,它会让你也选中标注保存的目录,后续还可以通过“File”菜单中的“Change Output Dir”进行修改。
从右下角的图像列表中选中图像,打开图像,鼠标移到你要标注图像的左上角,按下“CTRL+W”键,将会出现一个矩形框,向右下方滑动鼠标,进行标注框绘制,选择现有的标签或者创建新的标签名,进行保存即可。绘制完成,你还按下“CTRL+J”选中绘制的矩形,进行移动和修调整形框的大小。最后按下“CTRL+S”进行标签保存。
我们可以看到,LabelMe的图像标注数据使用Coco数据集的json格式来保存,文件名为“被标注的图像名字.json”
以下是对该文件内JSON数据的解释:
"version": "5.5.0"
: 这指定了JSON数据的版本,这里为5.5.0。
"flags": {}
: 这是一个空的对象,可能用于存储与标注相关的一些标志或属性,但在这段数据中没有使用。
"shapes": [...]
: 这是一个数组,包含了图像中所有标注的形状信息。
- 每个形状是一个对象,包含了以下属性:
"label": "cat"
: 表示这个形状标注的对象类别是“cat”(猫)。"points"
: 这是一个数组,包含了定义形状边界的点的坐标。对于矩形,只需要两个点:左上角和右下角。
- 第一个点
[539.8333333333334, 259.7222222222223]
表示矩形左上角的x和y坐标。- 第二个点
[1067.611111111111, 759.7222222222223]
表示矩形右下角的x和y坐标。"group_id": null
: 表示这个形状没有分配到特定的组,这个属性可能用于将形状分组。"description": ""
: 这是一个空字符串,可能用于提供关于形状的额外描述,但在这个例子中没有使用。"shape_type": "rectangle"
: 表示这是一个矩形形状。"flags": {}
: 与最外层的flags类似,这是针对特定形状的标志或属性,这里没有使用。"mask": null
: 表示这个形状没有关联的掩码图像,掩码可以用于更复杂的标注,比如多边形标注。
"imagePath": "000001.jpg"
: 表示这个标注数据对应于名为“000001.jpg”的图像文件。
使用LabelImg进行图片标注
在使用命令打开LabelImg后会出现以下界面,我们可以发现,其与LabelMe相似而有所不同。
我们通过同样的方式打开要标注的图像目录并对其中的图像进行标注后,在保存时我们可以发现在左侧按钮栏中间位置存在一个选择标注格式的按钮。
一般可以标注两种格式:
- VOC标签格式,标注的标签存储在xml文件
- YOLO标签格式,标注的标签存储在txt文件中
我们可以看到,000003.jpg文件以两种格式保存在文件夹内,分别是.txt文件和.xml文件,也就是YOLO标签格式和VOC标签格式。
以下是对VOC标签格式内XML数据的逐个解释:
<annotation>
: 根元素,表示一个标注的开始和结束。
<folder>picture</folder>
: 指定包含图像的文件夹名称。
<filename>000003.jpg</filename>
: 图像文件的名称。
<path>C:\Users\Admin\Desktop\picture\000003.jpg</path>
: 图像文件的完整路径。
<source>
: 描述标注数据来源的部分。
<database>Unknown</database>
: 标注数据的来源数据库,这里是未知。
<size>
: 图像的尺寸信息。
<width>474</width>
: 图像的宽度为474像素。<height>355</height>
: 图像的高度为355像素。<depth>3</depth>
: 图像的深度,这里为3,表示这是一个RGB彩色图像。
<segmented>0</segmented>
: 表示这个标注是否是分割任务的一部分,0通常表示这是一个整体标注,不是分割的。
<object>
: 表示图像中一个对象的开始和结束。
<name>dog</name>
: 对象的类别名称,这里是“dog”(狗)。<pose>Unspecified</pose>
: 对象的姿态,这里没有具体指定。<truncated>0</truncated>
: 表示对象是否被截断,0表示没有。<difficult>0</difficult>
: 表示对象是否难以标注,0表示不困难。<bndbox>
: 定义了对象边界的矩形框。
<xmin>68</xmin>
: 矩形框左上角的x坐标。<ymin>30</ymin>
: 矩形框左上角的y坐标。<xmax>402</xmax>
: 矩形框右下角的x坐标。<ymax>288</ymax>
: 矩形框右下角的y坐标。