Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 生成TFR记录时出现的问题_Python_Python 3.x_Tensorflow_Pandas Groupby - Fatal编程技术网

Python 生成TFR记录时出现的问题

Python 生成TFR记录时出现的问题,python,python-3.x,tensorflow,pandas-groupby,Python,Python 3.x,Tensorflow,Pandas Groupby,我正在尝试使用tensorflow 2.0生成tfrecord文件,起初我已经正确生成了这些文件,但当我再次尝试生成它们时,python控制台显示以下错误: 回溯(最近一次呼叫最后一次): 文件“generate_tfrecordv2.py”,第106行,在 tf.compat.v1.app.run() 文件“C:\Users\LUIS\AppData\Roaming\Python37\site packages\tensorflow\u C ore\Python\platform\app.py

我正在尝试使用tensorflow 2.0生成tfrecord文件,起初我已经正确生成了这些文件,但当我再次尝试生成它们时,python控制台显示以下错误:

回溯(最近一次呼叫最后一次):
文件“generate_tfrecordv2.py”,第106行,在
tf.compat.v1.app.run()
文件“C:\Users\LUIS\AppData\Roaming\Python37\site packages\tensorflow\u C ore\Python\platform\app.py”,第40行,正在运行
_运行(main=main,argv=argv,flags\u parser=\u parse\u flags\u tolerate\u unde)
文件“C:\Users\LUIS\AppData\Roaming\Python37\site packages\absl\app.py”,第299行,正在运行
_运行_main(main,args)
文件“C:\Users\LUIS\AppData\Roaming\Python37\site packages\absl\app.py”,第250行,位于主
系统出口(主(argv))
文件“generate_tfrecordv2.py”,第95行,在main中
分组=拆分(例如,“文件名”)
文件“generate_tfrecordv2.py”,第45行,拆分
gb=df.groupby(组)
文件“D:\ProgramData\Anaconda3\lib\site packages\pandas\core\generic.py”,第7632行,在groupby中
观察到的=观察到的,**千克)
文件“D:\ProgramData\Anaconda3\lib\site packages\pandas\core\groupby\groupby.py”,第2110行,在
groupby返回klass(obj,by,**kwds)
文件“D:\ProgramData\Anaconda3\lib\site packages\pandas\core\groupby\groupby.py”,第360行,在\uuu init中__
变异的
文件“D:\ProgramData\Anaconda3\lib\site packages\pandas\core\groupby\grouper.py”,第578行,在\u get\u grouper中
raise KeyError(gpr)KeyError:“文件名”
CSV文件内容如下所示:

filename;width;height;class;xmin;ymin;xmax;ymax
19219.jpg;800;600;person;49;49;377;559
19219.jpg;800;600;person;431;131;644;592
你能告诉我错误是什么吗?我使用的命令是:

python generate\u tfrecord.py--csv\u input=train\u labels.csv--image\u dir=train--output\u path=train.record
这是我的xml示例:


修改数据
1_245
C:\material\dataset\test\1\u 245.jpg
不为人知
800
600
3.
0
人
未指明
0
0
279
116
423
415
我确实更改了generate_tfrecords.py并将xml_重新生成为_csv,但它不起作用

