coura
coura
你可以看一下在报错之前的一些提示,有些字符没有覆盖到引起的,你把所有涉及的字符添加到字符集里面就可以了
不用,你可以看一下148行捕捉的exception,就是因为dict里面缺少字符引发的, 你需要在准确数据的时候生成一个新的alphabet,在keys.py 这个文件家里面读新的字典,把所有你需要的字符都包含进去即可
你好,这个代码采用CTPN做文字检测,CRNN做文字识别, 这两个算是比较经典的算法了,对于大部分场景都可以work, 但是有个缺陷是对于靠的比较近的两个文字区域可能会当成一个框,对小的文本框支持也不太好, 对于你说的驾照识别场景,目前有一些可能更好地解决方案,比如EAST,Corner这两个文字检测算法,但是基本上都要针对你的数据重新训练一下才能有好的效果。 至于用CRNN来做识别我觉得没太大问题。 我也复现了一些其他的文字检测和识别算法,也有效果更好的,目前忙着处理毕业论文的事,所以也没时间好好整理,等过段时间时间会整理下我会放出一些更新的算法,也欢迎关注。 短期内你要用的话建议尝试EAST、corner文字检测算法,都有开源的实现。 文字识别代码讲解这块的教程应该有不少,知乎啥的找一找都有一些讲解,但是都比较粗浅吧,一些细节的内容需要你自己理解。
嗯,用CTPN的话可能检测的效果不会太好, 你可以试着调整ctpn_predict.py中的height这个参数,代表输入到神经网络的图像高度, 试着在默认值的基础上*2、/2或者选别的值看看效果,如果还是不行的话建议尝试别的文字检测算法。 识别的算法可以继续用CRNN。
文字框上的百分比是准确率是代表置信度,也可以理解为准确程度吧。 CTPN是以宽度为16的小框作为最小的检测单元,那个底纹表示这个当前这个区域被检测出来了,有可能出现左右两边被检测出来涂上了颜色,中间没被检测出来,然后会根据文本线构造算法基于左右两边的检测结果判定中间也是属于文字区域,然后会将这个也框起来。
这个模型用的是ICDAR17MLT, 也可以试试ICPR MTWI 2018的数据集 要针对特定数据优化的话最好加一些自己的数据
我的经验是有这么几个可能的出问题的地方, 1.alphabet的设置,新的数据集的话最好更新一下alphabet,因为之前的alphabet可能有漏掉的字符。 更新alphabet可以参考keys.py中注释掉的代码 2.网络输出的类别也就是nclass是不是和alphabet匹配上,看代码里似乎没有问题nclass=len(alphabet)+1 3.如果用的是pytorch自带的CTCloss的话有时候也会触发nan的情况,不过我在train_pytorch_ctc.py做了修正,在计算loss时用cpu计算了,试过几次已经没有出现nan的情况了,不知道你那边是不是用的pytorch自带的CTC。
如果你用的train_wrap_ctc.py这个训练的话就用warp-ctc 如果想用pytorch自带的CTCloss的话,就用train_pytorch_ctc.py这个文件训练 这样的话应该是不会有nan出现的, 虽然两个文件很像,但是应该还是有细微差别的
你是贴了图吗。好像没看到你贴的内容
加载预训练模型出错是因为alphabet发生了变化,如果要加载的话换回原来的alphabet即可, 既然还有nan发生的话有两个建议你可以尝试一下: 1.装一下warp-ctc在另一个训练代码上进行训练,不过warp-ctc貌似不支持特别高版本的pytorch,所以要退回低版本的pytorch,你要试的话可以装个虚拟环境试一试 2.可以生成一个小点并且简单点的数据集,比如只有英文+数字的数据,先跑通实验再进行大数据集上的实验,这样也方便定位问题