Contents ...
udn網路城邦
Rule-based 的手寫數字辨識,兩周就逼近九成辨識率了!
2026/08/10 04:43
瀏覽290
迴響0
推薦11
引用0

花了兩周的時間終於讓MNIST資料集中600個手寫數字樣本的較小目錄辨識率達到100%了!有點像先學會做基本題型的題目,也很像是先訓練好某種運動的基本動作!接下來當然就是投入實戰演練了!在MNIST資料集中的考題就是總共有42000張的0-9數字影像!

如上圖就是目前我的版本面對60042000樣本的辨識率!C辨識率是表示辨識完全正確可以獲得唯一的正解,也就是最終追求的目標!42000樣本的資料集已經達到88%了!Q辨識率是辨識過程中確實有得到正確字元合格的紀錄,只是不保證能做出唯一且正確的判斷!

所以我必須盡可能先Q辨識率逼近100%!這算是初選,如果正確答案初選就不過關當然接下來就沒戲唱了!從都是錯的答案中當然選不出對的答案!但是初步合格的門檻降低了每個樣本的候選答案就會增加!此時就要優化調整辨識多個可能答案的評比機制了,這就是我接下來要做的工作!

說實話,才兩周的時間就有這樣的成果讓我樂不可支!前兩天周末打籃球一直輸都不影響我的快樂心情!很想今天就再給自己多放一天榮譽假!其實在沒做這個研究之前,連我自己都認為這種變數很大的影像辨識應該比較適合用統計學為基礎的CNNDL等技術!想用Rule-based概念研發這種辨識幾乎是不可能的任務

但是顯然這些AI技術做出的實際辨識率並沒有那些廣告宣稱的那麼高,或是他們用那些方法做出來的模型太龐大沉重,無法在一般電腦上安裝軟體運作,所以目前需要手寫辨識的終端使用者還是常常找不到合適的軟體來用!也因此我才會硬著頭皮挑戰這個自己都刻意閃躲了超過十年的大難題

認真做了兩周之後覺得自己對這個議題越來越有頭緒了!我的研發工具軟體也建立得很完備了!如上就是批次大量辨識所有樣本之後的統計輸出,跟機器學習派不同的是,他們會反覆調整很多他們自己都不知道實際意義的參數,甚至讓電腦自行調整?只是盲目追求更高的辨識率而已!完全不想也不能理解辨識邏輯的!可以預期到某個辨識率就會碰到天花板,扶東就倒西,怎麼調整都上不去了!還無法知道原因加以改善!

但是我的這種批次分析的程式,會將不同錯誤形式的樣本拷貝到不同的子目錄中,讓我立即就可以掌握到辨識錯誤的分類樣本!這樣我就可以做精準的個案分析!找出錯誤原因加以修改或新增辨識程序。當然每一個新的變化都有可能牽一髮動全身,少數案例是救回來了,但是副作用太大卻讓更多案例變成錯的!所以必須馬上驗證新設計的整體成效,那就再跑一次統計了!好像研究新藥,效果不好的就不用,再找新藥。

此時就可以看出使用精簡演算法的效益價值了!如上圖所示,即使是重新辨識42000張的樣本,我的程式也只需要20.35秒!這只是使用我的一般規格老舊的i9電腦做的!完全不必使用GPU或任何額外硬體!這表示我可以很快的做頻繁的驗證與統計,所以研發速度與效率極高,時間與人力成本也非常低了!

目前的辨識率是88%,但只是花了兩周時間的初步成果!我希望可以逐步提升到95%甚至98%!如果能到95%就很接近可以實用化的標準了!如果我成功了,就表示會有一個非常輕量級可以輕鬆安裝在任何一般規格的電腦上運作的手寫數字辨識軟體了!目前看來成功機率是很大的!

我接下來的工作模式呢?就像上圖的對照一樣!右邊是原先版本的統計辨識率,左邊是剛剛修改了某一個條件之後的統計辨識率!我可以立即看出這個改變對於每一個數字的辨識率影響,如果整體影響是正面的當然就會保留,如果是負面的就先倒退回去重新考慮!我必須有這樣的工作環境才不會把複雜的系統搞亂,甚至崩潰!總是可以穩定的提升辨識率,過程中也會更精確深入的掌握辨識的邏輯與參數值!

因為我是依據異常的個案來修改辨識邏輯的,一般來說,我每改一個地方可能只會影響到42000樣本中的幾個到幾十個樣本的辨識結果,所以每次正面的辨識率提升大概就只有如上的萬分之幾!有如龜兔賽跑,前進的速度很慢,但是穩紮穩打確定只會前進!不會像機器學習一樣到了一個程度,辨識率就會開始停滯,甚至起起伏伏!希望接下來每天都可以推進個一趴左右!今天就已經達標了!從88.0到89.07了!

有誰推薦more

限會員,要發表迴響,請先登入