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 11 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293
  1. # 目录
  2. <!-- TOC -->
  3. - [目录](#目录)
  4. - [InceptionV3描述](#inceptionv3描述)
  5. - [模型架构](#模型架构)
  6. - [数据集](#数据集)
  7. - [特性](#特性)
  8. - [混合精度(Ascend)](#混合精度ascend)
  9. - [环境要求](#环境要求)
  10. - [脚本说明](#脚本说明)
  11. - [脚本和样例代码](#脚本和样例代码)
  12. - [脚本参数](#脚本参数)
  13. - [训练过程](#训练过程)
  14. - [用法](#用法)
  15. - [启动](#启动)
  16. - [结果](#结果)
  17. - [评估过程](#评估过程)
  18. - [用法](#用法-1)
  19. - [启动](#启动-1)
  20. - [结果](#结果-1)
  21. - [模型描述](#模型描述)
  22. - [性能](#性能)
  23. - [训练性能](#训练性能)
  24. - [推理性能](#推理性能)
  25. - [随机情况说明](#随机情况说明)
  26. - [ModelZoo主页](#modelzoo主页)
  27. <!-- /TOC -->
  28. # InceptionV3描述
  29. Google的InceptionV3是深度学习卷积架构系列的第3个版本。InceptionV3主要通过修改以前的Inception架构来减少计算资源的消耗。这个想法是在2015年出版的Rethinking the Inception Architecture for Computer Vision, published in 2015一文中提出的。
  30. [论文](https://arxiv.org/pdf/1512.00567.pdf): Min Sun, Ali Farhadi, Steve Seitz.Ranking Domain-Specific Highlights by Analyzing Edited Videos[J].2014.
  31. # 模型架构
  32. InceptionV3的总体网络架构如下:
  33. [链接](https://arxiv.org/pdf/1512.00567.pdf)
  34. # 数据集
  35. 所用数据集可参照论文。
  36. - 数据集大小:125G,共1000个类、125万张彩色图像
  37. - 训练集:120G, 120万张图像
  38. - 测试集:5G,共5万张图像
  39. - 数据格式:RGB
  40. - 注:数据将在src/dataset.py中处理。
  41. 使用的数据集:[CIFAR-10](<http://www.cs.toronto.edu/~kriz/cifar.html>)
  42. - 数据集大小:175M,共10个类、6万张32*32彩色图像
  43. - 训练集:146M,共5万张图像
  44. - 测试集:29M,共1万张图像
  45. - 数据格式:二进制文件
  46. - 注:数据将在src/dataset.py中处理。
  47. # 特性
  48. ## 混合精度(Ascend)
  49. 采用[混合精度](https://www.mindspore.cn/tutorial/training/zh-CN/master/advanced_use/enable_mixed_precision.html)的训练方法使用支持单精度和半精度数据来提高深度学习神经网络的训练速度,同时保持单精度训练所能达到的网络精度。混合精度训练提高计算速度、减少内存使用的同时,支持在特定硬件上训练更大的模型或实现更大批次的训练。
  50. 以FP16算子为例,如果输入数据类型为FP32,MindSpore后台会自动降低精度来处理数据。用户可打开INFO日志,搜索“reduce precision”查看精度降低的算子。
  51. # 环境要求
  52. - 硬件(Ascend)
  53. - 使用Ascend来搭建硬件环境。
  54. - 框架
  55. - [MindSpore](https://www.mindspore.cn/install/en)
  56. - 如需查看详情,请参见如下资源:
  57. - [MindSpore教程](https://www.mindspore.cn/tutorial/training/zh-CN/master/index.html)
  58. - [MindSpore Python API](https://www.mindspore.cn/doc/api_python/zh-CN/master/index.html)
  59. # 脚本说明
  60. ## 脚本和样例代码
  61. ```shell
  62. .
  63. └─Inception-v3
  64. ├─README.md
  65. ├─scripts
  66. ├─run_standalone_train_cpu.sh # 启动CPU训练
  67. ├─run_standalone_train_gpu.sh # 启动GPU单机训练(单卡)
  68. ├─run_distribute_train_gpu.sh # 启动GPU分布式训练(8卡)
  69. ├─run_standalone_train.sh # 启动Ascend单机训练(单卡)
  70. ├─run_distribute_train.sh # 启动Ascend分布式训练(8卡)
  71. ├─run_eval_cpu.sh # 启动CPU评估
  72. ├─run_eval_gpu.sh # 启动GPU评估
  73. └─run_eval.sh # 启动Ascend评估
  74. ├─src
  75. ├─config.py # 参数配置
  76. ├─dataset.py # 数据预处理
  77. ├─inception_v3.py # 网络定义
  78. ├─loss.py # 自定义交叉熵损失函数
  79. ├─lr_generator.py # 学习率生成器
  80. ├─eval.py # 评估网络
  81. ├─export.py # 转换检查点
  82. └─train.py # 训练网络
  83. ```
  84. ## 脚本参数
  85. ```python
  86. train.py和config.py中主要参数如下:
  87. 'random_seed' # 修复随机种子
  88. 'rank' # 分布式的本地序号
  89. 'group_size' # 分布式进程总数
  90. 'work_nums' # 读取数据的worker个数
  91. 'decay_method' # 学习率调度器模式
  92. "loss_scale" # 损失等级
  93. 'batch_size' # 输入张量的批次大小
  94. 'epoch_size' # 总轮次数
  95. 'num_classes' # 数据集类数
  96. 'ds_type' # 数据集类型,如:imagenet, cifar10
  97. 'ds_sink_mode' # 使能数据下沉
  98. 'smooth_factor' # 标签平滑因子
  99. 'aux_factor' # aux logit的损耗因子
  100. 'lr_init' # 初始学习率
  101. 'lr_max' # 最大学习率
  102. 'lr_end' # 最小学习率
  103. 'warmup_epochs' # 热身轮次数
  104. 'weight_decay' # 权重衰减
  105. 'momentum' # 动量
  106. 'opt_eps' # epsilon
  107. 'keep_checkpoint_max' # 保存检查点的最大数量
  108. 'ckpt_path' # 保存检查点路径
  109. 'is_save_on_master' # 保存Rank0的检查点,分布式参数
  110. 'dropout_keep_prob' # 保持率,介于0和1之间,例如keep_prob = 0.9,表示放弃10%的输入单元
  111. 'has_bias' # 层是否使用偏置向量
  112. 'amp_level' # `mindspore.amp.build_train_network`中参数`level`的选项,level表示混合
  113. # 精准训练支持[O0, O2, O3]
  114. ```
  115. ## 训练过程
  116. ### 用法
  117. 使用python或shell脚本开始训练。shell脚本的用法如下:
  118. - Ascend:
  119. ```shell
  120. # 分布式训练示例(8卡)
  121. sh scripts/run_distribute_train.sh RANK_TABLE_FILE DATA_PATH
  122. # 单机训练
  123. sh scripts/run_standalone_train.sh DEVICE_ID DATA_PATH
  124. ```
  125. > 注:RANK_TABLE_FILE可参考[链接](https://www.mindspore.cn/tutorial/training/zh-CN/master/advanced_use/distributed_training_ascend.html)。device_ip可以通过[链接](https://gitee.com/mindspore/mindspore/tree/master/model_zoo/utils/hccl_tools)获取
  126. > 这是关于device_num和处理器总数的处理器核绑定操作。如不需要,请删除scripts/run_distribute_train.sh中的taskset操作。
  127. ### 启动
  128. ``` launch
  129. # 训练示例
  130. python:
  131. Ascend: python train.py --dataset_path /dataset/train --platform Ascend
  132. CPU: python train.py --dataset_path DATA_PATH --platform CPU
  133. shell:
  134. Ascend:
  135. # 分布式训练示例(8卡)
  136. sh scripts/run_distribute_train.sh RANK_TABLE_FILE DATA_PATH
  137. # 单机训练
  138. sh scripts/run_standalone_train.sh DEVICE_ID DATA_PATH
  139. CPU:
  140. sh script/run_standalone_train_cpu.sh DATA_PATH
  141. ```
  142. ### 结果
  143. 训练结果保存在示例路径。检查点默认保存在`checkpoint`,训练日志会重定向到`./log.txt`,如下:
  144. #### Ascend
  145. ```log
  146. epoch:0 step:1251, loss is 5.7787247
  147. Epoch time:360760.985, per step time:288.378
  148. epoch:1 step:1251, loss is 4.392868
  149. Epoch time:160917.911, per step time:128.631
  150. ```
  151. #### CPU
  152. ```bash
  153. epoch: 1 step: 390, loss is 2.7072601
  154. epoch time: 6334572.124 ms, per step time: 16242.493 ms
  155. epoch: 2 step: 390, loss is 2.5908582
  156. epoch time: 6217897.644 ms, per step time: 15943.327 ms
  157. epoch: 3 step: 390, loss is 2.5612416
  158. epoch time: 6358482.104 ms, per step time: 16303.800 ms
  159. ...
  160. ```
  161. ## 评估过程
  162. ### 用法
  163. 使用python或shell脚本开始训练。shell脚本的用法如下:
  164. - Ascend:
  165. ```shell
  166. sh scripts/run_eval.sh DEVICE_ID DATA_DIR PATH_CHECKPOINT
  167. ```
  168. - CPU:
  169. ```python
  170. sh scripts/run_eval_cpu.sh DATA_PATH PATH_CHECKPOINT
  171. ```
  172. ### 启动
  173. ``` launch
  174. # 评估示例
  175. python:
  176. Ascend: python eval.py --dataset_path DATA_DIR --checkpoint PATH_CHECKPOINT --platform Ascend
  177. CPU: python eval.py --dataset_path DATA_PATH --checkpoint PATH_CHECKPOINT --platform CPU
  178. shell:
  179. Ascend: sh scripts/run_eval.sh DEVICE_ID DATA_DIR PATH_CHECKPOINT
  180. CPU: sh scripts/run_eval_cpu.sh DATA_PATH PATH_CHECKPOINT
  181. ```
  182. > 训练过程中可以生成检查点。
  183. ### 结果
  184. 推理结果保存在示例路径,可以在`eval.log`中找到如下结果。
  185. ```log
  186. metric:{'Loss':1.778, 'Top1-Acc':0.788, 'Top5-Acc':0.942}
  187. ```
  188. # 模型描述
  189. ## 性能
  190. ### 训练性能
  191. | 参数 | Ascend |
  192. | -------------------------- | ---------------------------------------------- |
  193. | 模型版本 | InceptionV3 |
  194. | 资源 | Ascend 910, CPU:2.60GHz,192核,内存:755G |
  195. | 上传日期 | 2020-08-21 |
  196. | MindSpore版本 | 0.6.0-beta |
  197. | 数据集 | 120万张图像 |
  198. | Batch_size | 128 |
  199. | 训练参数 | src/config.py |
  200. | 优化器 | RMSProp |
  201. | 损失函数 | Softmax交叉熵 |
  202. | 输出 | 概率 |
  203. | 损失 | 1.98 |
  204. | 总时长(8卡) | 11小时 |
  205. | 参数(M) | 103M |
  206. | 微调检查点 | 313M |
  207. | 训练速度 | 单卡:1050img/s;8卡:8000 img/s |
  208. | 脚本 | [inceptionv3脚本](https://gitee.com/mindspore/mindspore/tree/master/model_zoo/official/cv/inceptionv3) |
  209. #### 推理性能
  210. | 参数 | Ascend |
  211. | ------------------- | --------------------------- |
  212. | 模型版本 | InceptionV3 |
  213. | 资源 | Ascend 910,CPU: 2.60GHz,192核;内存:755G |
  214. | 上传日期 | 2020-08-22 |
  215. | MindSpore 版本 | 0.6.0-beta |
  216. | 数据集 | 5万张图像 |
  217. | Batch_size | 128 |
  218. | 输出 | 概率 |
  219. | 准确率 | ACC1[78.8%] ACC5[94.2%] |
  220. | 总时长 | 2分钟 |
  221. | 推理模型 | 92M (.onnx文件) |
  222. # 随机情况说明
  223. 在dataset.py中,我们设置了“create_dataset”函数内的种子,同时还使用了train.py中的随机种子。
  224. # ModelZoo主页
  225. 请浏览官网[主页](https://gitee.com/mindspore/mindspore/tree/master/model_zoo)。