一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python實(shí)現(xiàn)識(shí)別手寫數(shù)字大綱

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

2021-01-09 00:47Hanpu_Liang Python

這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)識(shí)別手寫數(shù)字的大綱,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

寫在前面

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

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

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

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

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

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

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

整體思路

大綱

對(duì)圖片的預(yù)處理

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

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

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

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

圖像識(shí)別的算法處理

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

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

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

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

但是因?yàn)楦鞣N手寫差異,比如說6, 9, 8之類的沒有閉合,4上面閉合,所以會(huì)導(dǎo)致下面這種可能情況

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

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

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

對(duì)于這個(gè)分類,下面我就簡(jiǎn)單的講一下原理。

假設(shè)我們?cè)诙S平面上有兩個(gè)點(diǎn)A=(1,1)和B=(5,5),我現(xiàn)在再放一個(gè)點(diǎn)C=(2,2),那么請(qǐng)問,C點(diǎn)離哪一個(gè)更近?

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

因?yàn)檫@個(gè)點(diǎn)離A類的點(diǎn)更近一點(diǎn),所以它可能屬于A類。這就是結(jié)論。那么對(duì)于3維空間,A類是點(diǎn)(1,1,1)和B類是(5,5,5),那么對(duì)于點(diǎn)(2,2,2)肯定也是屬于A類。

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

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

難點(diǎn)

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

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

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

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

總結(jié)

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

原文鏈接:http://blog.csdn.net/hanpu_liang/article/details/78220774

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产成人无精品久久久久国语 | 久久不射网 | 成人免费公开视频 | 精品国产乱码久久久久久人妻 | 第一次破学生处破 | 无限在线观看视频大全免费高清 | 亚洲欧美激情日韩在线 | 国产未成女年一区二区 | 毛毛片在线| 久久久久久久久女黄 | 亚洲美色综合天天久久综合精品 | 9久热这里只有精品免费 | 亚洲性夜 | 日本色淫| 好看的亚洲视频 | 亚洲欧美国产另类视频 | 国产欧美日韩图片一区二区 | 日韩欧美国产一区 | 亚洲sss综合天堂久久久 | 亚洲精品久久久久久婷婷 | japonensis中国东北老人 | 四虎在线播放 | 久久热这里面只有精品 | 日本videos有奶水的hd | 亚洲热在线视频 | 肥胖老寡妇做性 | 高h全肉动漫在线观看免费 高h辣h双处全是肉军婚 | ai换脸杨幂被c在线观看 | a及毛片 | 四虎影视最新 | 狠狠干2017| 欧美日本一道高清免费3区 欧美人做人爱a全程免费 | 男人天堂网页 | 末发育xxxxx仙踪林 | 鬼吹灯之天星术免费观看 | 国产精品29页 | 国产美女做爰免费视频软件 | 午夜片神马影院福利 | 四虎影院的网址 | 欧美同性猛男野外gay免费 | 久久亚洲午夜牛牛影视 |