迎大家關注騰訊云技術社區(qū)-博客園官方主頁,我們將持續(xù)在博客園為大家推薦技術精品文章哦~
作者:劉瀟龍
前言
首先需要說明,這里所說的數字識別不是手寫數字識別!
但凡對機器學習有所了解的人,相信看到數字識別的第一反應就是MNIST。MNIST是可以進行數字識別,但是那是手寫數字。我們現在要做的是要識別從九宮格圖片中提取出來的印刷體的數字。手寫數字集訓練出來的模型用來識別印刷體數字,顯然不太專業(yè)。而且手寫體跟印刷體相差不小,我們最看重的正確率問題不能保證。
本文從零開始做一遍數字識別,展示了數字識別的完整流程。從收集數據開始,到數據預處理,再到訓練KNN,最后進行數字識別。
我們一步一步來說。
數據收集
為了便于處理,我百度找到了10張下面這樣按照1-9-0順序排列的圖片,作為我們的初始數據集。
有的圖片可能本來除數字區(qū)域外,周圍空白部分比較多。為了便于處理,首先用windows自帶的畫圖軟件把圖片裁剪成上面這樣只包含數字區(qū)域的樣子。
這十張數據集基本涵蓋了印刷數字體的不同樣式、字體,而且顏色、背景甚至漸變方式都各不相同。
數據處理
顯然,我們第一步要做的就是上一節(jié)的內容,那就是把圖片中的數字分別提取出來。
訓練knn,還有其他任何有監(jiān)督的機器學習模型,不光要有樣本數據,還要有知道每一個樣本對應的標簽。這也是為什么我要選擇上面這樣按順序排列的數字圖片。
提取數字之后,我們可以對每一個數字的位置進行排序,然后根據位置信息可以知道每一個數字是幾。標簽也就由此生成了。
這一部分的內容可以分兩部分來說,第一部分就是提取數字,第二部分是提取數字之后的數據預處理。