如何做乙個手寫字元判別系統?(問題篇)

2021-10-08 21:36:29 字數 1565 閱讀 9814

手寫字元識別問題大家一定不陌生,例如mnist手寫數字識別,學深度學習的時候第乙個例項就是它,輸入的是手寫數字的,輸出的就是對應的數字。憑藉著海量的訓練資料以及複雜的網路結構,這個問題可以得到很好的結果。

那麼什麼是手寫字元判別呢?其實我也不知道,因為這個名字實我自己瞎編的(逃。。。好吧,其實問題是這樣的,現在我有乙個系統,輸入是使用者的手寫資料,輸出的是判斷結果,即輸入是不是系統想要的那個字元

如果支援手寫字元判別的話,使用者就可以通過手寫的形式來判斷自己對某個漢字的掌握程度了,對學習有很大的幫助啊有木有!(趕緊打個廣告, 想要學日語的朋友千萬別錯過哦,之後一定上線手寫判別功能,點一下星星就行了!!!)

那麼就以我的這個專案為例子,系統需要判斷使用者的手寫漢字是否和被遮住部分的漢字屬於同一字元(說人話就是你寫的是不是我要求的字)。那麼最直觀的思維就是構造乙個分類器,輸入是使用者的手寫資料,輸出是相對應的字元,再做乙個字元對比,相等就判對,否則判錯,是不是很簡單?那麼問題又來了,漢字的字符集至少也得有一萬以上,這樣訓練資料得有百萬級別了,作為乙個啥也不會的小白個人開發者,沒時間也沒錢,深度學習平台還是白嫖的谷歌colab(停!,肯定是沒辦法像商業公司和高校實驗室那樣調這種複雜的網路了,更何況這還是日語漢字字符集,公開的介面應該也沒有(如果有請務必告訴我)。可是又想要有商業公司那樣的準確率和效率,難道真的只能想桃子吃了嗎?

但是我又轉念一想,我只是要判斷輸入的字元是不是等於要求的字元,那麼直接砍掉中間的識別步驟,直接做比較不就完事了?不過問題又來了,系統儲存的是utf編碼的字元,而使用者輸入的是手寫的形式的字元,這兩個要怎麼比?不過這個問題也好解決,只要找到能把字元轉的方法不就好了嗎(雖然我還沒有找到,不過遲早能找到的,所以這裡就想當作存在這麼個方法,等以後再補上!)。

然後就是作比較了,基本思路是先將兩張圖縮放到同一尺寸,再設計乙個度量函式,能算出兩張的相似程度,然後再設計乙個閾值,相似度超過閾值則判斷為屬於同一字元。由於字元影象可以當作二值圖來處理,那可以直接計算兩個二值矩陣的歐式距離嗎?不行,同樣是乙個「一」字,如果僅僅是因為位置不一樣,那這兩個的距離就是2n(n為字元所佔的畫素數),也就是最大,即使它們兩個看起來就是一模一樣。

如果順著這個思路,那麼接下來能得出的方法自然就是作裁切了,將影象上下和左右裁切到剛好接觸到字元畫素,然後再一起縮放到同樣尺寸。

完美解決!?然而繼續順著這個思路,自然而然又能得出字跡不一樣會帶來怎樣的影響的問題。好吧,思路鏈應該就斷在這了,當作乙個坑先。

此外,基於特徵的方法似乎也是乙個坑,已知的有dct,影象hash等。。。

經過漫長的思考,系統的大致框圖就畫好了,之後就是慢慢地把坑填上就是了。。。

如何做乙個專案

早上上csdn瞧瞧,發現有位同學想在暑期做個論壇,想要點建議,相信有不少已經入門想有所提高的同學都有這個想法。那麼我就在此提幾點意見,大家可以討論討論。首先選專案,我覺得這位同學拿論壇入手是比較合適的,原因有這樣幾點 1 論壇的基本業務邏輯大家都很熟悉2 量不是很大,可以在兩個月內完成基本功能的實現...

如何做乙個直觀的監控系統

如果讓你做乙個監控,選擇監控哪些cpu選項?多核cpu閥值如何設定?負載應該體現的是乙個綜合值 a 對於計算密集型cpu使用率自然比較高,然而磁碟確很空閒,不免有些浪費 b 對於io密集型,當記憶體不夠,使用交換分割槽的時候,或者大量的io讀寫,導致讀寫延時超過20ms的以上,cpu阻塞嚴重,cpu...

如何做乙個快樂的人

人,要做乙個明白人。所謂明白人,既能努力改變環境,更能努力改變心境。改變環境靠聰明,改變心境靠智慧型。智慧型的人能悟出人生真諦,把握生活方向,知道自己的根本追求,不會為了一點瑣事而惱。開心的前提是愛心。所謂愛心,可理解為乙個人要有愛人之善心,也可理解為人要愛自己的心。通過修身養性,純潔心靈,隨時調控...