修改 xml 格式的训练数据标注集(label / annotation)的 python 脚本

最近遇到了 R-FCN 训练时,numpy 会报错的情况,错误如下:

RuntimeWarning: invalid value encountered in log targets_dw = np.log(gt_widths / ex_widths)

搞得 LOSS 一直是 Nan,很是头疼。
几经查询,看到了fool-zz 的博客,将问题确定在了标注上。查阅自己的 xml 标注文件( labelImage 生成),发现确实有的框的起点在图片的左上角,也就是 (0,0),引发了上述错误。

手动修改 xml 实在是太辛苦了,所以写了个 python 脚本,利用 xml.etree 进行修改,方便快捷。并且日后修改标注(xml格式)时简单修改就可以拿来使用,非常方便。

最后附上代码:

import os
import xml.etree.ElementTree as ET

path = './Annotations_needRectify'

for xml in os.listdir(path):
    print(xml)
    fileName = os.path.join(path,xml)
    tree = ET.parse(fileName)
    root = tree.getroot() #数据内存地址
    for node in root.iter("xmin"):
        if int(node.text) == 0:
            node.text = str(1)
    for node in root.iter("ymin"):
        if int(node.text) == 0:
            node.text = str(1)
    tree.write(fileName)

你可能感兴趣的:(修改 xml 格式的训练数据标注集(label / annotation)的 python 脚本)