在训练ssd网络的时候,报label_idx = self.class_to_ind[name], KeyError = ‘c‘的错误

今天,在训练ssd300网络的时候, bel_idx = self.class_to_ind[name], KeyError = 'c’的错误。根据提示说明class类中有一个键值是‘c’.查找原因是标注的xml文件中有标不是类别外的类‘c’.用下面代码,找出对应文件,并删除object name为‘c’的标注就可以。

# -*- coding: utf-8 -*-
"""
Created on  2022。10.18

@author: wm
"""

import glob
import os
from xml.etree import ElementTree as ET

# 批量读取Annotations下的xml文件
# per=ET.parse(r'D:\anaconda\envs\ssd300\data\VOCdevkit\VOC2007\Annotations')
xml_dir = r'D:\anaconda\envs\ssd300\data\VOCdevkit\VOC2007\Annotations'
xml_list = glob.glob(xml_dir + '/*.xml')
for xml in xml_list:
    # print(xml)
    per = ET.parse(xml)

    # p_filename = per.find('filename')
    # name = p_filename.text
    # print(name)
    # new_name = name.lower()
    # print(new_name)
    # name = new_name

    p = per.findall('/object')
    for oneper in p:  # 找出person节点
        child = oneper.getchildren()[0]  # 找出person节点的子节点
        # if child.text == 'L_V_line':  # 将VerticalCrack改为verticalcrack
        #     child.text = 'l_v_line'
        # if child.text == 'D_V_line':  # 将VerticalCrack改为verticalcrack
        #     child.text = 'd_v_line'
        # if child.text == 'L_H_line':  # 将VerticalCrack改为verticalcrack
        #     child.text = 'l_h_line'
        # if child.text == 'D_H_line':  # 将VerticalCrack改为verticalcrack
        #     child.text = 'd_h_line'
        # if child.text == 'L_line':  # 将VerticalCrack改为verticalcrack
        #     child.text = 'l_line'
        # if child.text == 'D_line':  # 将VerticalCrack改为verticalcrack
        #     child.text = 'd_line'
        # if child.text == 'D_V_line_3':  # 将VerticalCrack改为verticalcrack
        #     child.text = 'd_v_line'
        # if child.text == 'V_dotted_line':  # 将VerticalCrack改为verticalcrack
        #     child.text = 'v_dotted_line'
        # if child.text == 'H_dotted_line':  # 将VerticalCrack改为verticalcrack
        #     child.text = 'h_dotted_line'
        if child.text == 'c':  # 将VerticalCrack改为verticalcrack
            print(xml)

    # per.write(xml)
    # print(child.tag, ':', child.text)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值