ValueError: invalid literal for int() with base 10: ‘‘

在训练FastRCNN时遇到ValueError,原因是XML文件中存在非整数坐标数据。为解决此问题,可以使用Python的ElementTree库解析XML文件,遍历并转换所有坐标值为整数,然后覆盖更新XML文件。提供的代码示例展示了如何批量处理XML文件中的坐标转换。
摘要由CSDN通过智能技术生成

问题描述:当训练结果出现ValueError: invalid literal for int() with base 10: ‘’,在训练faster rcnn时出现了以上问题。
在这里插入图片描述
问题解决方案:这是因为数据的元素,因为xml文件中存在数据为非整数情况,需将里面涉及的代码进行更改,将数据全部变换为整数,以下为批量将xml文件坐标转换为整数的代码

import os
import xml.etree.ElementTree as ET

path = r'E:\xml'  # 包含xml的文件夹路径,文件夹名字即可


def edit_xml(xml_file):
    """
    修改xml文件
    :param xml_file:xml文件的路径
    :return:
    """
    all_xml_file = os.path.join(path, xml_file)
    tree = ET.parse(all_xml_file)
    print(all_xml_file)
    objs = tree.findall('object')
    for ix, obj in enumerate(objs):
        obj_bnd = obj.find('bndbox')
        obj_xmin = obj_bnd.find('xmin')
        obj_ymin = obj_bnd.find('ymin')
        obj_xmax = obj_bnd.find('xmax')
        obj_ymax = obj_bnd.find('ymax')
        xmin = float(obj_xmin.text)
        ymin = float(obj_ymin.text)
        xmax = float(obj_xmax.text)
        ymax = float(obj_ymax.text)
        obj_xmin.text = str(round(xmin))  # 四舍五入转为整数
        obj_ymin.text = str(round(ymin))
        obj_xmax.text = str(round(xmax))
        obj_ymax.text = str(round(ymax))

    tree.write(all_xml_file, method='xml', encoding='utf-8')  # 覆盖更新xml文件


if __name__ == '__main__':
    files = os.listdir(path)  # 获取文件名列表
    for i, file in enumerate(files):
        if file.endswith('.xml'):
            edit_xml(file)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值