forked from mindspore-Ecosystem/mindspore
fix url spell error and delete unnecessary hyperlinks
This commit is contained in:
parent
06627661f4
commit
e44ad821d3
|
@ -11,18 +11,18 @@
|
|||
- [环境要求](#环境要求)
|
||||
- [快速入门](#快速入门)
|
||||
- [脚本说明](#脚本说明)
|
||||
- [脚本及样例代码](#脚本及样例代码)
|
||||
- [脚本参数](#脚本参数)
|
||||
- [训练过程](#训练过程)
|
||||
- [脚本及样例代码](#脚本及样例代码)
|
||||
- [脚本参数](#脚本参数)
|
||||
- [训练过程](#训练过程)
|
||||
- [训练](#训练)
|
||||
- [训练结果](#训练结果)
|
||||
- [评估过程](#评估过程)
|
||||
- [评估过程](#评估过程)
|
||||
- [评估](#评估)
|
||||
- [模型描述](#模型描述)
|
||||
- [性能](#性能)
|
||||
- [性能](#性能)
|
||||
- [训练性能](#训练性能)
|
||||
- [评估性能](#评估性能)
|
||||
- [用法](#用法)
|
||||
- [用法](#用法)
|
||||
- [推理](#推理)
|
||||
- [在预训练模型上继续训练](#在预训练模型上继续训练)
|
||||
- [ModelZoo主页](#modelzoo主页)
|
||||
|
@ -30,6 +30,7 @@
|
|||
<!-- /TOC -->
|
||||
|
||||
# CNN+CTC描述
|
||||
|
||||
本文描述了对场景文本识别(STR)的三个主要贡献。
|
||||
首先检查训练和评估数据集不一致的内容,以及导致的性能差距。
|
||||
再引入一个统一的四阶段STR框架,目前大多数STR模型都能够适应这个框架。
|
||||
|
@ -40,6 +41,7 @@
|
|||
[论文](https://arxiv.org/abs/1904.01906): J. Baek, G. Kim, J. Lee, S. Park, D. Han, S. Yun, S. J. Oh, and H. Lee, “What is wrong with scene text recognition model comparisons? dataset and model analysis,” ArXiv, vol. abs/1904.01906, 2019.
|
||||
|
||||
# 模型架构
|
||||
|
||||
示例:在MindSpore上使用MJSynth和SynthText数据集训练CNN+CTC模型进行文本识别。
|
||||
|
||||
# 数据集
|
||||
|
@ -47,14 +49,18 @@
|
|||
[MJSynth](https://www.robots.ox.ac.uk/~vgg/data/text/)和[SynthText](https://github.com/ankush-me/SynthText)数据集用于模型训练。[The IIIT 5K-word dataset](https://cvit.iiit.ac.in/research/projects/cvit-projects/the-iiit-5k-word-dataset)数据集用于评估。
|
||||
|
||||
- 步骤1:
|
||||
|
||||
所有数据集均经过预处理,以.lmdb格式存储,点击[**此处**](https://drive.google.com/drive/folders/192UfE9agQUMNq6AgU3_E05_FcPZK4hyt)可下载。
|
||||
|
||||
- 步骤2:
|
||||
|
||||
解压下载的文件,重命名MJSynth数据集为MJ,SynthText数据集为ST,IIIT数据集为IIIT。
|
||||
|
||||
- 步骤3:
|
||||
|
||||
将上述三个数据集移至`cnctc_data`文件夹中,结构如下:
|
||||
```
|
||||
|
||||
```python
|
||||
|--- CNNCTC/
|
||||
|--- cnnctc_data/
|
||||
|--- ST/
|
||||
|
@ -66,13 +72,15 @@
|
|||
|--- IIIT/
|
||||
data.mdb
|
||||
lock.mdb
|
||||
|
||||
|
||||
......
|
||||
```
|
||||
|
||||
- 步骤4:
|
||||
|
||||
预处理数据集:
|
||||
```
|
||||
|
||||
```shell
|
||||
python src/preprocess_dataset.py
|
||||
```
|
||||
|
||||
|
@ -87,22 +95,24 @@ python src/preprocess_dataset.py
|
|||
|
||||
# 环境要求
|
||||
|
||||
- 硬件(Ascend)
|
||||
|
||||
- 准备Ascend或GPU处理器搭建硬件环境。如需试用昇腾处理器,请发送[申请表](https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/file/other/Ascend%20Model%20Zoo%E4%BD%93%E9%AA%8C%E8%B5%84%E6%BA%90%E7%94%B3%E8%AF%B7%E8%A1%A8.docx)至ascend@huawei.com,审核通过即可获得资源。
|
||||
- 硬件(Ascend)
|
||||
|
||||
- 准备Ascend或GPU处理器搭建硬件环境。如需试用昇腾处理器,请发送[申请表](https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/file/other/Ascend%20Model%20Zoo%E4%BD%93%E9%AA%8C%E8%B5%84%E6%BA%90%E7%94%B3%E8%AF%B7%E8%A1%A8.docx)至ascend@huawei.com,审核通过即可获得资源。
|
||||
|
||||
- 框架
|
||||
|
||||
|
||||
- [MindSpore](https://www.mindspore.cn/install)
|
||||
|
||||
- 如需查看详情,请参见如下资源:
|
||||
- [MindSpore教程](https://www.mindspore.cn/tutorial/zh-CN/master/index.html)
|
||||
|
||||
- [MindSpore API](https://www.mindspore.cn/api/zh-CN/master/index.html)
|
||||
- [MindSpore Python API](https://www.mindspore.cn/doc/api_python/zh-CN/master/index.html)
|
||||
|
||||
# 快速入门
|
||||
|
||||
- 安装依赖:
|
||||
|
||||
```
|
||||
```python
|
||||
pip install lmdb
|
||||
pip install Pillow
|
||||
pip install tqdm
|
||||
|
@ -111,19 +121,19 @@ pip install six
|
|||
|
||||
- 单机训练:
|
||||
|
||||
```
|
||||
```shell
|
||||
bash scripts/run_standalone_train_ascend.sh $PRETRAINED_CKPT
|
||||
```
|
||||
|
||||
- 分布式训练:
|
||||
|
||||
```
|
||||
```shell
|
||||
bash scripts/run_distribute_train_ascend.sh $RANK_TABLE_FILE $PRETRAINED_CKPT
|
||||
```
|
||||
|
||||
- 评估:
|
||||
|
||||
```
|
||||
```shell
|
||||
bash scripts/run_eval_ascend.sh $TRAINED_CKPT
|
||||
```
|
||||
|
||||
|
@ -132,7 +142,8 @@ bash scripts/run_eval_ascend.sh $TRAINED_CKPT
|
|||
## 脚本及样例代码
|
||||
|
||||
完整代码结构如下:
|
||||
```
|
||||
|
||||
```python
|
||||
|--- CNNCTC/
|
||||
|---README.md // CNN+CTC相关描述
|
||||
|---train.py // 训练脚本
|
||||
|
@ -154,37 +165,40 @@ bash scripts/run_eval_ascend.sh $TRAINED_CKPT
|
|||
```
|
||||
|
||||
## 脚本参数
|
||||
|
||||
在`config.py`中可以同时配置训练参数和评估参数。
|
||||
|
||||
参数:
|
||||
* `--CHARACTER`:字符标签。
|
||||
* `--NUM_CLASS`:类别数,包含所有字符标签和CTCLoss的<blank>标签。
|
||||
* `--HIDDEN_SIZE`:模型隐藏大小。
|
||||
* `--FINAL_FEATURE_WIDTH`:特性的数量。
|
||||
* `--IMG_H`:输入图像高度。
|
||||
* `--IMG_W`:输入图像宽度。
|
||||
* `--TRAIN_DATASET_PATH`:训练数据集的路径。
|
||||
* `--TRAIN_DATASET_INDEX_PATH`:决定顺序的训练数据集索引文件的路径。
|
||||
* `--TRAIN_BATCH_SIZE`:训练批次大小。在批次大小和索引文件中,必须确保输入数据是固定的形状。
|
||||
* `--TRAIN_DATASET_SIZE`:训练数据集大小。
|
||||
* `--TEST_DATASET_PATH`:测试数据集的路径。
|
||||
* `--TEST_BATCH_SIZE`:测试批次大小。
|
||||
* `--TRAIN_EPOCHS`:总训练轮次。
|
||||
* `--CKPT_PATH`:模型检查点文件路径,可用于恢复训练和评估。
|
||||
* `--SAVE_PATH`:模型检查点文件保存路径。
|
||||
* `--LR`:单机训练学习率。
|
||||
* `--LR_PARA`:分布式训练学习率。
|
||||
* `--Momentum`:动量。
|
||||
* `--LOSS_SCALE`:损失放大,避免梯度下溢。
|
||||
* `--SAVE_CKPT_PER_N_STEP`:每N步保存模型检查点文件。
|
||||
* `--KEEP_CKPT_MAX_NUM`:模型检查点文件保存数量上限。
|
||||
|
||||
- `--CHARACTER`:字符标签。
|
||||
- `--NUM_CLASS`:类别数,包含所有字符标签和CTCLoss的<blank>标签。
|
||||
- `--HIDDEN_SIZE`:模型隐藏大小。
|
||||
- `--FINAL_FEATURE_WIDTH`:特性的数量。
|
||||
- `--IMG_H`:输入图像高度。
|
||||
- `--IMG_W`:输入图像宽度。
|
||||
- `--TRAIN_DATASET_PATH`:训练数据集的路径。
|
||||
- `--TRAIN_DATASET_INDEX_PATH`:决定顺序的训练数据集索引文件的路径。
|
||||
- `--TRAIN_BATCH_SIZE`:训练批次大小。在批次大小和索引文件中,必须确保输入数据是固定的形状。
|
||||
- `--TRAIN_DATASET_SIZE`:训练数据集大小。
|
||||
- `--TEST_DATASET_PATH`:测试数据集的路径。
|
||||
- `--TEST_BATCH_SIZE`:测试批次大小。
|
||||
- `--TRAIN_EPOCHS`:总训练轮次。
|
||||
- `--CKPT_PATH`:模型检查点文件路径,可用于恢复训练和评估。
|
||||
- `--SAVE_PATH`:模型检查点文件保存路径。
|
||||
- `--LR`:单机训练学习率。
|
||||
- `--LR_PARA`:分布式训练学习率。
|
||||
- `--Momentum`:动量。
|
||||
- `--LOSS_SCALE`:损失放大,避免梯度下溢。
|
||||
- `--SAVE_CKPT_PER_N_STEP`:每N步保存模型检查点文件。
|
||||
- `--KEEP_CKPT_MAX_NUM`:模型检查点文件保存数量上限。
|
||||
|
||||
## 训练过程
|
||||
|
||||
### 训练
|
||||
|
||||
- 单机训练:
|
||||
```
|
||||
|
||||
```shell
|
||||
bash scripts/run_standalone_train_ascend.sh $PRETRAINED_CKPT
|
||||
```
|
||||
|
||||
|
@ -193,22 +207,22 @@ bash scripts/run_standalone_train_ascend.sh $PRETRAINED_CKPT
|
|||
`$PRETRAINED_CKPT`为模型检查点的路径,**可选**。如果值为none,模型将从头开始训练。
|
||||
|
||||
- 分布式训练:
|
||||
```
|
||||
|
||||
```shell
|
||||
bash scripts/run_distribute_train_ascend.sh $RANK_TABLE_FILE $PRETRAINED_CKPT
|
||||
```
|
||||
|
||||
结果和检查点分别写入设备`i`的`./train_parallel_{i}`文件夹。
|
||||
日志可以在`./train_parallel_{i}/log_{i}.log`中找到,损失值记录在`./train_parallel_{i}/loss.log`中。
|
||||
结果和检查点分别写入设备`i`的`./train_parallel_{i}`文件夹。
|
||||
日志可以在`./train_parallel_{i}/log_{i}.log`中找到,损失值记录在`./train_parallel_{i}/loss.log`中。
|
||||
|
||||
在Ascend上运行分布式任务时需要`$RANK_TABLE_FILE`。
|
||||
在Ascend上运行分布式任务时需要`$RANK_TABLE_FILE`。
|
||||
`$PATH_TO_CHECKPOINT`为模型检查点的路径,**可选**。如果值为none,模型将从头开始训练。
|
||||
|
||||
### 训练结果
|
||||
|
||||
训练结果保存在示例路径中,文件夹名称以“train”或“train_parallel”开头。您可在此路径下的日志中找到检查点文件以及结果,如下所示。
|
||||
|
||||
|
||||
```
|
||||
```python
|
||||
# 分布式训练结果(8P)
|
||||
epoch: 1 step: 1 , loss is 76.25, average time per step is 0.335177839748392712
|
||||
epoch: 1 step: 2 , loss is 73.46875, average time per step is 0.36798572540283203
|
||||
|
@ -235,7 +249,7 @@ epoch: 1 step: 8698 , loss is 9.708542263610315, average time per step is 0.3184
|
|||
|
||||
- 评估:
|
||||
|
||||
```
|
||||
```shell
|
||||
bash scripts/run_eval_ascend.sh $TRAINED_CKPT
|
||||
```
|
||||
|
||||
|
@ -260,7 +274,7 @@ bash scripts/run_eval_ascend.sh $TRAINED_CKPT
|
|||
| 速度 | 1卡:300毫秒/步;8卡:310毫秒/步 |
|
||||
| 总时间 | 1卡:18小时;8卡:2.3小时 |
|
||||
| 参数(M) | 177 |
|
||||
| 脚本 | https://gitee.com/mindspore/mindspore/tree/master/model_zoo/office/cv/cnnctc |
|
||||
| 脚本 | <https://gitee.com/mindspore/mindspore/tree/master/model_zoo/official/cv/cnnctc> |
|
||||
|
||||
### 评估性能
|
||||
|
||||
|
@ -277,13 +291,14 @@ bash scripts/run_eval_ascend.sh $TRAINED_CKPT
|
|||
| 推理模型 | 675M(.ckpt文件) |
|
||||
|
||||
## 用法
|
||||
|
||||
### 推理
|
||||
|
||||
如果您需要在GPU、Ascend 910、Ascend 310等多个硬件平台上使用训练好的模型进行推理,请参考此[链接](https://www.mindspore.cn/tutory/zh-CN/master/advanced_use/network_migration.html)。以下为简单示例:
|
||||
|
||||
- Ascend处理器环境运行
|
||||
|
||||
```
|
||||
```python
|
||||
# 设置上下文
|
||||
context.set_context(mode=context.GRAPH_HOME, device_target=cfg.device_target)
|
||||
context.set_context(device_id=cfg.device_id)
|
||||
|
@ -314,7 +329,7 @@ bash scripts/run_eval_ascend.sh $TRAINED_CKPT
|
|||
|
||||
- Ascend处理器环境运行
|
||||
|
||||
```
|
||||
```python
|
||||
# 加载数据集
|
||||
dataset = create_dataset(cfg.data_path, 1)
|
||||
batch_num = dataset.get_dataset_size()
|
||||
|
@ -349,4 +364,5 @@ bash scripts/run_eval_ascend.sh $TRAINED_CKPT
|
|||
```
|
||||
|
||||
# ModelZoo主页
|
||||
|
||||
请浏览官网[主页](https://gitee.com/mindspore/mindspore/tree/master/model_zoo)。
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# 目录
|
||||
|
||||
<!-- TOC -->
|
||||
|
||||
- [目录](#目录)
|
||||
|
@ -6,25 +7,25 @@
|
|||
- [模型架构](#模型架构)
|
||||
- [数据集](#数据集)
|
||||
- [特性](#特性)
|
||||
- [混合精度](#混合精度)
|
||||
- [混合精度](#混合精度)
|
||||
- [环境要求](#环境要求)
|
||||
- [脚本说明](#脚本说明)
|
||||
- [脚本和样例代码](#脚本和样例代码)
|
||||
- [脚本参数](#脚本参数)
|
||||
- [训练过程](#训练过程)
|
||||
- [用法](#用法)
|
||||
- [启动](#启动)
|
||||
- [结果](#结果)
|
||||
- [评估过程](#评估过程)
|
||||
- [用法](#用法-1)
|
||||
- [启动](#启动-1)
|
||||
- [结果](#结果-1)
|
||||
- [脚本说明](#脚本说明)
|
||||
- [脚本和样例代码](#脚本和样例代码)
|
||||
- [脚本参数](#脚本参数)
|
||||
- [训练过程](#训练过程)
|
||||
- [用法](#用法)
|
||||
- [启动](#启动)
|
||||
- [结果](#结果)
|
||||
- [评估过程](#评估过程)
|
||||
- [用法](#用法-1)
|
||||
- [启动](#启动-1)
|
||||
- [结果](#结果-1)
|
||||
- [模型描述](#模型描述)
|
||||
- [性能](#性能)
|
||||
- [训练性能](#训练性能)
|
||||
- [评估性能](#评估性能)
|
||||
- [随机情况说明](#随机情况说明)
|
||||
- [ModelZoo主页](#modelzoo主页)
|
||||
- [性能](#性能)
|
||||
- [训练性能](#训练性能)
|
||||
- [评估性能](#评估性能)
|
||||
- [随机情况说明](#随机情况说明)
|
||||
- [ModelZoo主页](#modelzoo主页)
|
||||
|
||||
<!-- /TOC -->
|
||||
|
||||
|
@ -35,6 +36,7 @@ ResNet-50是一个50层的卷积神经网络,可以将ImageNet图像分成1000
|
|||
[论文](https://arxiv.org/abs/1512.03385): Kaiming He, Xiangyu Zhang, Shaoqing Ren, Jian Sun."Deep Residual Learning for Image Recognition.": He, Kaiming , et al. "Deep Residual Learning for Image Recognition." IEEE Conference on Computer Vision & Pattern Recognition IEEE Computer Society, 2016.
|
||||
|
||||
此为ResNet-50的量化分析网络。
|
||||
|
||||
## 模型架构
|
||||
|
||||
ResNet-50总体网络架构如下:
|
||||
|
@ -45,12 +47,12 @@ ResNet-50总体网络架构如下:
|
|||
|
||||
使用的数据集:[imagenet](http://www.image-net.org/)
|
||||
|
||||
-数据集大小:125G,共1000个类、1.2万张彩色图像
|
||||
- 训练集:120G,共1.2万张图像
|
||||
- 测试集:5G,共5万张图像
|
||||
-数据格式:RGB
|
||||
* 注:数据在src/dataset.py中处理。
|
||||
- 数据集大小:125G,共1000个类、1.2万张彩色图像
|
||||
- 训练集:120G,共1.2万张图像
|
||||
- 测试集:5G,共5万张图像
|
||||
|
||||
- 数据格式:RGB
|
||||
- 注:数据在src/dataset.py中处理。
|
||||
|
||||
## 特性
|
||||
|
||||
|
@ -62,15 +64,16 @@ ResNet-50总体网络架构如下:
|
|||
# 环境要求
|
||||
|
||||
- 硬件:昇腾处理器(Ascend)
|
||||
- 使用昇腾处理器来搭建硬件环境。如需试用昇腾处理器,请发送[申请表](https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/file/other/Ascend%20Model%20Zoo%E4%BD%93%E9%AA%8C%E8%B5%84%E6%BA%90%E7%94%B3%E8%AF%B7%E8%A1%A8.docx)至ascend@huawei.com,审核通过即可获得资源。
|
||||
- 使用昇腾处理器来搭建硬件环境。如需试用昇腾处理器,请发送[申请表](https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/file/other/Ascend%20Model%20Zoo%E4%BD%93%E9%AA%8C%E8%B5%84%E6%BA%90%E7%94%B3%E8%AF%B7%E8%A1%A8.docx)至ascend@huawei.com,审核通过即可获得资源。
|
||||
|
||||
- 框架
|
||||
- [MindSpore](https://www.mindspore.cn/install)
|
||||
|
||||
-如需查看详情,请参见如下资源:
|
||||
- [MindSpore教程](https://www.mindspore.cn/tutorial/training/en/master/index.html)
|
||||
- [MindSpore Python API](https://www.mindspore.cn/doc/api_python/en/master/index.html)
|
||||
- 如需查看详情,请参见如下资源:
|
||||
|
||||
- [MindSpore教程](https://www.mindspore.cn/tutorial/training/en/master/index.html)
|
||||
|
||||
- [MindSpore Python API](https://www.mindspore.cn/doc/api_python/en/master/index.html)
|
||||
|
||||
## 脚本说明
|
||||
|
||||
|
@ -127,18 +130,19 @@ ResNet-50总体网络架构如下:
|
|||
### 用法
|
||||
|
||||
- 晟腾(Ascend): sh run_train.sh Ascend [RANK_TABLE_FILE] [DATASET_PATH] [PRETRAINED_CKPT_PATH]\(可选)
|
||||
|
||||
### 启动
|
||||
|
||||
```
|
||||
```python
|
||||
# 训练示例
|
||||
Ascend:bash run_train.sh Ascend ~/hccl_4p_0123_x.x.x.json ~/imagenet/train/
|
||||
Ascend:bash run_train.sh Ascend ~/hccl_4p_0123_x.x.x.json ~/imagenet/train/
|
||||
```
|
||||
|
||||
### 结果
|
||||
|
||||
训练结果保存在示例路径中。检查点默认保存在`./train/device$i/`,训练日志重定向到`./train/device$i/train.log`,内容如下:
|
||||
训练结果保存在示例路径中。检查点默认保存在`./train/device$i/`,训练日志重定向到`./train/device$i/train.log`,内容如下:
|
||||
|
||||
```
|
||||
```python
|
||||
epoch: 1 step: 5004, loss is 4.8995576
|
||||
epoch: 2 step: 5004, loss is 3.9235563
|
||||
epoch: 3 step: 5004, loss is 3.833077
|
||||
|
@ -156,7 +160,7 @@ epoch: 5 step: 5004, loss is 3.1978393
|
|||
|
||||
### 启动
|
||||
|
||||
```
|
||||
```shell
|
||||
# 推理示例
|
||||
shell:
|
||||
Ascend: sh run_infer.sh Ascend ~/imagenet/val/ ~/train/Resnet50-30_5004.ckpt
|
||||
|
@ -168,7 +172,7 @@ epoch: 5 step: 5004, loss is 3.1978393
|
|||
|
||||
推理结果保存在示例路径中,可以在`./eval/infer.log`中找到如下结果:
|
||||
|
||||
```
|
||||
```python
|
||||
result:{'acc':0.76576314102564111}
|
||||
```
|
||||
|
||||
|
@ -193,8 +197,8 @@ result:{'acc':0.76576314102564111}
|
|||
| 准确率 |
|
||||
| 总时长 | 16h |
|
||||
| 参数(M) | batch_size=32, epoch=30 |
|
||||
| 微调检查点 |
|
||||
| 推理模型 |
|
||||
| 微调检查点 |
|
||||
| 推理模型 |
|
||||
|
||||
### 评估性能
|
||||
|
||||
|
@ -214,9 +218,8 @@ result:{'acc':0.76576314102564111}
|
|||
|
||||
## 随机情况说明
|
||||
|
||||
[dataset.py](http://dataset.py/)中设置了“create_dataset”函数内的种子,同时还使用了train.py中的随机种子
|
||||
dataset.py中设置了“create_dataset”函数内的种子,同时还使用了train.py中的随机种子。
|
||||
|
||||
## ModelZoo主页
|
||||
|
||||
请浏览官网[主页](https://gitee.com/mindspore/mindspore/tree/master/model_zoo)。
|
||||
|
||||
|
|
Loading…
Reference in New Issue