tensorflow-yolov3 icon indicating copy to clipboard operation
tensorflow-yolov3 copied to clipboard

标签空格问题

Open wl4135 opened this issue 5 years ago • 15 comments

我想请教一下,训练完了,也验证完了,但是运行main.py查看map值时报错说是标签有空格,标签有空格不行吗?

错误提示: If you have a <class_name> with spaces between words you should remove them by running the script "remove_space.py" or "rename_class.py" in the "extra/" folder. 我按照这个提示改了,也没改好啊,求大佬指点

wl4135 avatar Mar 15 '20 14:03 wl4135

已解决,批量处理了xml文件,把空格处理了重新训练,执行main.py就不会报错了

wl4135 avatar Mar 18 '20 03:03 wl4135

您好,请问您在使用作者建议的VOC数据集做训练,运行train.py后,是否有出现报错ValueError: could not convert string to float: '/home/zjh/tensorflow-yolov3/data/dataset/VOC/train/VOCdevkit/VOC2007/JPEGImages/000005.jpg 263'的情况嘛。初步判断是utils.py文件里读取voc_test.txt时没有正确划分数据,不知道是不是这个问题.

milletzhou avatar Jul 02 '20 10:07 milletzhou

您好,请问您在使用作者建议的VOC数据集做训练,运行train.py后,是否有出现报错ValueError: could not convert string to float: '/home/zjh/tensorflow-yolov3/data/dataset/VOC/train/VOCdevkit/VOC2007/JPEGImages/000005.jpg 263'的情况嘛。初步判断是utils.py文件里读取voc_test.txt时没有正确划分数据,不知道是不是这个问题.

这种情况我没遇到过 不过你检查一下你的xml文件和图像文件都能对的上不 检查一下图片的格式是否正确

wl4135 avatar Jul 02 '20 10:07 wl4135

您好,请问您在使用作者建议的VOC数据集做训练,运行train.py后,是否有出现报错ValueError: could not convert string to float: '/home/zjh/tensorflow-yolov3/data/dataset/VOC/train/VOCdevkit/VOC2007/JPEGImages/000005.jpg 263'的情况嘛。初步判断是utils.py文件里读取voc_test.txt时没有正确划分数据,不知道是不是这个问题.

这种情况我没遇到过 不过你检查一下你的xml文件和图像文件都能对的上不 检查一下图片的格式是否正确

好的,谢谢回复♥

milletzhou avatar Jul 02 '20 10:07 milletzhou

我也遇到了这个问题,运行main.py时报这个错误,请问怎么处理xml标签文件呢,谢谢!

hs756149694 avatar Oct 05 '20 06:10 hs756149694

我也遇到了这个问题,运行main.py时报这个错误,请问怎么处理xml标签文件呢,谢谢!

就是找一个可以批量处理xml文件的脚本,把你之前的带有空格的标签改掉就可以了,然后重新训练

wl4135 avatar Oct 05 '20 06:10 wl4135

我也遇到了这个问题,运行main.py时报这个错误,请问怎么处理xml标签文件呢,谢谢!

就是找一个可以批量处理xml文件的脚本,把你之前的带有空格的标签改掉就可以了,然后重新训练

请问这个会影响我原来生成的train.txt文件吗,批量处理之后,还需要修改其他的吗,类似于class文件,谢谢!

hs756149694 avatar Oct 05 '20 06:10 hs756149694

我也遇到了这个问题,运行main.py时报这个错误,请问怎么处理xml标签文件呢,谢谢!

就是找一个可以批量处理xml文件的脚本,把你之前的带有空格的标签改掉就可以了,然后重新训练

请问这个会影响我原来生成的train.txt文件吗,批量处理之后,还需要修改其他的吗,类似于class文件,谢谢!

原则上不会影响,因为train,txt保存的是你的图像文件的路径和标注的坐标信息,只需要修改标签就可以,然后重新训练。

wl4135 avatar Oct 05 '20 06:10 wl4135

