将imagenet2012数据为tensorflow的tfrecords格式并跑验证的详细过程
作者:RayChiu_Labloy 发布时间:2024-01-01 12:04:35
下载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次的准确率
来源:https://blog.csdn.net/RayChiu757374816/article/details/126870264


猜你喜欢
- 我们用pyinstaller把朋友文件打包成exe文件,但有时候我们需要还原,我们可以用pyinstxtractor.py用法:python
- 基本属性cv2.imread(文件名,属性) 读入图像属性:指定图像用哪种方式读取文件 cv2.IMREAD_COLOR:读入彩色图像,默认
- 逐步指示这是提供给更喜欢阅读的人的视频文本版本。我们将创建一个类似黑客新闻 或Reddit的社交新闻网站。它将被称为“钢铁传闻”,作为一个分
- 目录1. 前言2. 介绍及安装3. 实战一下3-1 创建爬虫项目3-2 创建爬虫 Ai
- TensorFlow版本更新太快 了,所以导致一些以前接口函数不一致,会报错。这里总结了一下自己犯的错,以防以后再碰到,也可以给别人参考。首
- 前言今天我看了一下自己的文件夹,发现了自己写了许多似乎很无聊的代码。于是乎,一个想法油然而生:“生活已经很无聊了,不如再无聊一点叭”。说干就
- python数值与字符串高级用法1.概述这篇是一篇没有尽头的文章,每当过段时间,再次打开就会看到不一样的内容,有新东西在更新啊。是啊,之所以
- 误区10.数据库镜像在故障发生后,马上就能发现 错误 市面上大肆宣传数据库镜像技术可以在故障发生后,立即检测到错误并进行故障转移。 但事实并
- 在tensorflow中,经常会遇到参数初始化问题,比如在训练自己的词向量时,需要对原始的embeddigs矩阵进行初始化,更一般的,在全连
- 本文实例为大家分享了python使用tcp传输图片数据的具体代码,供大家参考,具体内容如下数据包格式如下客户端:import socketi
- php 生成短网址 原理: 1.将原网址做crc32校验,得到校验码。 2.使用sprintf('%u') 将校验码转为无符
- 当数据量猛增的时候,大家都会选择库表散列等等方式去优化数据读写速度。笔者做了一个简单的尝试,1亿条数据,分100张表。具体实现过程如下。首先
- 阅读目录什么是设计模式单体模式:工厂模式:单例模式观察者模式(发布订阅模式)策略模式模板模式代理模式外观模式设计模式太多了,貌似有23种,其
- 查看Django版本检查是否安装成功,可以在dos下查看Django版本。1.输入python 2.输入import django3.输入d
- 一、安装首先我们需要安装下pyecharts,通过pip指令直接安装即可。pip install pyecharts安装完成后, 可通过pi
- 1、善用拖放技术 我们在使用Dreamweaver编辑网页的时候,经常需要插入一些图象什么的,假设要插入的图象很多,按照常规方法来操作就显得
- tkinter 绘制GUI简单明了,制作一些简单的GUI足够,目前遇到的一个问题是不能同时排列显示多幅图片(目前没找到同时显示解决方法),退
- 页面域关系:主页面a.html所属域A:www.aspxhome.com被iframe的页面b.html所属域B:www.cidianwan
- torch.argmax()函数解析1. 官网链接torch.argmax(),如下图所示:2. torch.argmax(input)函数
- 但是如果是让你接手一个二等残废的网站,并让你在上面改版,而且不能推翻式改版,只能逐步替换旧的程序,那么你会非常痛苦,例如我遇到的问题: 问题