将imagenet2012数据为tensorflow的tfrecords格式并跑验证的详细过程

目录
  • 下载tensorflow的代码
  • 转换
    • 第一个改成自己的数据路径:
    • 第二个修改range的返回类型
    • 修改bytes
    • 读写方式调整
    • 匹配python3
  • 跑一下验证

下载tensorflow的代码

地址:

https://github.com/tensorflow/models.git

然后进入目录:

cd models/research/slim/datasets/

下载Imagenet2012数据集

可以到官网注册下载,或者:

https://www.jb51.net/article/262851.htm

我这里把数据放到了tensorflow路径下:

./models/research/slim/datasets/imagenet2012

models也就是上边下载的tensorflow代码的路径,imagenet2012是自己创建的目录,然后下载完后:

红色的是我要用的数据集,本身我的目的是要做评估,应该用不到ILSVRC2012_bbox_train_v2.tar,但是转数据的时候报找不到某些文件,因此也加上了它,后缀V3 V2代表不同的任务。
蓝色的需要先创建一下目录后续解压数据集要用到。
处理数据参考的是华为的文档:

https://support.huawei.com/enterprise/zh/doc/EDOC1100191905/a8d9a8a2

可以准备一个解压脚本,解压到对应目录:

#!/bin/bash
# mkdir -p train val bbox imagenet_tf
tar -xvf ILSVRC2012_img_train.tar -C train/
tar -xvf ILSVRC2012_img_val.tar -C val/
tar -xvf ILSVRC2012_bbox_train_v2.tar -C bbox/
tar -xvf ILSVRC2012_bbox_val_v3.tgz -C bbox/

转换

先上脚本,然后说一下执行前如何修改脚本里用到的python文件的内容。

python preprocess_imagenet_validation_data.py ./imagenet2012/val/ imagenet_2012_validation_synset_labels.txt
python process_bounding_boxes.py ./imagenet2012/bbox/ imagenet_lsvrc_2015_synsets.txt | sort > imagenet_2012_bounding_boxes.csv
python build_imagenet_data.py --output_directory=./imagenet2012/imagenet_tf --validation_directory=./imagenet2012/val

三个脚本均在 ./models/research/slim/datasets 目录下,我们知道tensorflow本身跨版本之前的代码有很大的区别,像 build_imagenet_data.py 等大多数脚本已经是2年前的了,现在的好多新的环境,比如python3中,直接执行会报很多错误,看下怎么改,参考:

https://www.jb51.net/article/186963.htm

第一个改成自己的数据路径:

蓝色改成自己对应的红色:

可以看到train 数据路径和 output的路径都和val路径一样,否则找不到 n01440764 ,这里我觉得我的数据还是有问题。

第二个修改range的返回类型

大概500行左右:

# 原来 shuffled_index = range(len(filenames)) ,加list()改为以下:
shuffled_index = list(range(len(filenames)))

修改bytes

蓝色改为红色,绿色很多网友说要改,但是我这里改了反而报错。

读写方式调整

蓝色改为红色:

匹配python3

加判断:

然后就可以转换了,结果是:

跑一下验证

python eval_image_classifier.py \
  --checkpoint_path='./weights' \
  --eval_dir='./log/' \
  --dataset_name=imagenet \
  --dataset_split_name=validation \
  --dataset_dir='./datasets/imagenet2012/imagenet_tf/' \
  --model_name=resnet_v1_50
参数 解释
checkpoint_path 参数可以接收目录路径或者文件路径。如果是一个目录路径,则会查找这个目录下最新的模型
eval_dir 执行结果日志的保存目录
dataset_name 我这里是imagenet,需要对应任务数据集
dataset_split_name 指定需要执行的数据集。注意此处是使用验证集( validation )执行验证
dataset_dir tfrecords数据位置
model_name 模型的名称,对应checkpoint_path 路径下的

执行后会打印出如下内容:

eval/Accuracy[0.51]
eval/Recall_5[0.973333336]

Accuracy表示模型的分类准确率,Recall_5表示前5次的准确率

