首页 > 解决方案 > tensorflow.python.framework.errors_impl.InvalidArgumentError:断言失败 - 有没有办法将我的 XML 注释文件转换为 CSV 文档?

问题描述

我正在使用 Python 3.9、Tensorflow 2.6.0、Ubuntu 20.04,并遵循教程。这些tf.record文件刚刚生成,我正在尝试开始我的培训。这些.config文件是从Tensorflow 2 Detection Model Zoo下载的。

在尝试使用以下代码开始训练我的 Tensorflow 模型时...:

python model_main_tf2.py --model_dir=path_to_model_dir/my_ssd_resnet50_v1_fpn --pipeline_config_path=path_to_model_dir/my_ssd_resnet50_v1_fpn/pipeline.config

...我收到此错误:

tensorflow.python.framework.errors_impl.InvalidArgumentError: assertion failed: [[0.0792563558][0.286692768][0.342465758]] [[0.000978473574][0.365949124][0.695694685]]

这个 Stack Overflow 帖子很好地概述了错误,但我仍然需要帮助来解决它。我已经检查过了,没有无效条目(照片尺寸之外的最小值/最大值,并且没有负值)。最可能的罪魁祸首是几个边界框是以相反的顺序绘制的,因此一些min边界框的尺寸大于max尺寸,正如帖子所讨论的那样。我需要在生成tf.record文件之前更正边界框尺寸(对于我的训练和测试数据集)。

我已经用 Pascal VOC 格式的Labelimg标记了我的图像,所以我的每个图像都有一个XML文件(我大约有 10,900 个)。有没有办法将我xml的文件转换为CSV文档然后生成tf.record文件?

生成文件后,CSV我可以使用以下代码更正列的顺序。我希望使用这些更正的文件来生成 tf.record 文件。minmaxcsv

#Designed to correctly modify min/max columns in the CSV files generated when producing tf.record files
#Designed to run each line from the command line

import pandas
import numpy as np
import os
import csv

#Open CV file
df = pandas.read_csv("C:\\desired_directory\\train.csv")

df = df.assign(
    xmin=df[['xmin', 'xmax']].min(1),
    xmax=df[['xmin', 'xmax']].max(1),
    ymin=df[['ymin', 'ymax']].min(1),
    ymax=df[['ymin', 'ymax']].max(1),
)

df.to_csv("C:\\desired_directory_to_save_csv_file\\train.csv")

标签: tensorflowubuntutensorflow2.0

解决方案


推荐阅读