本训练示例以imagenet2012数据集为例,从imagenet官方网站https://www.image-net.org/获取数据集。将准备好的数据集压缩包上传到训练环境上(请自行检查数据集是否完整)。
├──imagenet2012 │ ├──ILSVRC2012_img_train.tar │ ├──ILSVRC2012_img_val.tar │ ├──ILSVRC2012_bbox_train_v2.tar.gz
vim prepare_dataset.sh
#!/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.gz -C bbox/
├──imagenet2012 │ ├──ILSVRC2012_img_train.tar │ ├──ILSVRC2012_img_val.tar │ ├──ILSVRC2012_bbox_train_v2.tar.gz │ ├──bbox/ │ ├──train/ │ ├──val/
git clone https://github.com/tensorflow/models.git
cd models-master/research/slim/datasets/
python preprocess_imagenet_validation_data.py /data/dataset/imagenet2012/val/ imagenet_2012_validation_synset_labels.txt # 预处理验证数据
python process_bounding_boxes.py /data/dataset/imagenet2012/bbox/ imagenet_lsvrc_2015_synsets.txt | sort > imagenet_2012_bounding_boxes.csv
python build_imagenet_data.py --output_directory=/data/dataset/imagenet2012/imagenet_tf --train_directory=/data/dataset/imagenet2012/train --validation_directory=/data/dataset/imagenet2012/val
├─ imagenet2012 ├─——imagenet_tf │ ├──train-00000-of-01024 │ ├──train-00001-of-01024 │ ├──train-00002-of-01024 │ ... │ ├──validation-00000-of-00128 │ ├──validation-00001-of-00128 │ ├──validation-00002-of-00128 │ ...
Resnet50为一个深度残差网络,可用于对CIFAR-10和ImageNet的1000类数据集进行分类。
从链接获取Resnet原始网络脚本。
├── r1 // 原始模型目录 │ ├── resnet // resnet主目录 │ ├── __init__.py │ ├── imagenet_main.py // 基于Imagenet数据集训练网络模型 │ ├── imagenet_preprocessing.py // Imagenet数据集数据预处理模块 │ ├── resnet_model.py // resnet模型文件 │ ├── resnet_run_loop.py // 数据输入处理与运行循环(训练、验证、测试) │ ├── README.md // 项目介绍文件 │ ├── utils │ ├── export.py // 数据接收函数,定义了导出的模型将会对何种格式的参数予以响应 ├── utils │ ├── flags │ ├── core.py // 包含了参数定义的公共接口 │ ├── logs │ ├── hooks_helper.py //自定义创建模型在测试/训练时的工具,比如每秒钟计算步数的功能、每N步或捕获CPU/GPU分析信息的功能等 │ ├── logger.py // 日志工具 │ ├── misc │ ├── distribution_utils.py // 进行分布式运行模型的辅助函数 │ ├── model_helpers.py // 定义了一些能被模型调用的函数,比如控制模型是否停止