正賽采用的是類似LOL的MOBA賽制,每組最少需要五臺機器人,選手數量則限制在3~5人之間。
江寒已經決定了,到時候會帶上方源和小魚兒,讓他們兩個也長長見識。
這樣一來,算上靳雪雯,隊伍就接近滿員,最多只能再塞進來一個人了……
靳雪雯很開心:“一言為定!”
兩人說完這件事后,約好了到時候再聯絡,然后就掛斷了電話。
江寒和夏雨菲母女一起吃完早餐后,就照常去上學。
整個上午,他都在用心研讀《數學物理方程》,等到中午放學時,就差不多把這本書讀透了。
中午吃完飯,江寒將夏雨菲哄睡之后,就拿出筆記本電腦,開始編寫程序。
他昨天就打算好了,做一個實用一點的OCR軟件。
界面部分可以放在以后再弄,今天先把最難搞的核心算法寫出來。
畢竟人工神經網絡,需要大量的時間訓練……
OCR的技術要點,關鍵在于識別算法。
打印字體的識別,比手寫識別簡單多了,畢竟計算機常用的字體,也就那么幾種。
江寒先從網絡上,將各種字體文件全都下載了一遍。
然后設計了一個程序,調用這些字體,生成了許多小圖片。
每張圖片都是一個漢字、數字、字母,或者特殊符號。
江寒使用數據擴充算法,將每張圖片略微變形、變色、位移、旋轉……
得到了數以十倍的樣本圖片。
并且,在生成圖片的同時,還順便生成了一一對應的標簽。
這樣江寒就擁有了海量的訓練數據。
接下來,他又綜合運用已經掌握的機器學習知識,設計了一個龐大的集成式機器學習算法。
其中不可避免地,用到了,也就是最新開發出來的“卷積神經網絡”。
為了最大限度地提高識別正確率,整個網絡包括了許多層級不同的子網絡。
每個圖塊輸入到網絡中后,先由第一級網絡進行粗分類。
將輸入的圖片,劃分成漢字、數字、英文字母、特殊符號這四個大類,然后分門別類地送入四個子網絡中。
如果第一級識別的結果是數字,那么就會送進一個類似于手寫數字識別的小型網絡中,進一步分類,看看屬于0~9中哪一個數字。
英文和特殊符號的處理,也和數字差不多,只是輸出結果的類別數,稍微大了那么一點點。
但如果經過第一級網絡的識別,判斷歸屬于漢字大類,那么處理起來就稍微復雜一些了。
江寒將5000個左右的常用漢字,劃分成了4000個子集。
然后使用自組織聚類神經網絡(SOM),設計了一個擁有4000個輸出的分類器。
少部分子集只含有一個元素,意味著分類到這些子集中的漢字,可以直接輸出識別結果。
大部分子集里含有2~30個元素,這意味著還需要送入第三級網絡,進一步進行分類。
如果該子集中的元素,只有2~3個,那么就送進一個單字分類器中,識別出最終結果。
多于3的話,就送入細分類網絡模塊(RNM),進一步分類。
循環進行前兩步,直到每個子集的元素個數都小于等于3,然后逐一送入單字分類器中,輸出最后的結果。
這就是這個集成網絡的整個工作流程,其中使用了數百個中型神經網絡。
這些神經網絡在設計上,基本大同小異,所以編程難度并不高。
麻煩的是,每個神經網絡,都得單獨訓練,而這需要大量的算力。
好在他早就在高新區地下的機房里,準備好了十幾臺高性能服務器。
江寒將程序設計出來,然后連同訓練數據,一起上傳到了那些服務器中。
十幾臺服務器全力運轉,差不多一兩天就能完成訓練。