关于HappyOCR之四

15 views
Skip to first unread message

benliud

unread,
Dec 28, 2007, 2:55:05 AM12/28/07
to HappyOCR
OCR一个很关键的问题是网络训练,字库越大训练时间越长,识别效果也越好。训练程序以前有一个,可以用,不过时不时会陷入极小点导致死循环训练不到结
果,需要手工干预。这次发布出来的是新写的,支持多CPU,改进了一些算法,希望能适当的提高速度,看起来训练也不太容易陷入极小,可以比较放心的让它
长时间跑。另外值得一提的是字体倒入到数据库是极其缓慢的过程,要倒入5万个字进入sqlite字库需要2个多小时,字库越大可能还会更慢,数据库的写
入就是比较慢的,sqlserver似乎要更快点,不太记得了,不过也是个慢过程。所以将来如果有人自己从头做起的话,要注意这一点。字体转换很快,但
倒入到数据库很慢。当然,训练网络就更慢了,那是核心部分。

关于BP网络,前面提到当前采用的是576*3*1的结构,即输入的是一个24*24的图象,输出是一个数值,正确输出确定为0.8,错误输出要求小于
0.6,在识别时,所有网络输出自己的独立识别结果,最接近0.8的就是识别结果,当只有一个识别结果处于0.8左右,而其他都<0.6时,基本可以确
定这个识别是准确的。结果在0.6-1.0之间的都是可疑识别,将这些可疑识别对0.8的距离排序,就可以得到一个识别序列供用户选择,正确的字基本上
都会在10个最优结果里面。

关于训练网络的方法是这样的,先训练正确的字,穿插训练随机样本做反面训练,当全部正确的字都可以识别后,识别所有字库里的字,不正确的字输出必须让他
小于0.5,否则就训练这个字直到所有不正确的字输出都小于0.5及所有正确的字输出都接近0.8为止,很多时间花在反复校验字库中所有字的识别上。字
库越多,这种校验所费时间就越大。
Reply all
Reply to author
Forward
0 new messages