目录

  • 一、环境准备
    • 1.进入ModelArts官网
    • 2.使用CodeLab体验Notebook实例
  • 二、脚本说明
  • 三、数据集
  • 四、训练过程
  • 五、评估过程
  • 六、推理过程

CRNN描述
CRNN是一种基于图像序列识别的神经网络,应用于场景文本识别。本文研究了场景文本识别问题,这是基于图像序列识别中最重要和最具挑战的任务之一。本文提出了一种新的神经网络结构,将特征提取、序列建模和转录集成到统一框架中。与以前的场景文本识别系统相比,本文提及的架构具有四个特性:(1)端到端可训练,不像现有算法,大多数都是单独训练和调整组件。(2)自然处理任意长度序列,不涉及字符分割或水平尺度标准化。(3)不局限于预定义词典,在无词典和基于词典的场景文本识别任务中都取得了显著的性能。(4)生成有效且更小的模型,在现实的应用场景中更实用。
论文: Baoguang Shi, Xiang Bai, Cong Yao, “An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition”, ArXiv, vol. abs/1507.05717, 2015.

模型架构
CRNN使用vgg16结构进行特征提取,附加两层双向LSTM,最后使用CTC计算损失。有关详细信息,请参见src/crnn.py。

我们提供了2个版本的网络,使用不同的方法将hidden size传到class
numbers。您可以通过修改config.yaml中的model_version来选择不同版本。

V1中,RNN之后增加了全连接层。 V2中,更改最后一个RNN的输出特征大小,输出具有相同分类数的特征。V2中,切换到内置LSTM
cell,而不是DynamicRNN算子,这样GPU和Ascend上都支持该模型。

体验MindSpore ModelZoo中的CRNN模型

如果你对MindSpore感兴趣,可以关注昇思MindSpore社区

一、环境准备

1.进入ModelArts官网

云平台帮助用户快速创建和部署模型,管理全周期AI工作流,选择下面的云平台以开始使用昇思MindSpore,可以在昇思教程中进入ModelArts官网

选择下方CodeLab立即体验

等待环境搭建完成

2.使用CodeLab体验Notebook实例


导入项目仓库,在CodeLab中Clone以下命令

https://gitee.com/mindspore/models.git


导入成功

在右侧切换规格为GPU架构

切换成功显示如下

进入昇思MindSpore官网,点击上方的安装

获取安装命令

回到Notebook中,选择Terminal,依次运行命令

pip install --upgrade pip
conda install mindspore-gpu=1.9.0 cudatoolkit=10.1 -c mindspore -c conda-forge
pip install mindvision

依次运行即可


二、脚本说明

脚本及样例代码

crnn
├── README.md                                   # CRNN描述
├── convert_ic03.py                             # 转换原始IC03数据集
├── convert_iiit5k.py                           # 转换原始IIIT5K数据集
├── convert_svt.py                              # 转换原始SVT数据集
├── requirements.txt                            # 数据集要求
├── scripts
│   ├── run_standalone_train_cpu.sh             # 在CPU中启动单机训练
│   ├── run_eval_cpu.sh                         # 在CPU中启动评估
│   ├── run_distribute_train.sh                 # 在Ascend或GPU中启动分布式训练(8卡)
│   ├── run_eval.sh                             # 在Ascend或GPU中启动评估
│   └── run_standalone_train.sh                 # 在Ascend或GPU中启动单机训练(单卡)
│   └── run_eval_onnx.sh                        # Eval ONNX模型
├── src
│   ├── model_utils
│       ├── config.py                           # 参数配置
│       ├── moxing_adapter.py                   # ModelArts设备配置
│       └── device_adapter.py                   # 设备配置
│       └── local_adapter.py                    # 本地设备配置
│   ├── crnn.py                                 # CRNN网络定义
│   ├── crnn_for_train.py                       # CRNN网络,带梯度、损失和梯度裁剪
│   ├── dataset.py                              # 训练和评估数据预处理
│   ├── eval_callback.py
│   ├── ic03_dataset.py                         # IC03数据预处理
│   ├── ic13_dataset.py                         # IC13数据预处理
│   ├── iiit5k_dataset.py                       # IIIT5K数据预处理
│   ├── loss.py                                 # CTC损失定义
│   ├── metric.py                               # CRNN网络的准确率指标
│   └── svt_dataset.py                          # SVT数据预处理
└── train.py                                    # 训练脚本
├── eval.py                                     # 评估脚本
├── eval_onnx.py                                # ONNX模型评估脚本
├── default_config.yaml                         # 配置文件

