You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

README_CN.md 5.9 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. # 目录
  2. <!-- TOC -->
  3. - [目录](#目录)
  4. - [NASNet概述](#NASNet概述)
  5. - [模型架构](#模型架构)
  6. - [数据集](#数据集)
  7. - [环境要求](#环境要求)
  8. - [脚本说明](#脚本说明)
  9. - [脚本和样例代码](#脚本和样例代码)
  10. - [脚本参数](#脚本参数)
  11. - [训练过程](#训练过程)
  12. - [评估过程](#评估过程)
  13. - [模型描述](#模型描述)
  14. - [性能](#性能)
  15. - [训练性能](#训练性能)
  16. - [评估性能](#评估性能)
  17. - [ModelZoo主页](#modelzoo主页)
  18. <!-- /TOC -->
  19. # NASNet概述
  20. [论文](https://arxiv.org/abs/1707.07012): Barret Zoph, Vijay Vasudevan, Jonathon Shlens, Quoc V. Le. Learning Transferable Architectures for Scalable Image Recognition. 2017.
  21. # 模型架构
  22. NASNet总体网络架构如下:
  23. [链接](https://arxiv.org/abs/1707.07012)
  24. # 数据集
  25. 使用的数据集:[imagenet](http://www.image-net.org/)
  26. - 数据集大小:125G,共1000个类、1.2万张彩色图像
  27. - 训练集:120G,共1.2万张图像
  28. - 测试集:5G,共5万张图像
  29. - 数据格式:RGB
  30. * 注:数据在src/dataset.py中处理。
  31. # 环境要求
  32. - 硬件:GPU
  33. - 使用GPU处理器来搭建硬件环境。
  34. - 框架
  35. - [MindSpore](https://www.mindspore.cn/install)
  36. - 如需查看详情,请参见如下资源:
  37. - [MindSpore教程](https://www.mindspore.cn/tutorial/training/en/master/index.html)
  38. - [MindSpore Python API](https://www.mindspore.cn/doc/api_python/en/master/index.html)
  39. # 脚本说明
  40. ## 脚本及样例代码
  41. ```python
  42. .
  43. └─nasnet
  44. ├─README.md
  45. ├─README_CN.md
  46. ├─scripts
  47. ├─run_standalone_train_for_gpu.sh # 使用GPU平台启动单机训练(单卡)
  48. ├─run_distribute_train_for_gpu.sh # 使用GPU平台启动分布式训练(8卡)
  49. └─run_eval_for_gpu.sh # 使用GPU平台进行启动评估
  50. ├─src
  51. ├─config.py # 参数配置
  52. ├─dataset.py # 数据预处理
  53. ├─loss.py # 自定义交叉熵损失函数
  54. ├─lr_generator.py # 学习率生成器
  55. ├─nasnet_a_mobile.py # 网络定义
  56. ├─eval.py # 评估网络
  57. ├─export.py # 转换检查点
  58. └─train.py # 训练网络
  59. ```
  60. ## 脚本参数
  61. 在config.py中可以同时配置训练参数和评估参数。
  62. ```python
  63. 'random_seed':1, # 固定随机种子
  64. 'rank':0, # 分布式训练进程序号
  65. 'group_size':1, # 分布式训练分组大小
  66. 'work_nums':8, # 数据读取人员数
  67. 'epoch_size':500, # 总周期数
  68. 'keep_checkpoint_max':100, # 保存检查点最大数
  69. 'ckpt_path':'./checkpoint/', # 检查点保存路径
  70. 'is_save_on_master':1 # 在rank0上保存检查点,分布式参数
  71. 'batch_size':32, # 输入批次大小
  72. 'num_classes':1000, # 数据集类数
  73. 'label_smooth_factor':0.1, # 标签平滑因子
  74. 'aux_factor':0.4, # 副对数损失系数
  75. 'lr_init':0.04, # 启动学习率
  76. 'lr_decay_rate':0.97, # 学习率衰减率
  77. 'num_epoch_per_decay':2.4, # 衰减周期数
  78. 'weight_decay':0.00004, # 重量衰减
  79. 'momentum':0.9, # 动量
  80. 'opt_eps':1.0, # epsilon参数
  81. 'rmsprop_decay':0.9, # rmsprop衰减
  82. 'loss_scale':1, # 损失规模
  83. ```
  84. ## 训练过程
  85. ### 用法
  86. ```bash
  87. # 分布式训练示例(8卡)
  88. sh run_distribute_train_for_gpu.sh DATA_DIR
  89. # 单机训练
  90. sh run_standalone_train_for_gpu.sh DEVICE_ID DATA_DIR
  91. ```
  92. ### 运行
  93. ```bash
  94. # GPU分布式训练示例(8卡)
  95. sh scripts/run_distribute_train_for_gpu.sh /dataset/train
  96. # GPU单机训练示例
  97. sh scripts/run_standalone_train_for_gpu.sh 0 /dataset/train
  98. ```
  99. ### 结果
  100. 可以在日志中找到检查点文件及结果。
  101. ## 评估过程
  102. ### 用法
  103. ```bash
  104. # 评估
  105. sh run_eval_for_gpu.sh DEVICE_ID DATA_DIR PATH_CHECKPOINT
  106. ```
  107. ### 启动
  108. ```bash
  109. # 检查点评估
  110. sh scripts/run_eval_for_gpu.sh 0 /dataset/val ./checkpoint/nasnet-a-mobile-rank0-248_10009.ckpt
  111. ```
  112. > 训练过程中可以生成检查点。
  113. ### 结果
  114. 评估结果保存在脚本路径下。路径下的日志中,可以找到如下结果:
  115. acc=73.5%(TOP1)
  116. # 模型描述
  117. ## 性能
  118. ### 训练性能
  119. | 参数 | NASNet |
  120. | -------------------------- | ------------------------- |
  121. | 资源 | NV SMX2 V100-32G |
  122. | 上传日期 | 2020-09-24 |
  123. | MindSpore版本 | 1.0.0 |
  124. | 数据集 | ImageNet |
  125. | 训练参数 | src/config.py |
  126. | 优化器 | Momentum |
  127. | 损失函数 | SoftmaxCrossEntropyWithLogits |
  128. | 损失值 | 1.8965 |
  129. | 总时间 | 8卡运行约144个小时 |
  130. | 检查点文件大小 | 89 M(.ckpt文件) |
  131. ### 评估性能
  132. | 参数 | |
  133. | -------------------------- | ------------------------- |
  134. | 资源 | NV SMX2 V100-32G |
  135. | 上传日期 | 2020-09-24 |
  136. | MindSpore版本 | 1.0.0 |
  137. | 数据及 | ImageNet, 1.2W |
  138. | batch_size | 32 |
  139. | 输出 | 概率 |
  140. | 精确度 | acc=73.5%(TOP1) |
  141. # ModelZoo主页
  142. 请浏览官网[主页](https://gitee.com/mindspore/mindspore/tree/master/model_zoo)。