最近在了解数据集及数据集标注的相关知识。
通常情况下一些专业大型的数据集标注都是以xml文件作为标注格式,这篇博客以水下数据集URPC2020为例
这是URPC2020数据集中的第一张图片:海胆(英文名:echinus)
以下是对这张图片进行标注的xml文件
<annotation>
<frame>12-10GP020193003</frame>
<object>
<name>echinus</name>
<bndbox>
<xmin>552</xmin>
<ymin>87</ymin>
<xmax>711</xmax>
<ymax>226</ymax>
</bndbox>
</object>
<object>
<name>echinus</name>
<bndbox>
<xmin>740</xmin>
<ymin>984</ymin>
<xmax>851</xmax>
<ymax>1068</ymax>
</bndbox>
</object>
<object>
<name>echinus</name>
<bndbox>
<xmin>645</xmin>
<ymin>834</ymin>
<xmax>754</xmax>
<ymax>932</ymax>
</bndbox>
</object>
<object>
<name>echinus</name>
<bndbox>
<xmin>1644</xmin>
<ymin>978</ymin>
<xmax>1791</xmax>
<ymax>1081</ymax>
</bndbox>
</object>
<object>
<name>echinus</name>
<bndbox>
<xmin>1402</xmin>
<ymin>967</ymin>
<xmax>1570</xmax>
<ymax>1076</ymax>
</bndbox>
</object>
<object>
<name>echinus</name>
<bndbox>
<xmin>1185</xmin>
<ymin>953</ymin>
<xmax>1315</xmax>
<ymax>1053</ymax>
</bndbox>
</object>
<object>
<name>echinus</name>
<bndbox>
<xmin>1601</xmin>
<ymin>135</ymin>
<xmax>1754</xmax>
<ymax>251</ymax>
</bndbox>
</object>
<object>
<name>echinus</name>
<bndbox>
<xmin>1477</xmin>
<ymin>241</ymin>
<xmax>1613</xmax>
<ymax>349</ymax>
</bndbox>
</object>
<object>
<name>echinus</name>
<bndbox>
<xmin>911</xmin>
<ymin>482</ymin>
<xmax>1040</xmax>
<ymax>605</ymax>
</bndbox>
</object>
<object>
<name>echinus</name>
<bndbox>
<xmin>527</xmin>
<ymin>475</ymin>
<xmax>665</xmax>
<ymax>580</ymax>
</bndbox>
</object>
<object>
<name>echinus</name>
<bndbox>
<xmin>339</xmin>
<ymin>491</ymin>
<xmax>482</xmax>
<ymax>622</ymax>
</bndbox>
</object>
</annotation>
接下来我将以此为例详细地解释一下这个xml文件中的内容。
细心的朋友可能已经注意到了,xml文件的格式与html文件格式有些雷同,但又不完全一样,因此有html经验的同学会上手的稍微快一些。
整体结构分析
(1)
根标签 <annotation>
表示整个标注文件的根节点,包含图像的元数据和所有物体的标注信息。
(2)<frame>
标签
12-10GP020193003
:可能是图像的唯一标识符(如文件名、帧编号或任务编号),用于关联具体图像文件。
(3)
多个 <object>
标签
每个 <object>
标签描述图像中的一个检测目标,包含类别名称(<name>
)和位置坐标(<bndbox>
)
关键标签解析
(1)<name>
标签
- 含义:标注目标的类别名称。
- 内容:所有
<name>
均为echinus
,表示检测目标为海胆(echinus 是海胆的英文名称)。
(2)<bndbox>
标签
-
含义:用矩形框标注目标在图像中的位置,坐标基于图像的像素坐标系(通常左上角为原点,x 轴向右、y 轴向下)。
-
坐标参数:
<xmin>
:矩形框左上角的 x 坐标<ymin>
:矩形框左上角的 y 坐标<xmax>
:矩形框右下角的 x 坐标<ymax>
:矩形框右下角的 y 坐标
- 示例解读(以第一个完整
<object>
为例):
<object>
<name>echinus</name>
<bndbox>
<xmin>552</xmin>
<ymin>87</ymin>
<xmax>711</xmax>
<ymax>226</ymax>
</bndbox>
</object>
表示该海胆目标的矩形框坐标为:
- 左上角:(645, 834)
- 右下角:(754, 932)
- 矩形框宽度:
754 - 645 = 109
像素 - 矩形框高度:
932 - 834 = 98
像素
一张蹄片中可能包含多个海胆(即待检测目标),那么对每一个海胆目标都要写一个object。
数据用途
-
目标检测训练
这些标注数据可用于训练深度学习模型(如 YOLO、Faster R-CNN 等),使模型能够识别图像中的海胆并定位其位置。 -
数据集结构
- 该文件可能属于某个海胆检测数据集的一部分,每个 XML 文件对应一张图像的标注。
- 通常需配合图像文件(如 JPEG/PNG)和其他元数据(如图像尺寸)使用。
-
潜在扩展信息
- 标准 PASCAL VOC 格式还包含
<size>
(图像宽高)、<difficult>
(目标是否难检测)等标签,但此代码中未体现,可能被简化或省略。
- 标准 PASCAL VOC 格式还包含
总结
这段 XML 代码是海胆目标检测的标注文件,记录了图像中多个海胆的类别和位置坐标,用于机器学习模型的训练或数据标注质检。若需进一步分析(如计算目标面积、统计分布等),可提取所有 <bndbox>
的坐标值进行处理。