训练脚本参数

# Ascend或GPU分布式训练
用法:bash scripts/run_distribute_train.sh [DATASET_NAME] [DATASET_PATH] [PLATFORM] [RANK_TABLE_FILE](if Ascend)# Ascend或GPU单机训练
用法:bash scripts/run_standalone_train.sh [DATASET_NAME] [DATASET_PATH] [PLATFORM]# CPU单机训练
用法:bash scripts/run_standalone_train_cpu.sh [DATASET_NAME] [DATASET_PATH]

三、数据集

注:可以运行原始论文中提到的数据集脚本,也可以运行在相关域/网络架构中广泛使用的脚本。下面将介绍如何使用相关数据集运行脚本。

我们使用论文中提到的五个数据集。在训练中,使用Jederberg等人发布的合成数据集(MJSynth和SynthText)作为训练数据,其中包含800万张训练图像及其对应的地面真值词。在评估中,使用四个流行的场景文本识别基准,即ICDAR
2003(IC03)、ICDAR2013(IC13)、IIIT 5k-word(IIIT5k)和街景文本(SVT)。

数据集准备

对于数据集IC03、IIIT5k和SVT,不能直接在CRNN中使用官网的原始数据集。

IC03,需要根据word.xml从原始图像中裁剪文本。 IIIT5k,需要从matlib数据文件中提取标注。
SVT,需要根据train.xml或test.xml从原始图像中裁剪文本。
我们提供了convert_ic03.py、convert_iiit5k.py、convert_svt.py作为上述预处理的示例参考。

将下载的数据集ICDAR 2003 Robust Reading Competitions
,放入data文件夹中


四、训练过程

设置config.py中的选项,包括学习率和其他网络超参。有关数据集的更多信息,请参阅MindSpore数据集准备教程。

运行run_standalone_train.sh进行CRNN模型的非分布式训练,目前支持Ascend和GPU。

bash scripts/run_standalone_train.sh [DATASET_NAME] [DATASET_PATH] [PLATFORM](optional)
bash scripts/run_distribute_train.sh ic03 ./data GPU

可以看到在目录下生成了训练文件夹



分布式训练

在Ascend或GPU上运行run_distribute_train.sh进行CRNN模型的分布式训练

bash scripts/run_distribute_train.sh [DATASET_NAME] [DATASET_PATH] [PLATFORM] [RANK_TABLE_FILE](if Ascend)

检查train_parallel0/log.txt,将得到输出

断点续训练

如果想使用断点续训练功能,运行训练脚本时,[RESUME_CKPT]参数指定对应的checkpoint文件即可。

五、评估过程

运行run_eval.sh进行评估

bash scripts/run_eval_cpu.sh [DATASET_NAME] [DATASET_PATH] [CHECKPOINT_PATH]

检查eval/log.txt,将得到以下输出:

result: {'CRNNAccuracy': (0.806)}

训练时评估

添加并设置run_eval为True来启动shell,还需添加eval_dataset来选择评估数据集。如果希望在训练时进行评估,添加eval_dataset_path来启动shell。当run_eval为True时,可设置参数选项:save_best_ckpt、eval_start_epoch、eval_interval。

六、推理过程

导出MindIR

python export.py --ckpt_file [CKPT_PATH] --file_name [FILE_NAME] --file_format [FILE_FORMAT] --device_target [DEVICE_TARGET] --model_version [MODEL_VERSION](required for cpu)

必须设置ckpt_file参数。 FILE_FORMAT:取值范围[“AIR”, “MINDIR”]

在Ascend 310上推理

# Ascend 310推理
bash run_infer_310.sh [MINDIR_PATH] [DATA_PATH] [ANN_FILE_PATH] [DATASET] [DEVICE_ID]

推理结果保存在当前路径中,可以在acc.log文件中查看如下结果

correct num: 2042 , total num: 3000
result CRNNAccuracy is: 0.806666666666