到此这篇关于将imagenet2012数据为tensorflow的tfrecords格式并跑验证的文章就介绍到这了,更多相关tensorflow imagenet2012数据内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Tensorflow之构建自己的图片数据集TFrecords的方法

    学习谷歌的深度学习终于有点眉目了,给大家分享我的Tensorflow学习历程. tensorflow的官方中文文档比较生涩,数据集一直采用的MNIST二进制数据集.并没有过多讲述怎么构建自己的图片数据集tfrecords. 流程是:制作数据集-读取数据集--加入队列 先贴完整的代码: #encoding=utf-8 import os import tensorflow as tf from PIL import Image cwd = os.getcwd() classes = {'test'

  • tensorflow TFRecords文件的生成和读取的方法

    TensorFlow提供了TFRecords的格式来统一存储数据,理论上,TFRecords可以存储任何形式的数据. TFRecords文件中的数据都是通过tf.train.Example Protocol Buffer的格式存储的.以下的代码给出了tf.train.Example的定义. message Example { Features features = 1; }; message Features { map<string, Feature> feature = 1; }; mes

  • TensorFLow 不同大小图片的TFrecords存取实例

    全部存入一个TFrecords文件,然后读取并显示第一张. 不多写了,直接贴代码. from PIL import Image import numpy as np import matplotlib.pyplot as plt import tensorflow as tf IMAGE_PATH = 'test/' tfrecord_file = IMAGE_PATH + 'test.tfrecord' writer = tf.python_io.TFRecordWriter(tfrecord

  • 将imagenet2012数据为tensorflow的tfrecords格式并跑验证的详细过程

    目录 下载tensorflow的代码 转换 第一个改成自己的数据路径: 第二个修改range的返回类型 修改bytes 读写方式调整 匹配python3 跑一下验证 下载tensorflow的代码 地址: https://github.com/tensorflow/models.git 然后进入目录: cd models/research/slim/datasets/ 下载Imagenet2012数据集 可以到官网注册下载,或者: https://www.jb51.net/article/262

  • JS获取一个表单字段中多条数据并转化为json格式

    如图需要获取下面两个li标签里面的数据,然后传给后台:而后台接收的数据格式是json的,所以需要把两个li里面的信息转化为以下格式的. {recieverName:小红,recieverPhone:12341234,recieverAddress:中国湖南},{recieverName:小明,recieverPhone:12345678,recieverAddress:中国上海} 代码如下: var recieverArr = []; //全局变量 var recieverMsg = {}; /

  • layui实现把数据表格时间戳转换为时间格式的例子

    如下所示: <script type="text/javascript"> function createTime(v){ var date = new Date(v); var y = date.getFullYear(); var m = date.getMonth()+1; m = m<10?'0'+m:m; var d = date.getDate(); d = d<10?("0"+d):d; var h = date.getHour

  • 转换layUI的数据表格中的日期格式方法

    转换layUI的数据表格中的日期格式 前端jsp代码 <table class="layui-table" style="width:100%" lay-data="{url:'/why123/user/findUserAll?userType=0', page:true, id:'idTest'}" lay-filter="demo"> <thead> <tr> <th lay-da

  • python3实现从kafka获取数据,并解析为json格式,写入到mysql中

    项目需求:将kafka解析来的日志获取到数据库的变更记录,按照订单的级别和订单明细级别写入数据库,一条订单的所有信息包括各种维度信息均保存在一条json中,写入mysql5.7中. 配置信息: [Global] kafka_server=xxxxxxxxxxx:9092 kafka_topic=mes consumer_group=test100 passwd = tracking port = 3306 host = xxxxxxxxxx user = track schema = track

  • python转换wrf输出的数据为网页可视化json格式

    目录 前言 NCL插值脚本1 NCL插值脚本2 python格式转换脚本1 python 格式转换脚本2 前言 一般网页可视化风场中的数据都是json格式,而如果我们希望将wrf模式模拟输出的风场数据在网页中进行展示,这就需要先将wrfoutput数据转换为网页可以识别的json格式. 这里主要需要用到json库,主要的实现方式就是将读取的风场风量U,V转换为字典并存到json文件中 同时,由于wrf模拟的数据一般是非等间距的网格,需要先将数据进行插值,插值到等间距的网格,这里可以通过NCL的函

  • Python导入Excel表格数据并以字典dict格式保存的操作方法

    本文介绍基于Python语言,将一个Excel表格文件中的数据导入到Python中,并将其通过字典格式来存储的方法~   本文介绍基于Python语言,将一个Excel表格文件中的数据导入到Python中,并将其通过字典格式来存储的方法.   我们以如下所示的一个表格(.xlsx格式)作为简单的示例.其中,表格共有两列,第一列为学号,第二列为姓名,且每一行的学号都不重复:同时表格的第一行为表头.   假设我们需要将第一列的学号数据作为字典的键,而第二列姓名数据作为字典的值.   首先,导入必要的

  • 使用tensorflow框架在Colab上跑通猫狗识别代码

    一. 前提: 有Google账号(具体怎么注册账号这里不详述,大家都懂的,自行百度)在你的Google邮箱中关联好colab(怎样在Google邮箱中使用colab在此不详述,自行百度) 二. 现在开始: 因为我们使用的是colab,所以就不必为安装版本对应的anaconda.python以及tensorflow尔苦恼了,经过以下配置就可以直接开始使用了. 在colab中新建代码块,运行以下代码来下载需要的数据集 # In this exercise you will train a CNN o

  • SpringBoot中Mybatis + Druid 数据访问的详细过程

    目录 1.简介 2.JDBC 3.CRUD操作 4.自定义数据源 DruidDataSource 1.配置 Druid 数据源监控 2.配置 Druid web 监控 filter 5.SpringBoot 整合mybatis 1. 导入mybatis所需要的依赖 2.配置数据库连接信息 3,创建实体类 4.配置Mapper接口类 6.SpringBoot 整合 1.简介 ​ 对于数据访问层,无论是SQL(关系型数据库) 还是NOSQL(非关系型数据库),SpringBoot 底层都是采用 Sp

  • vue将后台数据时间戳转换成日期格式

    前言 在项目中,经常会有后台返回一个时间戳,页面展示用的却是日期格式的情况 不同组件多次使用的话,那么建议在 src 下新建一个 common 文件夹,创建 date.js 文件,方便多次复用 在组件中使用 <template> <div> <p>{{date1 | formatDate}}</p> <p>{{date1 | formatDate2}}</p> <p>{{date1 | formatDate3}}</

随机推荐