使用小藤实现手写汉字识别

举报
张辉 发表于 2023/09/01 07:35:11 2023/09/01
【摘要】 使用小藤实现手写汉字识别
由于这里使用的是paddlepaddle,为了不干扰其他编译环境,笔者决定创建一个新的conda环境:
cd ~/ascend_community_projects/ChineseOCR
conda create -n chineseocr python=3.9
conda activate chineseocr

pip install paddle2onnx==0.9.5 -i https://pypi.tuna.tsinghua.edu.cn/simple

没有0.9.5版本。换成0.9.2试试:
pip install paddle2onnx==0.9.2 -i https://pypi.tuna.tsinghua.edu.cn/simple


应该是新的pip环境少了什么包。
换成1.0.5试试:
pip install paddle2onnx==1.0.5 -i https://pypi.tuna.tsinghua.edu.cn/simple

貌似还是版本高的好一点。

pip install paddlepaddle==2.3.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

咦,飞桨你下线了吗?
去飞桨官网看看是怎么回事:
打开


要装2.5.1版本:
python -m pip install paddlepaddle==2.5.1 -i https://pypi.tuna.tsinghua.edu.cn/simple

或者换成老版本:

python -m pip install paddlepaddle==2.3.2 -i https://pypi.tuna.tsinghua.edu.cn/simple

只能说,飞桨貌似没有linux arm的安装包。
下载模型文件:
cd model
wget https://paddleocr.bj.bcebos.com/dygraph_v2.0/ch/ch_ppocr_server_v2.0_rec_infer.tar

解压:
tar xvf ch_ppocr_server_v2.0_rec_infer.tar

将paddlepaddle模型转为onnx模型:
paddle2onnx --model_dir ./ch_ppocr_server_v2.0_rec_infer/ --model_filename inference.pdmodel --params_filename inference.pdiparams --save_file ./ch_ppocr_server_v2.0_rec_infer.onnx --opset_version 11 --enable_onnx_checker True

可以看到 ch_ppocr_server_v2.0_rec_infer.onnx 文件已生成。(貌似可以不用装paddlepaddle)

将onnx模型转为om离线模型
创建一个aipp.cfg文件,内容如下:
aipp_op{
    related_input_rank: 0
    crop: false
    input_format: 3
    aipp_mode: static
    csc_switch: false
    mean_chn_0: 0
    mean_chn_1: 0
    mean_chn_2: 0
    min_chn_0: 127.5
    min_chn_1: 127.5
    min_chn_2: 127.5
    var_reci_chn_0: 0.007843137718737125
    var_reci_chn_1: 0.007843137718737125
    var_reci_chn_2: 0.007843137718737125
}

缺numpy:
pip install numpy==1.19.5 -i https://pypi.tuna.tsinghua.edu.cn/simple

再来:
atc --model=ch_ppocr_server_v2.0_rec_infer.onnx --framework=5 --input_format=NCHW --input_shape="x:1,3,32,320" --output=ch_ppocr_server_v2.0_rec_infer_bs1 --soc_version=Ascend310B1 --log=error --insert_op_conf=./aipp.cfg


进入缺什么补什么的模式。。。
或者,conda环境切换回base环境,因为atc应该不需要paddlepaddle环境。(更何况paddlepaddle环境还没装起来)
conda deactivate
atc --model=ch_ppocr_server_v2.0_rec_infer.onnx --framework=5 --input_format=NCHW --input_shape="x:1,3,32,320" --output=ch_ppocr_server_v2.0_rec_infer_bs1 --soc_version=Ascend310B1 --log=error --insert_op_conf=./aipp.cfg

耐心等待模型转换结束:

可见 ch_ppocr_server_v2.0_rec_infer_bs1.om 离线模型已生成。

下载手写汉字数据集
mkdir dataset
浏览器 下载 https://mindx.sdk.obs.cn-north-4.myhuaweicloud.com/ascend_community_projects/chineseOcr/6.rar
解压后传到A2的dataset目录:


执行推理:
cd ~/ascend_community_projects/ChineseOCR
source /usr/local/Ascend/ascend-toolkit/set_env.sh
source /home/HwHiAiUser/mxVision-5.0.RC2/set_env.sh

python main.py

pip install textdistance -i https://pypi.tuna.tsinghua.edu.cn/simple

再来:
python main.py



准确率如下:
the accuracy is: 0.41395649474331114
(base) HwHiAiUser@davinci-mini:~/ascend_community_projects/ChineseOCR$

差错率大不大呢?
看看原文:
(base) HwHiAiUser@davinci-mini:~/ascend_community_projects/ChineseOCR/dataset$ cat *.txt


我们只看最后一段:
原文:来了个一百八十度的大转弯,又把两条后腿     往上一掀,  把我倒扔下来了,  左脚还塞在马蹬里呢。这匹讨厌的马!   它踢着,  鼻子大声打着呼呼,   拉着我拼命朝山坡上跑。
译文:来了个一百八十度码大传弯     把两务后同息往上一折,把我低扔下来了,左陆区墨在马隆里呢。这匹讨妥的马!也陽着,算子大声打着呼呼,拉着我拼命朝山坡上跑
错别字还是蛮多的。感觉这种机翻还不如人翻了。。。

(全文完,谢谢阅读)
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

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

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。