华为开源自研AI框架昇思MindSpore模型体验:ModelZoo中的CRNN相关推荐

  1. 华为开源自研AI框架昇思MindSpore应用实践:FGSM网络对抗攻击

    目录 一.环境准备 1.进入ModelArts官网 2.使用CodeLab体验Notebook实例 二.对抗样本定义 三.攻击方法 快速梯度符号攻击(FGSM) 四.数据处理 五.训练LeNet网络 ...

  2. 华为开源自研AI框架昇思MindSpore应用实践:DCGAN生成漫画头像

    目录 一.原理说明 1.GAN基础原理 2.DCGAN原理 二.环境准备 1.进入ModelArts官网 2.使用CodeLab体验Notebook实例 三.数据准备与处理 1.数据处理 四.创建网络 ...

  3. 华为开源自研AI框架昇思MindSpore应用案例:Colorization自动着色

    目录 一.环境准备 1.进入ModelArts官网 2.使用ModelArts体验实例 二.数据处理 数据准备 训练集可视化 构建网络 损失函数 三.模型实现 算法流程 模型训练 模型推理 总结 自动 ...

  4. 华为开源自研AI框架昇思MindSpore应用案例:SSD目标检测

    目录 一.环境准备 1.进入ModelArts官网 2.使用CodeLab体验Notebook实例 二.环境准备 三.数据准备与处理 数据采样 数据集创建 四.模型构建 五.损失函数 六.Metric ...

  5. 华为开源自研AI框架MindSpore!自动微分、并行加持,一次训练,可多场景部署...

    乾明 发自 凹非寺  量子位 报道 | 公众号 QbitAI 华为的开源AI框架,来了! 刚刚,华为宣布正式开源自研深度学习框架MindSpore,代码已经上线. MindSpore是一款支持端边云全 ...

  6. 华为AI框架昇思MindSpore三周年开发者生日会

  7. 华为AI计算框架昇思MindSpore零基础快速入门 (上)

    一.基础介绍 门槛最低的深度学习引导 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/463019160MindSpore入门实践 - 知乎 (zhihu.c ...

  8. 论文速递 | 华为开源自研算法Disout | 中科院计算所GCN中文综述

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作分享,不代表本公众号立场,侵权联系删除 转载于:机器之心 AI博士笔记系列推荐 周志华<机器学习>手 ...

  9. 技术干货|昇思MindSpore 1.5版本中的亲和算法库——MindSpore Boost

    有过AI网络训练的朋友们都知道,基于深度学习训练的AI收集越多的数据,使用越大的网络进行训练,能得到更好的精度.同时,越多的数据.越大的网络也意味着越大的算力消耗.如果能有一个算法库,在同等算力资源下 ...

最新文章

  1. 2018几大主流的 UI/JS 前端框架
  2. django配置数据驱动,python安装失败问题
  3. 关于Session接口的update方法主要有如下几点要注意
  4. Myeclipse 6.5 优化
  5. Linux系统入门学习:改变libvirt VM镜像的默认位置
  6. 计算机操作系统试题及答案(带解析),计算机操作系统练习题及答案
  7. VAR(向量自回归)模型
  8. 光敏二极管的工作原理
  9. android是什么意思
  10. NShape(开源矢量图形编辑器) 入门(三)
  11. python条件判断《X战警:逆转未来》
  12. 【Halcon视觉】中心线提取
  13. php 图片处理羽化,ps羽化的作用及羽化的使用方法
  14. NOIP 2006 金明的预算方案 (裸?)分组背包
  15. 用HTML制作简单的个人介绍主页
  16. 查看服务器ip修改记录,如果查看服务器ip地址和修改ip
  17. 浅析B树、B+树插入删除操作(附代码实现)
  18. signature=37615ca45efe9600a605bfc580bf67ea,止痛药双氯芬酸会显著增加心脏病中风风险
  19. win10系统C盘存储使用优化操作教程
  20. 高端人才必看,生意人必读

热门文章

  1. 赛博暗影cyber shadow中文版
  2. generate-code开源的代码生成器(FlierTeam)
  3. Eclipse与Weblogic的安装与配置(转)
  4. 100天精通Python(可视化篇)——第94天:Pyecharts绘制多种炫酷散点图(参数说明+代码实战)
  5. OA and Ding
  6. 【速读】Social GAN : Socially Acceptable Trajectories with Generative Adversarial Networks
  7. Java之多线程学习笔记五 —— 多线程模拟龟兔赛跑
  8. java typeof_JS中typeof的用法
  9. 怎么在电脑上玩逍遥诀手游 逍遥诀电脑版怎么玩
  10. Flink Cep 源码分析