我也遇到了这个问题,运行main.py时报这个错误,请问怎么处理xml标签文件呢,谢谢!

就是找一个可以批量处理xml文件的脚本,把你之前的带有空格的标签改掉就可以了,然后重新训练

请问这个会影响我原来生成的train.txt文件吗,批量处理之后,还需要修改其他的吗,类似于class文件,谢谢!

原则上不会影响,因为train,txt保存的是你的图像文件的路径和标注的坐标信息,只需要修改标签就可以,然后重新训练。

谢谢,我这个标签的空格是在中间,请问您还有这个脚本,能发给我一份吗,万分感谢!

hs756149694 avatar Oct 05 '20 06:10 hs756149694

我也遇到了这个问题,运行main.py时报这个错误,请问怎么处理xml标签文件呢,谢谢!

就是找一个可以批量处理xml文件的脚本,把你之前的带有空格的标签改掉就可以了,然后重新训练

请问这个会影响我原来生成的train.txt文件吗,批量处理之后,还需要修改其他的吗,类似于class文件,谢谢!

原则上不会影响,因为train,txt保存的是你的图像文件的路径和标注的坐标信息,只需要修改标签就可以,然后重新训练。

谢谢,我这个标签的空格是在中间,请问您还有这个脚本,能发给我一份吗,万分感谢!

import os import xml.etree.ElementTree as ET

#程序功能:批量修改VOC数据集中xml标签文件的标签名称 def changelabelname(inputpath): listdir = os.listdir(inputpath) for file in listdir: if file.endswith('xml'): file = os.path.join(inputpath,file) tree = ET.parse(file) root = tree.getroot() for object1 in root.findall('object'): for sku in object1.findall('name'): #查找需要修改的名称 if (sku.text == 'preName'): #‘preName’为修改前的名称 sku.text = 'TESTNAME' #‘TESTNAME’为修改后的名称 tree.write(file,encoding='utf-8') #写进原始的xml文件并避免原始xml中文字符乱码 else: pass else: pass

if name == 'main': inputpath = 'E:/Research/Dataset/Test/Annotations' #此处替换为自己的路径 changelabelname(inputpath) 这个就是

wl4135 avatar Oct 05 '20 06:10 wl4135

我也遇到了这个问题,运行main.py时报这个错误,请问怎么处理xml标签文件呢,谢谢!

就是找一个可以批量处理xml文件的脚本,把你之前的带有空格的标签改掉就可以了,然后重新训练

请问这个会影响我原来生成的train.txt文件吗,批量处理之后,还需要修改其他的吗,类似于class文件,谢谢!

原则上不会影响,因为train,txt保存的是你的图像文件的路径和标注的坐标信息,只需要修改标签就可以,然后重新训练。

谢谢,我这个标签的空格是在中间,请问您还有这个脚本,能发给我一份吗,万分感谢!

import os import xml.etree.ElementTree as ET

#程序功能:批量修改VOC数据集中xml标签文件的标签名称 def changelabelname(inputpath): listdir = os.listdir(inputpath) for file in listdir: if file.endswith('xml'): file = os.path.join(inputpath,file) tree = ET.parse(file) root = tree.getroot() for object1 in root.findall('object'): for sku in object1.findall('name'): #查找需要修改的名称 if (sku.text == 'preName'): #‘preName’为修改前的名称 sku.text = 'TESTNAME' #‘TESTNAME’为修改后的名称 tree.write(file,encoding='utf-8') #写进原始的xml文件并避免原始xml中文字符乱码 else: pass else: pass

if name == 'main': inputpath = 'E:/Research/Dataset/Test/Annotations' #此处替换为自己的路径 changelabelname(inputpath) 这个就是

我只需要把原来的标签中间的空格删掉就可以了吗,那我的voc.names里面需要删掉空格吗,谢谢您

hs756149694 avatar Oct 05 '20 06:10 hs756149694

我也遇到了这个问题,运行main.py时报这个错误,请问怎么处理xml标签文件呢,谢谢!

