在COCO数据集上为选定的class_id创建tf_record

时间:2018-06-03 20:12:13

标签: tensorflow dataset tfrecord mscoco

我有完整的COCO 2017数据集(Train,Test,Val),我想从中创建tf_record文件。 但并非适用于所有类别,而只适用于某些选定的类别。 因此,我有一个label_map,其中包含我想要包含在以下tf格式的tf_records中的所有类:

string

为所有类创建完整tf_record的标准脚本如下:

item {
  name: "/m/01g317"
  id: 1
  display_name: "person"
}
item {
  name: "/m/0199g"
  id: 2
  display_name: "bicycle"
}

我尝试使用label_map_util加载我的自定义标签贴图作为类别索引,但它给了我关键错误,我不知道如何解决。

有人知道如何完成这项任务吗?

1 个答案:

答案 0 :(得分:0)

我尝试了以下步骤

  1. followed this link to根据可可json注释生成类明智的xml。
  2. 这将为每个班级创建单独的文件夹,我们可以选择所需的班级并将它们合并为一个文件夹。这将导致自定义数据集包含较少的对象,但XML仍包含不需要的对象名称,因为coco在同一图像中具有多个不同类的实例。
  3. 然后,我根据其类名和ID仅解析所需对象的xml。这给我留下了仅需的几个xml。
  4. 然后,我使用了一些linux命令来基于XML名称整理数据集中的图像。这样就产生了一个单独的文件夹,其中仅包含需要的图像和注释。
  5. 然后,我使用输入到tf记录脚本中的XML来创建csv文件,以生成train.record和test.record,并将其输入训练中。

一切都正常,除了训练在中间停下来说“ Jpeg提早结束”。我尝试从先前的检查点重新开始训练,但是经过一定数量的步骤后,训练再次停止。但是,在进行培训时,培训损失似乎正在收敛。我通过大小验证了记录文件。 tf_record文件和image文件夹的大小大约相同。我现在坚持要弄清楚这一点。

我们将提供进一步的帮助。

谢谢