将 cvs转换为tfrecord ,终端输入指令:

python generate_tfrecord.py --csv_input=data/cup_train.csv --output_path=data/cup_train.record

其中python文件中的csv_input相当于data/cup_train.csv ,output_path相当于data/cup_train.record,也就是输出文件路径以及名称。

执行下面code:

# -*- coding: utf-8 -*-
"""
Created on Tue Jan 16 01:04:55 2018@author: Xiang Guo
""""""
Usage:# From tensorflow/models/# Create train data:python generate_tfrecord.py --csv_input=data/tv_vehicle_labels.csv  --output_path=train.record# Create test data:python generate_tfrecord.py --csv_input=data/test_labels.csv  --output_path=test.record
"""import os
import io
import pandas as pd
import tensorflow as tffrom PIL import Image
from object_detection.utils import dataset_util
from collections import namedtuple, OrderedDictos.chdir('D:\\tensorflow-model\\models\\research\\object_detection\\')flags = tf.app.flags
flags.DEFINE_string('csv_input', '', 'Path to the CSV input')
flags.DEFINE_string('output_path', '', 'Path to output TFRecord')
FLAGS = flags.FLAGS# TO-DO replace this with label map
def class_text_to_int(row_label):if row_label == 'tv':return 1elif row_label == 'vehicle':return 2else:Nonedef split(df, group):data = namedtuple('data', ['filename', 'object'])gb = df.groupby(group)return [data(filename, gb.get_group(x)) for filename, x in zip(gb.groups.keys(), gb.groups)]def create_tf_example(group, path):with tf.gfile.GFile(os.path.join(path, '{}'.format(group.filename)), 'rb') as fid:encoded_jpg = fid.read()encoded_jpg_io = io.BytesIO(encoded_jpg)image = Image.open(encoded_jpg_io)width, height = image.sizefilename = group.filename.encode('utf8')image_format = b'jpg'xmins = []xmaxs = []ymins = []ymaxs = []classes_text = []classes = []for index, row in group.object.iterrows():xmins.append(row['xmin'] / width)xmaxs.append(row['xmax'] / width)ymins.append(row['ymin'] / height)ymaxs.append(row['ymax'] / height)classes_text.append(row['class'].encode('utf8'))classes.append(class_text_to_int(row['class']))tf_example = tf.train.Example(features=tf.train.Features(feature={'image/height': dataset_util.int64_feature(height),'image/width': dataset_util.int64_feature(width),'image/filename': dataset_util.bytes_feature(filename),'image/source_id': dataset_util.bytes_feature(filename),'image/encoded': dataset_util.bytes_feature(encoded_jpg),'image/format': dataset_util.bytes_feature(image_format),'image/object/bbox/xmin': dataset_util.float_list_feature(xmins),'image/object/bbox/xmax': dataset_util.float_list_feature(xmaxs),'image/object/bbox/ymin': dataset_util.float_list_feature(ymins),'image/object/bbox/ymax': dataset_util.float_list_feature(ymaxs),'image/object/class/text': dataset_util.bytes_list_feature(classes_text),'image/object/class/label': dataset_util.int64_list_feature(classes),}))return tf_exampledef main(_):writer = tf.python_io.TFRecordWriter(FLAGS.output_path)path = os.path.join(os.getcwd(), 'images')examples = pd.read_csv(FLAGS.csv_input)grouped = split(examples, 'filename')for group in grouped:tf_example = create_tf_example(group, path)writer.write(tf_example.SerializeToString())writer.close()output_path = os.path.join(os.getcwd(), FLAGS.output_path)print('Successfully created the TFRecords: {}'.format(output_path))if __name__ == '__main__':tf.app.run()

遇到以下几个问题:

1. 错误提示:AttributeError: module 'tensorflow' has no attribute 'app'

分析问题:由于tensorflow版本问题导致的

解决方式:将导入code

import tensorflow as tf

修改为:

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()