就是找一个可以批量处理xml文件的脚本,把你之前的带有空格的标签改掉就可以了,然后重新训练

请问这个会影响我原来生成的train.txt文件吗,批量处理之后,还需要修改其他的吗,类似于class文件,谢谢!

原则上不会影响,因为train,txt保存的是你的图像文件的路径和标注的坐标信息,只需要修改标签就可以,然后重新训练。

谢谢,我这个标签的空格是在中间,请问您还有这个脚本,能发给我一份吗,万分感谢!

import os import xml.etree.ElementTree as ET #程序功能:批量修改VOC数据集中xml标签文件的标签名称 def changelabelname(inputpath): listdir = os.listdir(inputpath) for file in listdir: if file.endswith('xml'): file = os.path.join(inputpath,file) tree = ET.parse(file) root = tree.getroot() for object1 in root.findall('object'): for sku in object1.findall('name'): #查找需要修改的名称 if (sku.text == 'preName'): #‘preName’为修改前的名称 sku.text = 'TESTNAME' #‘TESTNAME’为修改后的名称 tree.write(file,encoding='utf-8') #写进原始的xml文件并避免原始xml中文字符乱码 else: pass else: pass if name == 'main': inputpath = 'E:/Research/Dataset/Test/Annotations' #此处替换为自己的路径 changelabelname(inputpath) 这个就是

我只需要把原来的标签中间的空格删掉就可以了吗,那我的voc.names里面需要删掉空格吗,谢谢您

改掉 改掉后的所有标签要保持一致

wl4135 avatar Oct 05 '20 06:10 wl4135

我也遇到了这个问题,运行main.py时报这个错误,请问怎么处理xml标签文件呢,谢谢!

就是找一个可以批量处理xml文件的脚本,把你之前的带有空格的标签改掉就可以了,然后重新训练

请问这个会影响我原来生成的train.txt文件吗,批量处理之后,还需要修改其他的吗,类似于class文件,谢谢!

原则上不会影响,因为train,txt保存的是你的图像文件的路径和标注的坐标信息,只需要修改标签就可以,然后重新训练。

谢谢,我这个标签的空格是在中间,请问您还有这个脚本,能发给我一份吗,万分感谢!

import os import xml.etree.ElementTree as ET #程序功能:批量修改VOC数据集中xml标签文件的标签名称 def changelabelname(inputpath): listdir = os.listdir(inputpath) for file in listdir: if file.endswith('xml'): file = os.path.join(inputpath,file) tree = ET.parse(file) root = tree.getroot() for object1 in root.findall('object'): for sku in object1.findall('name'): #查找需要修改的名称 if (sku.text == 'preName'): #‘preName’为修改前的名称 sku.text = 'TESTNAME' #‘TESTNAME’为修改后的名称 tree.write(file,encoding='utf-8') #写进原始的xml文件并避免原始xml中文字符乱码 else: pass else: pass if name == 'main': inputpath = 'E:/Research/Dataset/Test/Annotations' #此处替换为自己的路径 changelabelname(inputpath) 这个就是

我只需要把原来的标签中间的空格删掉就可以了吗,那我的voc.names里面需要删掉空格吗,谢谢您

改掉 改掉后的所有标签要保持一致

谢谢您,我试试改一下看能否运行!

hs756149694 avatar Oct 05 '20 07:10 hs756149694

刚刚运行了之后可以跑了,但是又出现了这个错误,map率为0,报的错ValueError: not enough values to unpack (expected 2, got 0),不知道您遇到过没有

hs756149694 avatar Oct 05 '20 07:10 hs756149694

刚刚运行了之后可以跑了,但是又出现了这个错误,map率为0,报的错ValueError: not enough values to unpack (expected 2, got 0),不知道您遇到过没有

这个我没有遇到过,不过好像这个错误很常见 你上网查一下, 建议你更改完标签之后,重新按照流程训练一遍 然后再测试map等验证指标

wl4135 avatar Oct 05 '20 07:10 wl4135