如何准备 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--xxx
和validation--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 ILSVRC2014 验证基本事实到同义词集标签翻译不准确