# ModelArts-keras-character-recognition **Repository Path**: sheng_peng_exhibition/densent_ctc ## Basic Information - **Project Name**: ModelArts-keras-character-recognition - **Description**: No description available - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2020-07-09 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 参考 - [华为云官方文档]('https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0092.html#modelarts_23_0092__table1683418482455') - [github官方示例]('https://github.com/huaweicloud/ModelArts-Lab') - [gitee官方示例]('https://gitee.com/ModelArts/ModelArts-Lab') - [此次测试代码]('https://gitee.com/sheng_peng_exhibition/densent_ctc') - 数据集/训练好的模型 (链接:https://pan.baidu.com/s/1ZcQozu1st87WUR8aqTiqUw 提取码:sh2w ) - text-detection-ocr: https://github.com/GlassyWing/text-detection-ocr # 完整流程 1. 本地:准备数据集、训练代码、模型推理代码、模型配置文件 2. 控制台OBS:选择区域,新建桶 3. 控制台ModelArts:选择区域(需与新建桶的区域一致) 4. 控制台ModelArts:创建训练作业 5. 控制台ModelArts:导入训练模型 6. 控制台ModelArts:部署上线,在线服务测试 # 本地准备 - 数据集 1. 训练集、验证集 2. 标签文件 3. 字典 - 代码 参考官方代码:ModelArts-Lab\train_inference\image_recognition\codes 1. 训练代码 `train.py` 2. 测试代码(仿真部署)`local_infer_test.py` 3. 模型推理代码 参考 https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0093.html 3. 模型配置文件 参考 https://support.huaweicloud.com/engineers-modelarts/modelarts_23_0092.html ## 本地调试 - 环境 `git clone git@gitee.com:sheng_peng_exhibition/densent_ctc.git` `pip install -r requirement.txt` - 训练
使用低batch size 测试训练代码逻辑没问题(读取->训练->保存->转换成pb文件)
local_debug = True 见代码启动文件 ``` tf.flags.DEFINE_integer('batch_size', 8, 'number of training iterations.') tf.flags.DEFINE_integer('max_epochs', 2, 'max number of training iterations.') tf.flags.DEFINE_integer('num_gpus', 1, 'gpu nums.') tf.flags.DEFINE_integer('num_classes', 37, 'num_classes.') tf.flags.DEFINE_integer('steps_per_epoch', 100, 'step_per_epoch.') tf.flags.DEFINE_string('data_url', './data', 'dataset directory.') tf.flags.DEFINE_string('dict_url', './digitEn_37.txt', 'dictionary directory.') tf.flags.DEFINE_string('train_file_url', './data/train_labels.txt', 'train labels file.') tf.flags.DEFINE_string('val_file_url', './data/val_labels.txt', 'val labels file.') tf.flags.DEFINE_string('train_url', './output', 'saved model directory.') tf.flags.DEFINE_float('learning_rate', 0.05, 'learning rate.') tf.flags.DEFINE_bool('local_debug', True, 'local debug.') ``` 将数据集拷贝至当前工作目录 >`python train.py` - 推理 >`python local_infer_test.py --model_path='./output/pb_model' --data_path='./data' --dict_file='./digitEn_37.txt'` - 移植代码到ModelArts >**修改数据访问模式**
访问OBS内的数据需要通过moxing库(主要用于数据量过大,只能通过OBS访问数据集的情况)
注:配置文件从OBS复制到训练机器上,则在数据访问时可以正常使用open等函数,减少移植代码的工作量.
见:MoXing开发指南->常用操作的样例代码
https://support.huaweicloud.com/moxing-devg-modelarts/modelarts_11_0005.html ``` mox.file.copy(OBS上的文件路径, 训练机器上的目标路径) ``` >**模型转换为pb格式** ``` def save_keras_model_to_serving(model, export_path): signature = tf.saved_model.signature_def_utils.predict_signature_def( inputs={'images': model.inputs[0]}, outputs={'logits': model.outputs[0]}) builder = tf.saved_model.builder.SavedModelBuilder(export_path) legacy_init_op = tf.group(tf.tables_initializer(), name='legacy_init_op') builder.add_meta_graph_and_variables( sess=K.get_session(), tags=[tf.saved_model.tag_constants.SERVING], signature_def_map={ 'segmentation': signature, }, legacy_init_op=legacy_init_op) builder.save() ``` # 控制台OBS - 建议下载OBS Browser+ :https://support.huaweicloud.com/clientogw-obs/zh-cn_topic_0045829056.html - 选择地区新建桶(ocr) - 新建文件夹(digitEn) - 目录结构如下: > ocr //桶名称 >> digitEn //新建文件夹 >>> digitEn_37.txt // 字典 >>>
data //数据集 >>>> train_labels.txt // 训练集标签 >>>>
val_labels.txt // 验证集标签 >>>>
*.jpg >>> >>> digitEn_output // 输出目录 >>>
digitEn_code // 代码目录 >>>> train.py // 训练启动文件 >>>>
train_lib ![文件结构.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/112958xfes2mkkk6feoerm.png) # 控制台ModelArts 1. 选择地区(与**桶**的地区一致),新建训练作业
![训练作业.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/113330dkxnfggboamwitih.png) ![训练日志.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/100629vsuo2arlezqrm8gu.png) - 红色框信息表示在训练机器上已完成训练并保存为pb格式,再使用moxing库copy到OBS中(见启动文件代码),至此完成训练过程。 2. 导入模型 - 将模型推理代码、模型配置文件copy至OBS中,与pb格式模型文件放置同一处。 ![推理文件夹结构.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/115248bu3h70xjwzntmsvc.png) - 从训练中选择/从OBS中选择均可(注意选择model文件夹的上一级目录) ![模型配置.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/114631caymjisw0p8rm424.png) ![模型基本信息.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/114638o43jwj3vearh4xln.png) 3. 配置在线服务 ![在线服务.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/115425srkvyp3nvau5dpu3.png) 部署过程均可在日志中查看,依据日志来调试模型推理代码和模型配置文件 - 在线服务测试 ![在线服务测试.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202007/10/120010j70l3xfphpduqehw.png) 至此完成所有流程!欢迎交流!