正赛采用的是类似LOL的MOBA赛制,每组最少需要五台机器人,选手数量则限制在3~5人之间。
江寒已经决定了,到时候会带上方源和小鱼儿,让他们两个也长长见识。
这样一来,算上靳雪雯,队伍就接近满员,最多只能再塞进来一个人了……
靳雪雯很开心:“一言为定!”
两人说完这件事后,约好了到时候再联络,然后就挂断了电话。
江寒和夏雨菲母女一起吃完早餐后,就照常去上学。
整个上午,他都在用心研读《数学物理方程》,等到中午放学时,就差不多把这本书读透了。
中午吃完饭,江寒将夏雨菲哄睡之后,就拿出笔记本电脑,开始编写程序。
他昨天就打算好了,做一个实用一点的OCR软件。
界面部分可以放在以后再弄,今天先把最难搞的核心算法写出来。
毕竟人工神经网络,需要大量的时间训练……
OCR的技术要点,关键在于识别算法。
打印字体的识别,比手写识别简单多了,毕竟计算机常用的字体,也就那么几种。
江寒先从网络上,将各种字体文件全都下载了一遍。
然后设计了一个程序,调用这些字体,生成了许多小图片。
每张图片都是一个汉字、数字、字母,或者特殊符号。
江寒使用数据扩充算法,将每张图片略微变形、变色、位移、旋转……
得到了数以十倍的样本图片。
并且,在生成图片的同时,还顺便生成了一一对应的标签。
这样江寒就拥有了海量的训练数据。
接下来,他又综合运用已经掌握的机器学习知识,设计了一个庞大的集成式机器学习算法。
其中不可避免地,用到了,也就是最新开发出来的“卷积神经网络”。
为了最大限度地提高识别正确率,整个网络包括了许多层级不同的子网络。
每个图块输入到网络中后,先由第一级网络进行粗分类。
将输入的图片,划分成汉字、数字、英文字母、特殊符号这四个大类,然后分门别类地送入四个子网络中。
如果第一级识别的结果是数字,那么就会送进一个类似于手写数字识别的小型网络中,进一步分类,看看属于0~9中哪一个数字。
英文和特殊符号的处理,也和数字差不多,只是输出结果的类别数,稍微大了那么一点点。
但如果经过第一级网络的识别,判断归属于汉字大类,那么处理起来就稍微复杂一些了。
江寒将5000个左右的常用汉字,划分成了4000个子集。
然后使用自组织聚类神经网络(SOM),设计了一个拥有4000个输出的分类器。
少部分子集只含有一个元素,意味着分类到这些子集中的汉字,可以直接输出识别结果。
大部分子集里含有2~30个元素,这意味着还需要送入第三级网络,进一步进行分类。
如果该子集中的元素,只有2~3个,那么就送进一个单字分类器中,识别出最终结果。
多于3的话,就送入细分类网络模块(RNM),进一步分类。
循环进行前两步,直到每个子集的元素个数都小于等于3,然后逐一送入单字分类器中,输出最后的结果。
这就是这个集成网络的整个工作流程,其中使用了数百个中型神经网络。
这些神经网络在设计上,基本大同小异,所以编程难度并不高。
麻烦的是,每个神经网络,都得单独训练,而这需要大量的算力。
好在他早就在高新区地下的机房里,准备好了十几台高性能服务器。
江寒将程序设计出来,然后连同训练数据,一起上传到了那些服务器中。
十几台服务器全力运转,差不多一两天就能完成训练。