如何准备 imagenet 数据集以运行 resnet50(来自官方 Tensorflow 模型花园)培训

Posted

技术标签:

【中文标题】如何准备 imagenet 数据集以运行 resnet50(来自官方 Tensorflow 模型花园)培训【英文标题】:How to prepare imagenet dataset to run resnet50 (from official Tensorflow Model Garden) training 【发布时间】:2021-06-18 13:31:22 【问题描述】:

我想在我的本地 GPU 服务器上的 imagenet2012 数据集上训练一个 resnet50 模型,完全遵循这个 Tensorflow 官方页面:https://github.com/tensorflow/models/tree/master/official/vision/image_classification#imagenet-preparation 但是,我不知道如何准备 imagenet2012 训练和验证数据集,以便我可以像这样开始训练:

python3 classifier_trainer.py \
  --mode=train_and_eval \
  --model_type=resnet \
  --dataset=imagenet \
  --model_dir=$MODEL_DIR \
  --data_dir=$DATA_DIR ??? \ # ----------> HOW TO CONFIG THIS DIR IF I HAVE DOWNLOADED THE DATA??
  --config_file=configs/examples/resnet/imagenet/gpu.yaml \
  --params_override='runtime.num_gpus=$NUM_GPUS'

具体来说,我已将数据集下载为两个 tar 文件:ILSVRC2012_img_train.tar,ILSVRC2012_img_val.tar\myPath 目录,按照说明:https://github.com/tensorflow/datasets/blob/master/docs/catalog/imagenet2012.md#imagenet2012 谁能告诉我准备数据集和设置配置的确切步骤(通过命令行参数或在 configs/examples/resnet/imagenet/gpu.yaml 中设置)。

PS1,我注意到训练脚本可以使用两种类型的数据集:1)using TFDS 2)using TFRecords。我已经使用page 底部的 shell 脚本创建了 TFRecords 数据集,但仍然不知道如何设置配置。 TFDS似乎是TF推荐的,但只要我能成功运行培训,我就可以接受TFRecords格式。目前,我已经有以下形式的训练和验证 TFRecords 文件:

$DATA_DIR/train/train-00000-of-01024
$DATA_DIR/train/train-00001-of-01024
 ...
$DATA_DIR/train/train-01023-of-01024

$DATA_DIR/validation/validation-00000-of-00128
SDATA_DIR/validation/validation-00001-of-00128
 ...
$DATA_DIR/validation/validation-00127-of-00128

PS2:希望 TF 社区可以为像我这样的初学者提供一个清晰的逐步准备 imagenet 数据集的指南。将不胜感激!

【问题讨论】:

【参考方案1】:

你能得到for的输出吗:

python imagenet_to_gcs.py \
  --raw_data_dir=$IMAGENET_HOME \
  --local_scratch_dir=$IMAGENET_HOME/tf_records \
  --nogcs_upload

以下格式?

$DATA_DIR/train-00000-of-01024
$DATA_DIR/train-00001-of-01024
 ...
$DATA_DIR/train-01023-of-01024

$DATA_DIR/validation-00000-of-00128
SDATA_DIR/validation-00001-of-00128
 ...
$DATA_DIR/validation-00127-of-00128

我已经阅读了很多文章来执行您希望完成的任务,并且他们遵循了与您类似的步骤,但我找不到让您陷入困境的原因。如果您可以提供任何其他信息,例如您遇到的错误或其他信息,也许我可以更好地理解这个问题?

【讨论】:

谢谢!是的,我有您的答案中显示的训练数据文件和验证数据文件。但是,它们位于两个不同的文件夹下。我可以将所有train-xxx--of--xxxvalidation--xxx--xxx 移动到同一个文件夹/$DATA_DIR。问题是我不知道如何配置培训。我想我应该指定--data_dir=$DATA_DIR,对吧?我需要更改https://github.com/tensorflow/models/blob/master/official/vision/image_classification/configs/examples/resnet/imagenet/gpu.yaml 中的任何内容还是只使用默认配置。 是的,移动 DATA_DIR 下的 train 和 validation 文件夹,然后将其设置为 --data_dir 的路径。您可以使用 yaml 文件的默认设置。它应该可以工作,因为它指定了基本的训练配置。 我遇到了问题中提出的相同问题,这个答案对于找到最终解决方案很有用。现在,代码重构正在进行中,所以 classifier_trainer.py 不再被使用,我让我的实验运行使用:python3 train.py --experiment=resnet_imagenet --config_file=imagenet_resnet50_gpu_custom.yaml --mode=train_and_eval --model_dir=$MODEL_DIR --params_override='runtime.num_gpus=1'https://github.com/tensorflow/models/tree/master/official/vision/beta 存储库中可用。

以上是关于如何准备 imagenet 数据集以运行 resnet50(来自官方 Tensorflow 模型花园)培训的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 vgg16 为 ImageNet 准备和拆分数据集 [关闭]

)-ImageNet数据集的准备

Imagenet ILSVRC2014 验证基本事实到同义词集标签翻译不准确

如何使用外键连接两个数据集以创建新数据集?

如何拆分自己的数据集以在 Tensorflow CNN 中进行训练和验证

过滤数据集以仅获取特定类的图像