2.错误提示: File "C:\Program Files\python\lib\site-packages\tensorflow\python\lib\io\file_io.py", line 84, in _preread_check
    self._read_buf = _pywrap_file_io.BufferedInputStream(
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd5 in position 112: invalid continuation byte

分析问题:通过跟踪打印,发现path 问题导致的

解决方式:将def main(_): 中  path = os.path.join(os.getcwd(), 'images') 这句中的image 修改为存放cup_train.csv 以及 jpg 和xml 的文件夹名称( path = os.path.join(os.getcwd(), 'data'))。

3.错误提示:tf.python_io.TFRecordWriter  UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd5 in position 112: invalid continuation byte

分析问题:直接在pycharm  或者别的python 管理app中执行generate_tfrecord.py ,导致writer = tf.python_io.TFRecordWriter(FLAGS.output_path) 中的FLAGS.output_path 没有传递文件名

解决问题:可以直接在writer = tf.python_io.TFRecordWriter('D:\\models-master\\research\\object_detection\\data\\cup_train.record') 可以直接给出文件输出路径与名称;

修正后的code:

#-*- coding : utf-8 -*-
"""
Created on Tue Jan 16 01:04:55 2018@author: Xiang Guo
""""""
Usage:# From tensorflow/models/# Create train data:python generate_tfrecord.py --csv_input=data/tv_vehicle_labels.csv  --output_path=train.record# Create test data:python generate_tfrecord.py --csv_input=data/test_labels.csv  --output_path=test.record
"""import os
import io
import pandas as pd
#import tensorflow as tf
import tensorflow.compat.v1 as tffrom PIL import Image
from object_detection.utils import dataset_util
from collections import namedtuple, OrderedDictos.chdir('D:\\models-master\\research\\object_detection\\')flags = tf.app.flags
flags.DEFINE_string('csv_input', '', 'Path to the CSV input')
flags.DEFINE_string('output_path', '', 'Path to output TFRecord')
FLAGS = flags.FLAGS# TO-DO replace this with label map
def class_text_to_int(row_label):if row_label == 'cup':return 1else:Nonedef split(df, group):data = namedtuple('data', ['filename', 'object'])gb = df.groupby(group)return [data(filename, gb.get_group(x)) for filename, x in zip(gb.groups.keys(), gb.groups)]def create_tf_example(group, path):with tf.gfile.GFile(os.path.join(path, '{}'.format(group.filename)), 'rb') as fid:encoded_jpg = fid.read()encoded_jpg_io = io.BytesIO(encoded_jpg)image = Image.open(encoded_jpg_io)width, height = image.sizefilename = group.filename.encode('utf8')image_format = b'jpg'xmins = []xmaxs = []ymins = []ymaxs = []classes_text = []classes = []for index, row in group.object.iterrows():xmins.append(row['xmin'] / width)xmaxs.append(row['xmax'] / width)ymins.append(row['ymin'] / height)ymaxs.append(row['ymax'] / height)classes_text.append(row['class'].encode('utf8'))classes.append(class_text_to_int(row['class']))tf_example = tf.train.Example(features=tf.train.Features(feature={'image/height': dataset_util.int64_feature(height),'image/width': dataset_util.int64_feature(width),'image/filename': dataset_util.bytes_feature(filename),'image/source_id': dataset_util.bytes_feature(filename),'image/encoded': dataset_util.bytes_feature(encoded_jpg),'image/format': dataset_util.bytes_feature(image_format),'image/object/bbox/xmin': dataset_util.float_list_feature(xmins),'image/object/bbox/xmax': dataset_util.float_list_feature(xmaxs),'image/object/bbox/ymin': dataset_util.float_list_feature(ymins),'image/object/bbox/ymax': dataset_util.float_list_feature(ymaxs),'image/object/class/text': dataset_util.bytes_list_feature(classes_text),'image/object/class/label': dataset_util.int64_list_feature(classes),}))return tf_exampledef main(_):writer = tf.python_io.TFRecordWriter(FLAGS.output_path)path = os.path.join(os.getcwd(), 'data')examples = pd.read_csv(FLAGS.csv_input,encoding="unicode_escape")grouped = split(examples, 'filename')for group in grouped:tf_example = create_tf_example(group, path)writer.write(tf_example.SerializeToString())writer.close()output_path = os.path.join(os.getcwd(), FLAGS.output_path)print('Successfully created the TFRecords: {}'.format(output_path))if __name__ == '__main__':tf.app.run()

其中:path = os.path.join(os.getcwd(), 'data') 中的data就是终端执行时传递的文件名称

执行python generate_tfrecord.py 出现 utf-8‘ codec can‘t decode相关推荐

  1. pycharm终端运行python文件_在PyCharm终端中执行python manage.py..._慕课问答

    原来在DOS环境下需要先执行:  conda activate命令,然后再执行 python manage.py runserver就可以了. 如下: D:\DjangoProject\django_ ...

  2. 使用Django在执行python manage.py startapp myApp创建应用

    使用Django在执行python manage.py startapp myApp创建应用 出现很长的报错信息并且最后两行提示: raise ImproperlyConfigured('mysqlc ...

  3. python setup.py build,无法执行“python setup.py build”命令..!

    我试图在BACKTRACK 5 R1虚拟机上安装pylorcon-1(Lorcon用于编写无线数据包的嗅探器的python包装)...我从[Pylorcon Official Page] [1]下载的 ...

  4. 执行python setup.py install时报错:error: can't create or remove files in install directory

    文章目录 报错 mac&linux Windows 报错 在研究setuptools时,执行python setup.py install,遇到不能创建文件夹的权限报错,完整的错误日志如下: ...

  5. Django配置MySQL执行python manage.py makemigrations 出现No changes detected报错

    在给Django配置mysql的时候按照教程在Model.py文件中配置加入定义模型类的代码后 执行数据迁移代码 python manage.py makemigrations 报错 显示No cha ...

  6. python编码错误:UnicodeDecodeError: 'utf8' codec can't decode

    python编码错误:UnicodeDecodeError: 'utf8' codec can't decode (2012-11-01 17:16:23) 转载▼ 标签: 杂谈 分类:python学 ...

  7. python报错:UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xa3 in position 48

    python报错: UnicodeDecodeError: 'gbk' codec can't decode byte 0xa3 in position 48: illegal multibyte s ...

  8. Cpython源码分析03(*)_简要总结下Cpython是如何执行python test.py

    当我们通过命令行传入参数的方式调用 python 解释器去运行一个模块的时候,比如: $ python test.py 图2.1中所示的过程将开始进行.(当然这只是其中一种运行 Python 程序的方 ...

  9. 学习Python的Django执行python manage.py startapp myApp创建应用出现的问题

    最近在学习python的Django,跟着视频操作却也出现问题,创建应用的时候在终端输入python manage.py startapp myApp 出现了报错,报错如下: 报错信息有点多,但最后俩 ...

最新文章

  1. 上海技术英雄会续:几个典型问题的看法
  2. MySQL: Root element is missing
  3. 如何备份被独占文件?
  4. Tomcat -- Cannot create a server using the sel...
  5. AXIS2使用问题解决点滴
  6. linux shell函数
  7. Linux系统下各文件目录的含义 入门
  8. 中国加氢处理催化剂行业市场供需与战略研究报告
  9. MTK:GPIO的配置与接口说明
  10. media recovery oracle,Oracle非归档模式MediaRecovery错误之--ORA-26040
  11. git init github
  12. [转帖]Windows下cwRsyncServer双机连续同步部署
  13. CSDN账号被盗了吗?
  14. 全国计算机软考程序员考试大纲(2012)
  15. 《计算机科学概论(第12版)》—第0章0.2节计算机器的由来
  16. 学习是对自己最好的投资
  17. 黑客丛林之旅通关攻略(共14关)
  18. BLOXORZ 游戏攻略
  19. [Keil][Verilog][微机原理] 流水灯、存储器、外部中断实验_北京邮电大学计算机原理与应用课程实验报告
  20. 如何检查系统SMTP的ip地址是否被检测网站列入国际黑名单组织

热门文章

  1. 变速变调软件有哪些?这个不错的变速变调软件值得一试
  2. 软件测试用例的实际结果,软件测试结果归纳与分析
  3. 2. linux安装(1)
  4. 《0~3岁孩子的 正面管教》——备忘
  5. 2016/7/4日-你若安好,便是晴天.
  6. 嵌入式中串口、COM口、TTL、RS232、RS485的区别详解
  7. 中国人误传了数千年的七句话(不可不看!) 转帖
  8. 基于STM32F4的CANOpen移植教程(超级详细)
  9. 对Java的展望_优秀技能经验及对java学习展望
  10. win10 软件移动位置信息服务器,如何修改win10软件默认安装位置