Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

你好有几个问题想问下 #1

Open
piaobuliao opened this issue Jul 22, 2017 · 36 comments
Open

你好有几个问题想问下 #1

piaobuliao opened this issue Jul 22, 2017 · 36 comments

Comments

@piaobuliao
Copy link

piaobuliao commented Jul 22, 2017

  1. 你这个验证码识别的位数最多是5位还是可变的? 我看你的label-test.txt 有的4位有的5位,
    3位的或者6位的能识别吗?
  2. 这个识别验证码的位数(你这里就5位?。。还是由训练样本决定?)在哪里控制的?train.prototxt里的?
  3. label-test.txt 的第32类别就是空的意思?
  4. label-map.txt的顺序为啥不是0-9,A-Z按顺序排列啊?
  5. 如果用于一级汉字3755类识别可以吗?

非常感谢啊!

@piaobuliao piaobuliao changed the title 你好有几个问题向问下 你好有几个问题想问下 Jul 22, 2017
@dlunion
Copy link
Owner

dlunion commented Jul 23, 2017

用于汉字是可以的
这个最多是五位的,如果有6位也可以识别,但是有个上限,是训练样本决定的
为啥要0-9,A-Z,因为我做了一个软件,通用的label产生的软件产生的label-map

@piaobuliao
Copy link
Author

训练的时候 输入的图像只能是固定尺度的吗?
像这个博客提到的"输入文字块,归一化到32*w 即height缩放到32,宽度按高度的比率缩 放",这样子可以的吗?
http://blog.csdn.net/u013293750/article/details/73188934

@piaobuliao
Copy link
Author

我测试了下 八位的验证码也是可以识别的哦
https://pan.baidu.com/s/1skZMuGP

不过好像黑底白字的验证码才好识别,灰底黑字的就不行,估计由于训练样本都是黑底白字导致的

@dlunion
Copy link
Owner

dlunion commented Jul 24, 2017

对训练的时候是黑色低的
这个长度目前是有最大限度的,因为time_step有限制。图像大小也是固定的,因为网络设计没有按照任意长设计。你说的这一点特别好,我看看怎么改进提升他

@dlunion
Copy link
Owner

dlunion commented Jul 24, 2017

我这里面设计的双向lstm就是抄的你发的网址里面的

@piaobuliao
Copy link
Author

piaobuliao commented Jul 24, 2017

  1. 哦,你说的双向lstm你参考CTPN里面的喽.

  2. 还有想问下你的ctc_loss 是用百度的warp-ctc的吗?
    https://github.com/baidu-research/warp-ctc

  3. 还有我看你的deploy.prototxt最后一层的 name: "permute_fc"
    的输出好像不是像Softmax那样的每个字符的概率哦,就是一个float的变量,某个类别对应的越大就是该类别啊

  4. 那个C++.cpp 我看到你输出result的时候,这个时候假如碰到前后两个字符一样的话,你这个判断是不是就有问题啊?

if (predict_label != blank_label && predict_label != prev_label){
result = result + getLabel(labelMap, predict_label);
}

@dlunion
Copy link
Owner

dlunion commented Jul 25, 2017

不会,因为time_step有足够的间隙
AA_AA_CC结果依旧是AAC

@dlunion
Copy link
Owner

dlunion commented Jul 25, 2017

是CTPN里面的,你能看到影子的,ctc忘记哪里的了

@piaobuliao
Copy link
Author

piaobuliao commented Jul 30, 2017

hello,关于LSTM的输入还有个些问题想请教你哦

  1. 那个CTPN的 lstm_input的 Top shape: 是三维的如 https://github.com/tianzhi0549/CTPN/issues/55里的lstm_input: (48, 38, 4608) ,而你这个验证码的permuted_data(输出给lstm1x)是4维的哦
    I0730 22:09:13.258651 972 net.cpp:430] permuted_data -> permuted_data
    I0730 22:09:13.258651 972 net.cpp:172] Setting up permuted_data
    I0730 22:09:13.258651 972 net.cpp:179] Top shape: 19 1 512 8 (77824)
    这个是为什么啊?

  2. 还有 按照你这个 permuted_data 的输出shape: 19 1 512 8,每个xi都是1x512x8的形状吗? xi是这里
    https://zhuanlan.zhihu.com/p/28054589 提到的每个输入序列

非常感谢啊,哎,对LSTM的输入和输出都不是很懂哦

@xiaomaxiao
Copy link

@piaobuliao 中文的话 是随机汉字,还是词组啊

@piaobuliao
Copy link
Author

@xiaomaxiao 我最近刚开始搞汉字,用词典里选一些词组成一串文字在搞,目前一级汉字+二级汉字+一些英文字符总共六千多类

@zhcheng26
Copy link

你好,请问你的label是怎样产生的?如果不是按照你的方式编码需要修改的是哪里呢?谢谢

@xiaomaxiao
Copy link

