[心得] 以CNN實作台鐵驗證碼辨識

作者: jason860421 (jason)   2017-12-24 23:53:09
大家好~
前陣子期中考完很閒,就花了約一週的時間用CNN實作了台鐵驗證碼辨識(搭配Keras)
在版上有看到一些前輩實作時遇到的一些問題(如相黏的數字無法辨識)應該都有解決
但我想可能主要是因為我不是以切割圖片的方式去一個一個字辨識吧
驗證集是手動標記的約1000張,訓練集部分則是用自行模仿產生的約50000張
用自行產生的訓練集 訓練後的模型對驗證集辨識效果很好
單碼辨識率大約有98.84%
整體一次辨識成功率也有91%左右(有些字像6和9旋轉後容易誤判)
繼續訓練下去精準度會更高,不過我想這樣應該夠用了
不過現在還只能辨識固定6碼的驗證碼
5碼+6碼的部分目前有想法(可能加入RNN去做,或是加入空白字元讓CNN辨識)
等之後有空再去實作看看~
下面附上Github連結,今天寫了很詳盡的README放上去
有興趣的版友們可以看看或一起討論如何改進 :)
https://github.com/JasonLiTW/simple-railway-captcha-solver
作者: vi000246 (Vi)   2017-12-25 00:06:00
推原來還有自己產驗證碼這招 學習了可以先做個model預測是5碼還6碼 再做文字的辨識
作者: f496328mm (為什麼會流淚)   2017-12-25 00:09:00
推,另外提一點,真正要去辨識台鐵驗證碼時,會遇到驗證碼是js的問題,動態圖,不好抓,你動一次它就變一次
作者: alan23273850   2017-12-25 00:46:00
大推,不過我現在對自動訂票程序比較有興趣,之前有寫個App是真的可以自己loop的,但現在跑不動了,因為protocol有改變之前也有類似的:#1Q0cvuAM,某b大似乎很有心得
作者: liang1230 (小良)   2017-12-25 01:03:00
有重疊的或是旋轉改capsule會好很多Github上有keras的code你可以參考一下然後某b幾乎都在嘴砲啦 沒什麼參考價值
作者: vi000246 (Vi)   2017-12-25 01:55:00
爬蟲還好 我花兩天就做完了 驗證碼花了一個多月
作者: ckvir (ckvir)   2017-12-25 03:34:00
RNN 目的不是解決 input 是前後有關聯的問題嗎驗證碼是是單純隨機字元吧 用RNN 有什麼效果?另外產生訓練集的方式可以用GAN試試看 不確定效果好不好 但可以不用自己找規則來產生圖
作者: liang1230 (小良)   2017-12-25 05:43:00
Gan在這不會是一個好的解 要產生驗證碼的訓練集應該不難吧 另外rnn在這可以試試image2seq解解看 可以參考show and tell的架構試試
作者: smartree (阿路)   2017-12-25 15:24:00
好強!
作者: f496328mm (為什麼會流淚)   2017-12-25 18:41:00
這篇討論串都有講到關鍵點 蠻不錯的大致上看完 寫的蠻不錯的 很有幫助
作者: liang1230 (小良)   2017-12-26 18:06:00
GAN可以給condition啊 所以其實你可以取值,但是太廢功夫了 而且gan非常的難train training的時間又長 所以才不建議
作者: Kazimir (Kazimir)   2017-12-26 20:45:00
用gan來產資料在這個case可能有點太誇張 如果想用模型autoencoder類應該就ok了 不過我認為常規的數據增強就夠
作者: why702 (Glory Glory ManU )   2017-12-27 19:08:00
我也有做個訂票程式,目前成功機率大概8成,約10秒訂完票主要是先自己分割號碼,再丟進三層CNN算
作者: pht45616 (BrokenSword)   2017-12-28 16:27:00
感激不盡!!看了這篇對期末有了很多新想法,如果能實作出延伸或相關的內容,能不能和大大討論個或者交流呢?
作者: TakiDog (多奇狗)   2017-12-28 23:11:00
我都直接硬A 我先跪了 XD
作者: why702 (Glory Glory ManU )   2017-12-30 00:24:00
會有不能辨識黏在一起或是背景特別雜的時候,但我覺得成功率不低應該可以用了啦有想過用rcnn試試看,但是最近很懶
作者: p00o99o (YA!)   2017-12-30 01:04:00
用GAN會太難吧
作者: Kazimir (Kazimir)   2017-12-30 02:27:00
如果想用gan的話可以試試wgan-gp 應該會舒服一點剛剛寫完正在跑 看訓練過程的確比DCGAN穩定很多
作者: saito2190 (榛香超可愛der)   2016-01-01 18:20:00
自己產驗證碼練習好猛

Links booklink

Contact Us: admin [ a t ] ucptt.com