无法将Pascal VOC转换为tfrecords,TensorFlow目标检测API训练报错
解决KITTI转TFRecord时的两类问题
一、核心报错:ValueError无法转换浮点数字符串为整数
你的问题出在generate_tfrecord1.py的xml_to_csv函数第92行——直接把带换行空格的浮点数字符串(比如"\n 692.09\n ")或纯浮点字符串(比如"583.43")转成整数,自然会触发类型转换错误。
修复步骤:
- 打开
/workspace/scripts/generate_tfrecord1.py,找到处理边界框坐标的代码段(大概在第92行附近,对应xmin、xmax、ymin、ymax的处理)。 - 修改每一行坐标转换逻辑,先清理字符串的空白字符,再将浮点值转为整数:
# 原报错代码(示例) xmin = int(xml.find('bndbox/xmin').text) # 修改为: xmin_text = xml.find('bndbox/xmin').text.strip() # 移除换行、空格等空白字符 xmin = int(float(xmin_text)) # 先转float处理浮点值,再转int - 对
xmax、ymin、ymax做完全相同的修改,确保所有坐标都经过空白清理和正确的类型转换。
这样处理后,不管是带冗余空白的浮点字符串还是纯浮点字符串,都能顺利转为整数类型。
二、tensorflow_io相关库加载警告
这类警告通常是因为tensorflow_io库版本与你的TensorFlow版本不兼容,或者代码中导入了该库但实际没用到。
可选处理方式:
- 直接忽略警告:如果不影响功能,可以在脚本开头添加代码屏蔽警告:
import warnings warnings.filterwarnings("ignore", category=UserWarning, module="tensorflow_io") - 匹配版本重装:如果确实需要使用
tensorflow_io,安装与你的TensorFlow版本匹配的版本(比如TensorFlow 2.15对应tensorflow_io==0.35.0):pip install tensorflow_io==<对应版本号> - 删除无用导入:检查
generate_tfrecord1.py中是否有import tensorflow_io的语句,如果没用到该库的功能,直接删除这条导入即可消除警告。
内容的提问来源于stack exchange,提问作者MUHAMMAD JUNAID
相关产品推荐
相关产品推荐

