建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

在此一键设置昵称,即可参与社区互动!

确定
我再想想
选择版块
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

JeffDing

发帖: 38粉丝: 24

发消息 + 关注

更新于2020年12月19日 20:33:11 449 2
直达本楼层的链接
楼主
显示全部楼层
[干货分享] [线上模型挑战赛]EAST、PSENET TensorFlow GPU To Ascend 迁移记录

一、EAST网络介绍

EAST,An Efficient and Accurate Scene Text Detector:https://arxiv.org/abs/1704.03155v2

EAST做文本检测只需要两步:先是一个全卷积的网络直接产生一个字符或者文本行的预测(可以是旋转的矩形或者不规则四边形),然后通过NMS(Non-Maximum Suppression)算法合并最后的结果。

EAST网络是一个全卷积网络,主要有三部分:特征提取层,特征融合层,输出层。由于在一张图片中,各个文字大小不一,所以需要融合不同层次的特征图,小文字的预测需要用到底层的语义信息,大文字的预测要用到高层的语义信息。EAST网络结构图参考下图

源代码下载:https://github.com/argman/EAST

二、PESNET

PSENET:Shape Robust Text Detection with Progressive Scale Expansion Network:https://arxiv.org/abs/1806.02559

通常OCR中,文字检测都是由目标检测继承而来,目标检测大多都是基于先验框的(anchor base),近期出现的no-anchor模式本质上也是基于先验框的。anchor-base模式在目标检测衍生到OCR领域就有很多缺陷,比如:倾斜(或扭曲)文字检测不准、过长文字串检测不全、过短文字串容易遗漏、距离较近的无法分开等缺点。近期,渐进式扩展网络(PSENet)横空出世,以另一种思路解决了这些问题,下面我们来梳理一下该模型,不妥之处敬请指正。

PSENet是一种新的实例分割网络,它有两方面的优势。 首先,psenet作为一种基于分割的方法,能够对任意形状的文本进行定位.其次,该模型提出了一种渐进的尺度扩展算法,该算法可以成功地识别相邻文本实例。

image.png


源代码下载:https://github.com/liuheng92/tensorflow_PSENet

三、数据集

ICDAR2015:从官网下载可以比较慢,这篇帖子里面有百度网盘的下载地址:https://blog.csdn.net/weixin_45779880/article/details/105642393


四、PSENET和EAST GPU To Ascend迁移代码修改详解

因为PSENET和EAST两个网络使用的数据集是相同的,代码也差不多,修改的地方也差不多,应该只需要两步就可以运行起来了。所以这两个网络的迁移就合并在一起写了

第一步:根据迁移手册:https://support.huaweicloud.com/ug-tf-training-tensorflow/atlasmprtg_13_0006.html 修改train.py文件进行sess.run的迁移

#引入包
from npu_bridge.estimator import npu_ops
from tensorflow.core.protobuf.rewriter_config_pb2 import RewriterConfig
config = tf.ConfigProto(allow_soft_placement=True)
custom_op =  config.graph_options.rewrite_options.custom_optimizers.add()
custom_op.name =  "NpuOptimizer"custom_op.parameter_map["use_off_line"].b = True # 必须显示开启,在昇腾AI处理器执行训练
config.graph_options.rewrite_options.remapping = RewriterConfig.OFF  # 必须显示关闭remap

with tf.Session(config=config) as sess:  #在这一行之前加入上面一代代码

第二步:因为数据集中的文本文件比图片文件多一个GT_前缀,所以我们需要修改一下读取数据集的代码

east为icdar.py文件

psenet网络为/utils/data_provider/data_provider.py

file_path, file_name = os.path.split(im_fn)
txt_fn = file_path + '/gt_' + file_name.replace('jpg', 'txt')

#txt_fn = im_fn.replace(os.path.basename(im_fn).split('.')[1], 'txt')  #将原来的这行代码替换为上面两行

EAST和psenet只需要这两步应该就可以将模型运行起来了

五、运行结果

运行命令:+ python npu_train.py --checkpoint_path=./checkpoint/ --text_scale=512 --training_data_path=/data/dataset/storage/icdar/ --geometry=RBOX --learning_rate=0.0001 --num_readers=24 --max_steps=200 --pretrained_model_path=./pretrain/resnet_v1_50.ckpt --save_checkpoint_steps=10 > train.log 2>&1

运行完成后执行cat train.log | grep loss 看一下loss的值如下图:


举报
分享

分享文章到朋友圈

分享文章到微博

andyleung

发帖: 965粉丝: 80

发消息 + 关注

发表于2020年12月26日 16:30:18
直达本楼层的链接
沙发
显示全部楼层

好东西的分享

点赞 评论 引用 举报

Jack20

发帖: 132粉丝: 157

发消息 + 关注

发表于2020年12月29日 11:02:15
直达本楼层的链接
板凳
显示全部楼层

感谢分享

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册