本文主要是介绍OutOfRangeError PaddingFIFOQueue '_1_get_batch/batch/padding_fifo_queue 解决方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近使用Faster-RCNN训练模型时,遇到了如标题所示的问题,最终得到解决,现在记录解决方式如下:
一般这种问题都不是代码的问题,请先检查训练数据:
1. 训练数据中图像文件和标注文件数量是否相同
2. 训练数据中是否有损坏的图片(数量多的话可以用PIL写个简单的加载方法去判断)
3. 标注文件中标注的长宽与实际长宽是否相同(我的问题在这里得到了解决,下面列出检测的代码):
from xml.etree.ElementTree import ElementTree, Element
import os
import numpy as np
import cv2# 可以读取带中文路径的图
def cv_imread(file_path):cv_img = cv2.imdecode(np.fromfile(file_path, dtype=np.uint8), -1)return cv_imgdef read_xml(in_path):tree = ElementTree()tree.parse(in_path)return treeif __name__ == '__main__':source_pic_root_path = '你的训练数据文件夹地址'for parent, _, files in os.walk(source_pic_root_path):for file in files:if file.endswith('.xml'):continuepic_path = os.path.join(parent, file)img = Nonetry:img = cv_imread(pic_path)if img is None:raise Exception('图片打开失败')except Exception as e:print(str(e))continuesize = img.shapexml_path = os.path.join(source_pic_root_path, file[:-4] + '.xml')tree = read_xml(xml_path)root = tree.getroot()for h_node in root.iter('height'):height = str(size[0])# 检测if height != h_node.text:print('{}==>{}==>{}'.format(height,h_node.text,file))print('--------------')# 解决# h_node.text = heightfor w_node in root.iter('width'):width = str(size[1])# 检测if width != w_node.text:print('{}==>{}==>{}'.format(width, w_node.text, file))print('--------------')# 解决# w_node.text = width# 在解决时打开该注释#tree.write(xml_path)
数据检测完毕完全没问题之后,可以查看代码的初始化部分的问题(未初始化local variables也会导致该问题):
with tf.Session() as sess:sess.run(tf.local_variables_initializer())sess.run(tf.global_variables_initializer())
这篇关于OutOfRangeError PaddingFIFOQueue '_1_get_batch/batch/padding_fifo_queue 解决方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!