关于HappyOCR之三

14 views
Skip to first unread message

benliud

unread,
Dec 28, 2007, 2:54:26 AM12/28/07
to HappyOCR
HappyOCR的识别速度大约在5-8个/秒(1.7g单核CPU),是比较慢的,尚书就快的多,但是HappyOCR是纯网络识别,没有用到任何特
征值来缩小范围,如果选2级字库来识别,则每个字都要交给6000多个网络去识别,这样一来当然会比较慢些。要优化速度则需要添加特征值过滤。内存占用
也比较大,因为所有识别网络都需要装入内存来做,但512M内存的机器跑是没问题的,1G就更好了。


训练网络数据是比较麻烦的事,因为丢失了这些数据,所以这几天我又重新开始训练网络了。以前做过约30万字库的训练,三台机器(都不够快)跑大约两周训
练出了所有二级字的识别网络。这次重写了训练程序,一来为求更快的训练速度,二来为求多线程支持,毕竟很多人都有双核机了,有多线程支持可以更快,早年
很少,都是单核的就没必要。现在在我1.7g单核上跑,大约需要2小时做出一个文字区。这样算起来约需要150小时算完,当然,这样算出来的网络只是基
本可用,因为这次只用了6万个字来训练,要想识别率更好,还需要导入更多字体和不同分辨率的字体,开源以后或许有人愿意去做吧,训练大的字库确实需要很
长时间,我就不过分烧自己的CPU了,没效率,现在有双核的人还挺多。字库越多,则识别率越高,当然前提是输入的字是对的。如果我有大型机的话,我希望
字库能做到2000万,不过在PC上计算,一两台是解决不了问题的。不过开源以后会好算点,因为可以分工来计算不同的字再合起来,有兴趣的可以算算,当
前程序使用的是空闲时间,不影响正常程序。

单网络识别有个好处就是可以在学习新的字体时,不会过分干扰到其他已经训练好的网络,因为各网络的识别是独立的,这样,在识别过程中,随着新的不能识别
的字添加到字库里,网络可以越来越准确。BP网络采用576*3*1的结构,3为隐层节点数,从经验来看够用了,学几十种字体没问题,2就似乎少了,4
影响速度及空间。

Reply all
Reply to author
Forward
0 new messages