Mask R-CNN是一种基于Faster R-CNN的目标检测算法,同时支持检测和语义分割任务。在训练Mask R-CNN模型时,需要提供带标注的图像数据集。
训练数据集需要包含以下内容:
在训练数据集中,可以使用多种方法来生成标注信息。例如,可以手动标注图像,或者使用自动标注工具(例如LabelImg或者labelme)来加速标注过程。另外,一些公开数据集(例如COCO和PASCAL VOC)提供了预先标注的图像数据,可以用于训练目标检测和语义分割模型。
总之,Mask R-CNN的训练数据集需要包含大量标注的图像数据和每个实例的详细标注信息。
LabelImg是一个图像标注工具,主要用于手动标注图像数据,用于机器学习、计算机视觉等领域的研究和开发。下面是LabelImg的每一步具体说明:
注释以PASCAL VOC格式保存为XML文件,这是ImageNet使用的格式。此外,它还支持YOLO格式和 CreateML 格式。
总之,LabelImg是一个简单易用的图像标注工具,可以帮助用户快速高效地完成图像数据的标注工作。
LabelMe是一个基于Web的图像标注工具,主要用于手动标注图像数据,用于机器学习、计算机视觉等领域的研究和开发。相比于LabelImg,LabelMe支持标注更加复杂的图像,可以标注多个对象、多个区域,支持多种标注工具和标注方式。
下面是LabelMe的主要特点和使用方法:
总之,LabelMe是一个功能强大的图像标注工具,可以帮助用户快速高效地完成图像数据的标注工作,尤其适用于标注复杂多样的图像。
以下是使用Labelme的一般步骤和每个步骤的详细说明:
在使用Labelme之前,需要先安装并启动它。可以从官方网站下载并安装Labelme,并使用以下命令启动:
labelme
在Labelme中,可以通过以下步骤打开图像文件:
在打开图像文件之后,可以开始添加标注。可以通过以下步骤添加标注:
可以使用“Create Rectangle”、“Create Circle”等其他工具绘制不同形状的标注。
在添加标注之后,可以使用以下方法编辑标注:
完成标注之后,需要保存标注结果。可以通过以下步骤保存标注结果:
可以将标注结果保存为JSON或者PNG格式。在保存为PNG格式时,标注结果将被叠加在原始图像上。
在保存标注结果之后,可以将标注结果导出为其他格式。可以通过以下步骤导出标注结果:
可以将标注结果导出为JSON、CSV、VOC等格式。
LabelImg和LabelMe都是常用的图像标注工具,主要用于手动标注图像数据,用于机器学习、计算机视觉等领域的研究和开发。
它们的区别主要在于以下几个方面:
综上所述,LabelImg和LabelMe都是优秀的图像标注工具,用户可以根据自己的需求来选择使用。如果用户需要支持多种标注格式,使用Python环境并且喜欢简洁的操作界面,可以选择LabelImg;如果用户需要标注复杂的实例分割,并且更喜欢网页应用的方式,可以选择LabelMe。
参考博文:
https://blog.csdn.net/u013066730/article/details/101209325
由于我的数据标签是使用labelme方式得到的,但是为了能使得上面的代码有效运行,将我的数据都整理成如下形式:
在train文件夹下有三个子文件夹image,mask,yaml。
image1.png
image2.png
image3.png
...
mask当中保存的是npy文件,名字与image中相同,只是后缀不同:
image1.npy
image2.npy
image3.npy
...
yaml中保存的是yaml文件,名字与image中相同,只是后缀不同:
image1.yaml
image2.yaml
image3.yaml
...
针对image、mask和yaml的image1.png、image1.npy和image1.yaml进行具体介绍:
image1.png如图所示,图像尺寸为 513 × 604 513\times 604 513×604:
image1.npy保存的是mask文件,本来是要保存png的,但是我防止我一副图片超过了255个物体,那么保存为灰度图像就有点不合理,不如直接保存为npy文件。
上面这张图并不是我npy中实际保存的,仅仅是为了方便显示。npy中具体保存了两个人的实例分割标记。比如红色的person1,在标签中就是数字1,也就是红色部分全是1;绿色的person2,在标签中就是数字2,区域就是绿色部分,又规定标签是单通道的,所以npy是一个513*604的矩阵,矩阵中保存了背景0,person1对应的1,person2对应的2。
image1.yaml的具体内容如下:
label_names:
- person1
- person2
只需要直到image1.yaml中的person1与图像中是person的区域对应即可(可能是图像中person2,也可能person1,但都没关系,只要对应即可)