1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        怎樣用 MATLAB 識(shí)別圖片上的文字?

        共 1427字,需瀏覽 3分鐘

         ·

        2022-02-09 17:37

        去年自己做的一個(gè)小東西,現(xiàn)在看起來(lái)覺(jué)得沒(méi)那么難,而且完成了這個(gè)小項(xiàng)目之后,又學(xué)深入學(xué)習(xí)了一陣子,等有空再繼續(xù)改改。

        去年做的小項(xiàng)目大概是這樣的:因?yàn)閷W(xué)校的教務(wù)管理系統(tǒng)查分?jǐn)?shù)比較麻煩,需要自己時(shí)不時(shí)登錄去“輪詢”,比較麻煩。那時(shí)會(huì)一點(diǎn)爬蟲(chóng),剛好學(xué)了一些機(jī)器學(xué)習(xí)的算法。想著訓(xùn)練出一個(gè)神經(jīng)網(wǎng)絡(luò)識(shí)別教務(wù)系統(tǒng)的驗(yàn)證碼,然后讓代碼幫我隔5分鐘查一下成績(jī),有新的成績(jī)出了就發(fā)郵件給我。于是我開(kāi)始了。

        1、 驗(yàn)證碼預(yù)處理

        我們學(xué)校的教務(wù)系統(tǒng)驗(yàn)證碼長(zhǎng)這個(gè)樣,4個(gè)字符(英文小寫(xiě)字母加數(shù)字),左右傾斜,背景加了一些噪聲:



        第一步想到的是濾波,驗(yàn)證碼的噪聲不像椒鹽噪聲,更像高斯噪聲。我自己也寫(xiě)了個(gè)均值濾波器,效果也很不錯(cuò),對(duì)付這種比較簡(jiǎn)單的噪聲污染沒(méi)有太大問(wèn)題。

        在實(shí)際中,我直接調(diào)用了matlab的自帶濾波器,維納濾波。進(jìn)行灰度處理后直接交給維納濾波:

        濾除噪聲的效果不錯(cuò)。

        為了接下來(lái)的操作速度快一點(diǎn),我直接進(jìn)行了二值化操作,調(diào)整好閾值,二值化后得到:

        2、Character Segmentation(Partition)

        在實(shí)際的photo OCR當(dāng)中,字符分割是很難的,在NG的machine learning中提到了一點(diǎn),可以用sliding window的方法去實(shí)現(xiàn),在這里,我觀察了驗(yàn)證碼的特點(diǎn),其實(shí)驗(yàn)證碼當(dāng)中的字符都相對(duì)固定,所以我用最簡(jiǎn)單的方法分割圖像,當(dāng)然有時(shí)會(huì)偏差比較大。這也是可以改善的一點(diǎn)。我個(gè)人認(rèn)為利用圖論算法中的minimum cuts可以找到連接最弱的部分,然后進(jìn)行切割,這也是可行的。

        切割后的效果:

        3、 神經(jīng)網(wǎng)絡(luò)

        當(dāng)時(shí)只能說(shuō)是入門(mén)了神經(jīng)網(wǎng)絡(luò),學(xué)的是NG的課。直接用了一個(gè)全連接的前饋神經(jīng)網(wǎng)絡(luò),一共4層,input layer一共是260個(gè)神經(jīng)元,兩層hidden layer都是200個(gè)神經(jīng)元,output layer是36.

        雖然方法很笨,一開(kāi)始訓(xùn)練樣本也不多,我抓了100張驗(yàn)證碼,并手動(dòng)標(biāo)簽了,訓(xùn)練了一個(gè)初步的模型。然后我就直接用這個(gè)模型去識(shí)別,把正確識(shí)別的驗(yàn)證碼和對(duì)應(yīng)的字符保存起來(lái);把識(shí)別錯(cuò)誤的保存到另外一個(gè)文件夾。針對(duì)識(shí)別錯(cuò)誤的驗(yàn)證碼,我手動(dòng)標(biāo)簽,然后訓(xùn)練,重復(fù)這個(gè)過(guò)程。后面驗(yàn)證碼已經(jīng)接近1000張了。

        雖然方法很笨,但是效果很不錯(cuò)。經(jīng)過(guò)我?guī)状胃倪M(jìn)之后,在線識(shí)別100張,正確識(shí)別率基本在90%以上(90%~93%左右)

        其實(shí),利用CNN效果會(huì)更好。先抓取大量為標(biāo)簽的驗(yàn)證碼,先進(jìn)行預(yù)訓(xùn)練,再進(jìn)行監(jiān)督訓(xùn)練,效果也會(huì)好很多。

        當(dāng)時(shí)就是這樣,利用全連接網(wǎng)絡(luò)+L2 weight penalty,利用full-batch method 加 conjugate gradient訓(xùn)練了這個(gè)網(wǎng)絡(luò)。

        之后我學(xué)了Geoffrey E. Hinton的課程之后,進(jìn)一步了解了神經(jīng)網(wǎng)絡(luò),可以做的花樣就很多了。

        總結(jié)

        這就是訓(xùn)練集的一部分:

        標(biāo)簽:

        我租了騰訊云的服務(wù)器,學(xué)生優(yōu)惠,1元1個(gè)月。

        在考試月的時(shí)候完成了全部代碼,先在matlab完成了前期工作,然后用Python寫(xiě)了一遍,加上了爬蟲(chóng)的那一部分。 最后每次有成績(jī)都第一時(shí)間通知我:

        附上github傳送門(mén)

        [matlab版] mepeichun/Matlab_checkcode_verification

        [java版] mepeichun/Java_checkcode_verification

        [Python版] mepeichun/check_score_system

        寫(xiě)得很亂,因?yàn)槟嵌螘r(shí)間參加了好幾個(gè)比賽。。有空再改

        瀏覽 18
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            三级黄色片在线播放 | 国产一级性爱 | 黄片推荐 | 日韩三级伦理电影在线观看 | 人人草人人操 | 中文字幕无码韩 | 97人人操人人爱 | BBBBBBBBB成人免费毛片 | 国产一区电影在线观看 | 国产影视一区 |