将图像注释格式转换为用于 tensorflow 对象检测的 tfrecords api

Conversion of image annotation formats into tfrecords for tensorflow object detection api

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

  • Foreknow:

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

帕斯卡挥发性有机化合物:

  1. 以 .xml 文件格式存储注释。
  2. 边界框格式 [x-左上、y-左上、x-右下、y-下右]
  3. 为数据集中的每个图像创建单独的 xml 注释文件。

可可:

  1. 以 .json 文件格式存储注释。
  2. 边界框格式[x-左上角,y-左上角,宽度,高度]。
  3. 为每个训练、测试和验证创建一个注释文件。
  • Current-issue:

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

数据集-1:

数据集 2:

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

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

并且在 this link 他们正在处理纯 COCO 注释格式。

站在两种格式的中间,我应该走哪条路?

Which path should I follow as I am standing in the middle of both formats?

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

  2. this link

    create_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。