@piaobuliao 我实验了一下 英文,效果还行。

你的一个样本里面是多少个字?

@piaobuliao
Copy link
Author

@xiaomaxiao 我是随机的,最多三十个,英文肯定没问题,我六千多类汉字训练的时候识别率也有90%

@xiaomaxiao
Copy link

@piaobuliao 我的英文 是97%,但是 如果定位的时候 方框定的大了,效果就不行了。
你的样本背景是纯白的还是杂乱的?

@piaobuliao
Copy link
Author

@xiaomaxiao 背景是杂乱的也有,纯色的也有。
“ 如果定位的时候 方框定的大了,效果就不行了” 这个你是不是可以这样做,假设背景图片是128*40
你字体大小在一定范围内变化,在背景图的位置也随意变化(还可以加一定程度的旋转和shear),这样泛化就会好很多吧,我就是这么做的,只要框的是一行文字,不要两行,框的大一点小一点问题都不大

@xiaomaxiao
Copy link

xiaomaxiao commented Sep 29, 2017

@piaobuliao 如果旋转,位置随机 ,字体大小的最小限制是多少呀,我看如果20个像素 基本汉字基本上看不清了。

shear是什么? 训练样本要相同size。

@piaobuliao
Copy link
Author

@xiaomaxiao 这个具体你自己根据实际图像大小控制啊,shear你可以参考https://github.com/aleju/imgaug。训练样本要相同size,这个你自己最后一部缩放下就好了

@xiaomaxiao
Copy link

@piaobuliao 汉语和英文的语料 是从哪里找的?目前我只找到了几万个英文词组。汉字不知在哪找。

@xiaomaxiao
Copy link

@piaobuliao 实验了旋转+位置 , 目前对定位大小 不敏感了。 赞~

@piaobuliao
Copy link
Author

@xiaomaxiao https://pan.baidu.com/s/10anmu 密码直接搜“千万级巨型汉语词库分享”

@xiaomaxiao
Copy link

@piaobuliao 谢谢发现了这个词库,里面的内容有点杂,需要整理下。
你的图片resize到多大了。我现在是32X250 ,其实是取了宽度最大的图片,宽度小的pad。
如果宽度长的硬resize,会不会破坏字体的结构,你那里的训练结果是如何的?

@piaobuliao
Copy link
Author

@xiaomaxiao 我是图片大小先固定,字体大小会变化的,然后python里会计算这个字符串的box的size,判断一下会不会出界,出界就不要了

@xiaomaxiao
Copy link

@piaobuliao 额 , 你90%的识别率 是不是 因为从语料库取词组的时候 有些字取的概率太少了,所以没充分?

@aitaoquanyi
Copy link

@dlunion @piaobuliao good job,实现了end2end的ocr, 我在使用本项目做车牌字符直接回归时发现lable size大于5会报错,注视掉lmdb生成对应代码能成功生成7位以上的label,修改训练配置labe countsl和time_step后,训练时一直卡在
image。请问一下,是否代码里面写死了智能处理5位一下label,谢谢!

@piaobuliao
Copy link
Author

@xiaomaxiao 90%识别率各种原因吧,汉字种类多了相近地多了,我加了噪声和模糊等 有些字还是比较模糊的

@piaobuliao
Copy link
Author

@aitaoquanyi 很多位都可以的,这个你自己改了,对应的prototxt的也要改的,

@aitaoquanyi
Copy link

@piaobuliao thanks!已经搞定,原因是我把train和val设置为同样的lmdb文件,caffe的bug。我用来做lpr end2end 识别率>=99.x,还可以把lstm加上残差的方式和使用双层,指标可提高2%左右
(复杂任务)。

@piaobuliao
Copy link
Author

@aitaoquanyi 你车牌照片是实际的? 有多少张用于训练,多少张测试?

@xiaomaxiao
Copy link

@piaobuliao

  • 你训练最后的图片宽度是多大?
  • 千万级巨型汉语词库 我整理了下 去重后 还有一千万行。
    有的词组特别长,直接截断?
  • 英文字符和标点是单独生成样本 还是和汉字再一起组。

@piaobuliao
Copy link
Author

@xiaomaxiao
[1] 440*56

[2] 这个看你想识别多长的字符串了

[3] 我是就用那个字典库里的,他怎么样就这么样,好像标点符号有的是没有出现在哪里的

@aitaoquanyi
Copy link

@piaobuliao
实际lpr数据,训练数据76万,测试8万。

@piaobuliao
Copy link
Author

@aitaoquanyi 有七八十万训练那识别率应该会挺高的,你这些数据是哪来的啊?

@aitaoquanyi
Copy link

私聊

@aitaoquanyi
Copy link

@piaobuliao 我qq270525694

@BackT0TheFuture
Copy link

@aitaoquanyi 大神好,qq加你了 ,lpr据集能不能分享下?谢谢

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants