欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實現(xiàn)識別手寫數(shù)字大綱

 更新時間:2018年01月29日 11:09:54   作者:Hanpu_Liang  
這篇文章主要為大家詳細(xì)介紹了Python實現(xiàn)識別手寫數(shù)字的大綱,具有一定的參考價值,感興趣的小伙伴們可以參考一下

寫在前面

其實我之前寫過一個簡單的識別手寫數(shù)字的程序,但是因為邏輯比較簡單,而且要求比較嚴(yán)苛,是在50x50大小像素的白底圖上手寫黑色數(shù)字,并且給的訓(xùn)練材料也不夠多,導(dǎo)致準(zhǔn)確率只能五五開。所以這一次準(zhǔn)備寫一個加強(qiáng)升級版的,借此來提升我對Python處理文件與圖片的能力。

這次準(zhǔn)備加強(qiáng)難度:

  • 被識別圖片可以是任意大?。?/li>
  • 不一定是白底圖,只要數(shù)字顏色是黑色,周圍環(huán)境是淺色就行;
  • 加強(qiáng)識別手寫數(shù)字的邏輯,提升準(zhǔn)確率。

因為我還沒開始正式寫,并且最近專業(yè)課程學(xué)習(xí)也比較緊迫,所以可能更新的比較慢。不過放心,代碼質(zhì)量肯定是不會下降的,我會盡我所能寫的邏輯明確、通俗易懂點。

所以這次面向的人群是擁有一定Python基礎(chǔ),對數(shù)學(xué)算發(fā)有一點了解(識別圖像的算法嘛)的人。

但畢竟我不是專業(yè)的,也沒有看那么多論文,所以我這里運用的算法僅僅是我一個粗淺的想法,只是為了練手而已。如果和實際應(yīng)用脫節(jié),還望莫怪。

當(dāng)然,如果諸位有什么比較好的想法,可以在下方評論或者私信我,我們可以探討一下,相互進(jìn)步。

整體思路

大綱

對圖片的預(yù)處理

在最開始的時候,我們假設(shè)只擁有一個訓(xùn)練庫,里面是從0到9的手寫數(shù)字圖案若干組。

所以我們首先應(yīng)該將這些圖案讀入程序中,然后運用某種方式保存好,用來后面識別圖片。

這里的圖案我們假設(shè)是大小不一的,里面手寫的數(shù)字也是有大有小。所以我們可以將包住手寫數(shù)字圖案的最小矩形給裁剪出來,然后將裁剪出來的圖案統(tǒng)一給拉伸成相同大小的圖案。

以上操作得出一個矩陣,這個矩陣的值是圖案的灰度值。對于訓(xùn)練用的圖片和被檢測的圖片我們都是這樣處理。

圖像識別的算法處理

我這里想用兩個方法來讓數(shù)字識別準(zhǔn)確點:

  • 識別所寫數(shù)字的“洞數(shù)”;
  • 將圖片轉(zhuǎn)為1xn的向量,然后根據(jù)根據(jù)訓(xùn)練圖片分出的類對被識別圖片圖片進(jìn)行分類。

洞數(shù)就是某個數(shù)字是否有閉合的曲線,比如說7沒有洞,6有一個洞,8有兩個洞。所以我們根據(jù)洞數(shù)可以分成以下三類

0洞:1, 2, 3, 4, 5, 7
1洞:6, 9, 0
2洞:8

但是因為各種手寫差異,比如說6, 9, 8之類的沒有閉合,4上面閉合,所以會導(dǎo)致下面這種可能情況

0洞:1, 2, 3, 4, 5, 6, 7, 9
1洞:6, 8, 9, 0
2洞:8

雖然說這樣分類0洞占大多數(shù),但是聊勝于無。

對于將圖片轉(zhuǎn)為向量的意思就是將圖片原本的二維矩陣展開稱為一維向量。這個用numpy的函數(shù)可以可以很簡單的實現(xiàn)。

對于這個分類,下面我就簡單的講一下原理。

假設(shè)我們在二維平面上有兩個點A=(1,1)和B=(5,5),我現(xiàn)在再放一個點C=(2,2),那么請問,C點離哪一個更近?

學(xué)過初中數(shù)學(xué)的都會知道肯定是離A點更近。所以我們換一種說法,我們現(xiàn)在有兩個類A和B,A類中包括了點(1,1),B類中包括了點(5,5),所以對于點(2,2),它可能屬于哪一類?

因為這個點離A類的點更近一點,所以它可能屬于A類。這就是結(jié)論。那么對于3維空間,A類是點(1,1,1)和B類是(5,5,5),那么對于點(2,2,2)肯定也是屬于A類。

可以看出,我們這里是將兩個點的距離來作為判斷屬于哪一類的標(biāo)準(zhǔn)。那么對于我們將圖片拉成的1xn維向量,他實際上投影到n維空間上就是一個點,所以我們將訓(xùn)練向量分成10類,分別代表十個數(shù)字,那么被識別數(shù)字靠近哪一個類,那說明它有可能屬于這一個類。

那么我們這里可以假設(shè)對于被識別向量,列出距離他最近的前十個向量分別屬于哪一類別,然后根據(jù)名次加上一個權(quán)重,并計算出一個值。該值代表了可能是屬于哪一個類,因此這就是我們得出的最終的一個結(jié)果——被識別手寫數(shù)字圖片的值。

難點

保存已訓(xùn)練圖片的向量。這一條我想就直接保存在csv文件中,每一次運算時先判斷是否有新的訓(xùn)練圖片加入,如果有,則把新的圖片向量也存入csv文件中。若沒有,則直接讀取所有向量保存在一個大矩陣中用于計算。

將手寫數(shù)字從背景中分離。因為我這里令手寫數(shù)字為黑色(灰度值為0),其他背景色盡量為,所以就令灰度值大于某個界限(如50)的點全部為255(白色),其余不變。這樣子只要非255,那就是手寫數(shù)字的點。

識別手寫數(shù)字的洞。這個有算法,搞過程序設(shè)計競賽的應(yīng)該會了解。具體我就不細(xì)講了,大概就是利用遞歸之類的去尋找。

求向量距離。這個更簡單了,求解每一個訓(xùn)練向量與識別向量的距離就行,只不過當(dāng)訓(xùn)練向量比較大的時候可能比較慢。

總結(jié)

以上就是全部思路,如果諸位有更好的想法,歡迎評論/私信我,讓我們一起相互學(xué)習(xí)進(jìn)步,謝謝。

相關(guān)文章

  • Python GAE、Django導(dǎo)出Excel的方法

    Python GAE、Django導(dǎo)出Excel的方法

    在Python中操作Excel的方法可以通過COM,最常用的跨平臺的方法是使用pyExcelerator,pyExcelerator的使用方法可以參考limodou的《使用pyExcelerator來讀寫Excel文件》。
    2008-11-11
  • Python編寫memcached啟動腳本代碼實例

    Python編寫memcached啟動腳本代碼實例

    這篇文章主要介紹了Python編寫memcached啟動腳本代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • Python中多返回值的應(yīng)用場景

    Python中多返回值的應(yīng)用場景

    Python 是一種非常靈活的編程語言,它允許函數(shù)返回多個值,本文主要介紹了Python中多返回值的應(yīng)用場景,具有一定的參考價值,感興趣的可以了解一下
    2024-06-06
  • wxPython電子表格功能wx.grid實例教程

    wxPython電子表格功能wx.grid實例教程

    這篇文章主要介紹了wxPython電子表格功能wx.grid實例教程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Python及Django框架生成二維碼的方法分析

    Python及Django框架生成二維碼的方法分析

    這篇文章主要介紹了Python及Django框架生成二維碼的方法,結(jié)合實例形式分析了Python及Django框架使用qrcode包實現(xiàn)二維碼生成功能的相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • Python中正則表達(dá)式對單個字符,多個字符和匹配邊界等使用

    Python中正則表達(dá)式對單個字符,多個字符和匹配邊界等使用

    這篇文章主要介紹了Python中正則表達(dá)式對單個字符,多個字符和匹配邊界等使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • wxPython實現(xiàn)窗口用圖片做背景

    wxPython實現(xiàn)窗口用圖片做背景

    這篇文章主要為大家詳細(xì)介紹了wxPython實現(xiàn)窗口用圖片做背景,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • opencv實現(xiàn)礦石圖片檢測礦石數(shù)量

    opencv實現(xiàn)礦石圖片檢測礦石數(shù)量

    這篇文章主要為大家詳細(xì)介紹了opencv實現(xiàn)礦石圖片檢測礦石數(shù)量,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • 使用python獲取(宜賓市地震信息)地震信息

    使用python獲取(宜賓市地震信息)地震信息

    今天這個項目用到了Python的爬蟲知識,沒有用大家討厭的正則表達(dá)式,而是用一種新的方式解析庫,實現(xiàn)對HTML的解析和提取信息,最后又用到前面項目用過的wxpy庫,實現(xiàn)了全部功能
    2019-06-06
  • Python線程之認(rèn)識線程安全?

    Python線程之認(rèn)識線程安全?

    這篇文章主要介紹了Python線程之認(rèn)識線程安全,線程安全,名字就非常直接,在多線程情況下是安全的,多線程操作上的安全,下面學(xué)習(xí)線程安全的文章詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-02-02

最新評論