当前位置: 首页 > 工具软件 > HomeCenter > 使用案例 >

ctc center-loss在字符识别形近字分类中的使用

王飞英
2023-12-01

最近在处理字符识别形近字易识别错的问题,然后有大佬推荐了ctc center loss,该方法来源于阿里,据说效果不错

1.先介绍以下ctc center loss(ctc loss + center loss)

ctc loss我就不介绍了,center loss 最早用于人脸识别中的loss函数,该loss 的目的就是更好的扩大类间距离,缩小类内距离;而在字符识别中的使用,可以分为以下几个步骤:

step1:得到模型的预测结果,和双向长短期记忆法第二个rnn的lstm(线性层之前)的输出结果;

step2:将预测结果中字符数量和标签字符数量相等的预测结果保留下来,并提取出相应的真实标签,和对应的feature的位置;

step3:将step的feature提取出来,和对应的label,计算centerloss;

step4:将计算出的centerloss结果乘以系数然后和ctc loss求和;

2.tf中具体代码实现参考链接

读光OCR-文字识别技术解读与ctc center loss实现

由于作者在他的代码中已经备注很详细,所以就不再赘述,要是有什么不太懂的可以留言;

3.在使用tensorflow时遇到的报错

W tensorflow/stream_executor/platform/default/dso_loader.cc:60] Could not load dynamic library 'libcudart.so.11.0'; dlerror: libcudart.so.11.0: cannot open shared
 object file: No such file or directory; LD_LIBRARY_PATH: /home/fuxueping/sdb/Installation/qt/Tools/lib::/home/fuxueping/anaconda2/envs/pytor
ch1_1/lib/python3.6/site-packages/PyQt5:/usr/local/cuda/lib64:/usr/lib/x86_64-
linux-gnu:/usr/local/protobuf/lib:/usr/lib/x86_64-linux-gnu/atlas:/usr/lib/x86_64-
linux-gnu/boost:/usr/lib:/usr/local/protobuf/lib/:/home/fuxueping/anaconda2/envs/pytorch1
_1/lib/python3.6/site-packages/PyQt5:/usr/lib/x86_64-linux-gnu
2021-02-26 15:18:36.925385: I tensorflow/stream_executor/cuda/cudart_stub.cc:29] 
Ignore above cudart dlerror if you do not have a GPU set up on your machine.

解决方法:

import tensorflow as tf

之前加入:

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

解决办法参考:cpu版tensorflow去除告警信息:Could not load dynamic library 'libcudart.so.10.1' - 简书

 类似资料: