【问题标题】:Conversion of image annotation formats into tfrecords for tensorflow object detection api将图像注释格式转换为 tfrecords 用于 tensorflow 对象检测 api
【发布时间】:2021-07-24 09:45:35
【问题描述】:

寻求有关对象检测 API 的图像注释格式的帮助。

  • 预知:

我们知道图像有两种注释格式,Pascal VOC 和 COCO 格式。两者都有自己的规范,这是两者之间的主要区别:

帕斯卡 VOC:

  1. 以 .xml 文件格式存储注释。
  2. 边界框格式 [x-top-left, y-top-left, x-bottom-right, y-bottom-right]
  3. 为数据集中的每个图像创建单独的 xml 注释文件。

可可:

  1. 以 .json 文件格式存储注释。
  2. 边界框格式 [x-top-left, y-top-left, width, height]。
  3. 为每个训练、测试和验证创建一个注释文件。
  • 当前问题:

我有两个数据集要处理,这就是它们的注释方式。

数据集 1:

  • 文件格式:Pascal VOC(.xml)
  • 边界框格式:COCO。
  • 文件创建:与 Pascal VOC(数据集中每个图像的单独 xml 注释文件)一样。

数据集 2:

  • 文件格式:Pascal VOC(.xml)
  • 边界框格式:COCO。
  • 文件创建:与 COCO 一样(为每个训练、测试和验证创建一个注释文件)

我无法通过的事情是我应该遵循哪种格式(Pascal VOC 或 COCO)将我的注释转换为 Tfrecords(.xml 到 .records),因为使用可以看到数据集的注释不是纯粹属于任何一种格式。

例如,在this link 中,作者编写了一个将 .xml 转换为 .records 的脚本,但这里处理的是纯 pascal VOC 格式。

this link 中,他们处理的是纯 COCO 注释格式。

当我处于两种格式的中间时,我应该走哪条路?

【问题讨论】:

    标签: tensorflow annotations tensorflow-datasets object-detection-api tfrecord


    【解决方案1】:

    当我处于两种格式的中间时,我应该走哪条路?

    1. 使用 Pascal VOC 格式将 .xml 转换为 .records。

    2. this linkcreate_tf_example 函数中进行以下更改

      for index, row in group.TextLine.iterrows():
      xmin.append(row['X']/imgwidth)
      xmax.append((row['X']+row['Width'])/imgwidth)
      ymin.append(row['Y']/imgheight)
      ymax.append((row['Y']+row['Height'])/imgheight)
      classes_text.append(row['class'].encode('utf8'))
      classes.append(class_text_to_int(row['class']))'
      

    如果您的 .xml 注释中有 X、Y、宽度、高度而不是 xmin、ymin、xmax、ymax。

    【讨论】:

      猜你喜欢
      • 2019-11-18
      • 2021-01-15
      • 2019-08-07
      • 1970-01-01
      • 2021-01-31
      • 2021-07-19
      • 2018-06-28
      • 2021-08-14
      • 1970-01-01
      相关资源
      最近更新 更多