“”“
用法:
#来自tensorflow/models/
#创建列车数据:
python生成\u tfrecord.py--csv\u输入=数据/train\u labels.csv--output\u path=train.record
#创建测试数据:
python generate_tfrecord.py--csv_input=data/test_labels.csv--output_path=test.record
"""
来自未来进口部
来自未来导入打印功能
从未来导入绝对导入
导入操作系统
输入io
作为pd进口熊猫
导入tensorflow作为tf
从PIL导入图像
#从object_detection.utils导入数据集_util
#立法会议员
导入数据集
#立法会财务
从集合导入名为tuple的OrderedDict
#立法会议员
#flags=tf.app.flags
flags=tf.compat.v1.flags
#立法会财务
标志。定义_字符串('csv_输入','','csv输入路径')
flags.DEFINE_字符串('output_path','','path to output-TFRecord')
flags.DEFINE_string('image_dir','','Path to images')
FLAGS=FLAGS.FLAGS
#要做的事用标签映射替换它
def class_text_至_int(行标签):
如果行_标签=='人':
返回1
其他:
一无所获
def拆分(df,组):
data=namedtuple('data',['filename','object']))
gb=df.groupby(组)
返回文件名的[data(filename,gb.get_group(x)),zip中的x(gb.groups.keys(),gb.groups)]
def create_tf_示例(组、路径):
将tf.compat.v1.gfile.gfile(os.path.join(path,{}.format(group.filename)),'rb')作为fid:
encoded_jpg=fid.read()
encoded_jpg_io=io.BytesIO(encoded_jpg)
image=image.open(编码的\u jpg\u io)
宽度,高度=image.size
filename=group.filename.encode('utf8')
图像格式=b'jpg'
xmins=[]
xmaxs=[]
ymins=[]
ymaxs=[]
类_text=[]
类别=[]
对于索引,group.object.iterrows()中的行:
追加(行['xmin']/width)
追加(行['xmax']/width)
追加(行['ymin']/高度)
附加(行['ymax']/height)
class_text.append(行['class'].encode('utf8'))
class.append(class_text_to_int(行['class']))
示例=tf.train.example(特征=tf.train.features(特征={
“图像/高度”:数据集\u util.int64\u功能(高度),
“图像/宽度”:数据集\u util.int64\u功能(宽度),
“图像/文件名”:数据集\u util.bytes\u功能(文件名),
“图像/源\u id”:数据集\u util.bytes\u功能(文件名),
“图像/编码”:数据集\u util.bytes\u功能(编码的\u jpg),
“图像/格式”:数据集\u util.bytes\u功能(图像\u格式),
“image/object/bbox/xmin”:数据集\u util.float\u列表\u功能(xmins),
“image/object/bbox/xmax”:数据集\u util.float\u列表\u功能(xmaxs),
“image/object/bbox/ymin”:数据集\u util.float\u列表\u功能(ymins),
“image/object/bbox/ymax”:数据集_util.float_list_功能(ymax),
“图像/对象/类/文本”:数据集\u util.bytes\u列表\u功能(类\u文本),
“图像/对象/类/标签”:数据集\u util.int64\u列表\u功能(类),
}))
返回tf_示例
def main(ux):
#writer=tf.python\u io.TFRecordWriter(FLAGS.output\u路径)
writer=tf.compat.v1.python\u io.TFRecordWriter(FLAGS.output\u path)
path=os.path.join(FLAGS.image\u dir)
示例=pd.read\u csv(FLAGS.csv\u输入)
分组=拆分(例如,“文件名”)
对于分组中的组:
tf_示例=创建_tf_示例(组、路径)
writer.write(tf_示例.SerializeToString())
writer.close()
output\u path=os.path.join(os.getcwd(),FLAGS.output\u path)
打印('已成功创建TFRecords:{}'。格式(输出路径))
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
tf.compat.v1.app.run()

我也有同样的错误,因为我使用了RectLabel,并直接从那里导出了CSV文件

CSV必须首先具有以下行:

文件名、宽度、高度、类别、xmin、ymin、xmax、ymax

示例annotations.csv:

filename,width,height,class,xmin,ymin,xmax,ymax
8.jpg,1280,720,label1,427,82,848,578
9.jpg,1280,720,label1,426,87,845,585
28.jpg,1280,720,label1,435,100,847,563
14.jpg,352,640,label2,103,215,276,398
15.jpg,352,640,label2,106,215,279,399
29.jpg,352,640,label2,61,197,270,405
17.jpg,1280,720,label1,471,178,875,671
我使该文件运行以下脚本:

在本教程之后: