将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是自己创建的目录,然后下载完后:

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

红色的是我要用的数据集,本身我的目的是要做评估,应该用不到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

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

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

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

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

第二个修改range的返回类型

大概500行左右:

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

修改bytes

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

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

读写方式调整

蓝色改为红色:

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

匹配python3

加判断:

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

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

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

跑一下验证

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_dirtfrecords数据位置
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

标签:tensorflow,imagenet,数据,格式
0
投稿

猜你喜欢

  • Python pandas之多级索引取值详解

    2022-05-09 14:12:31
  • Python Django 数据库的相关操作详解

    2024-01-26 21:02:46
  • 推荐几款MySQL相关工具

    2024-01-23 10:42:12
  • 用好Frontpage中的各种回车

    2008-02-21 14:33:00
  • SQL Server的怪辟:异常与孤立事务

    2009-09-24 14:11:00
  • Golang 统计字符串中数字字母数量的实现方法

    2024-04-23 09:43:04
  • 基于ASP的站内多值搜索

    2010-05-11 20:03:00
  • 对python3中的RE(正则表达式)-详细总结

    2022-12-28 23:33:41
  • 详细讲解Access数据库远程连接的实用方法

    2008-11-28 16:34:00
  • 利用python实现xml与数据库读取转换的方法

    2024-01-23 06:27:51
  • 教你如何在SQL Server数据库中加密数据

    2009-09-10 14:49:00
  • scrapy爬虫完整实例

    2021-06-08 09:34:26
  • 教你使用Psycopg2连接openGauss的方法

    2023-09-17 02:56:39
  • Yii2中SqlDataProvider用法示例

    2023-11-20 10:10:05
  • 一个取图片尺寸的类,支持jpg,gif,png

    2007-10-18 10:25:00
  • 教你两步解决conda安装pytorch时下载速度慢or超时的问题

    2022-04-12 17:19:59
  • Python的collections模块中的OrderedDict有序字典

    2023-06-21 00:13:52
  • Java使用正则表达式验证手机号和电话号码的方法

    2023-11-20 08:07:12
  • javascript运动效果实例总结(放大缩小、滑动淡入、滚动)

    2024-04-16 09:24:46
  • uniapp使用H5调试时跨域问题解决

    2024-05-09 10:37:11
  • asp之家 网络编程 m.aspxhome.com