[心得] 以CNN實作台鐵驗證碼辨識
2018/06更新:
後來更新完,已經支援五/六碼的驗證碼,還有英文字了。:)
詳細可以參考:https://github.com/JasonLiTW/simple-railway-captcha-solver
大家好~
前陣子期中考完很閒,就花了約一週的時間用CNN實作了台鐵驗證碼辨識(搭配Keras)
在版上有看到一些前輩實作時遇到的一些問題(如相黏的數字無法辨識)應該都有解決
但我想可能主要是因為我不是以切割圖片的方式去一個一個字辨識吧
驗證集是手動標記的約1000張,訓練集部分則是用自行模仿產生的約50000張
用自行產生的訓練集 訓練後的模型對驗證集辨識效果很好
單碼辨識率大約有98.84%
整體一次辨識成功率也有91%左右(有些字像6和9旋轉後容易誤判)
繼續訓練下去精準度會更高,不過我想這樣應該夠用了
不過現在還只能辨識固定6碼的驗證碼
5碼+6碼的部分目前有想法(可能加入RNN去做,或是加入空白字元讓CNN辨識)
等之後有空再去實作看看~
下面附上Github連結,今天寫了很詳盡的README放上去
有興趣的版友們可以看看或一起討論如何改進 :)
https://github.com/JasonLiTW/simple-railway-captcha-solver
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.165.33.6
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1514130793.A.2E1.html
推
12/25 00:06,
6年前
, 1F
12/25 00:06, 1F
→
12/25 00:07,
6年前
, 2F
12/25 00:07, 2F
→
12/25 00:08,
6年前
, 3F
12/25 00:08, 3F
有想過這個做法,最後沒辦法的話再試試XD
推
12/25 00:09,
6年前
, 4F
12/25 00:09, 4F
→
12/25 00:09,
6年前
, 5F
12/25 00:09, 5F
推
12/25 00:46,
6年前
, 6F
12/25 00:46, 6F
→
12/25 00:46,
6年前
, 7F
12/25 00:46, 7F
→
12/25 00:46,
6年前
, 8F
12/25 00:46, 8F
→
12/25 00:48,
6年前
, 9F
12/25 00:48, 9F
之後有空應該會寫看看自動訂票,把5碼的完成後再研究看看~~
推
12/25 01:03,
6年前
, 10F
12/25 01:03, 10F
→
12/25 01:03,
6年前
, 11F
12/25 01:03, 11F
→
12/25 01:05,
6年前
, 12F
12/25 01:05, 12F
Capsule network查了一下覺得很有趣,之後來玩看看,謝謝大大的關鍵字:)
→
12/25 01:55,
6年前
, 13F
12/25 01:55, 13F
→
12/25 03:34,
6年前
, 14F
12/25 03:34, 14F
→
12/25 03:34,
6年前
, 15F
12/25 03:34, 15F
因為不確定圖上的數字個數,如果把CNN取得的特徵按文字的順序(由左至右)
輸入進LSTM之類的RNN Layer,再輸出到全連接層,
我想應該是可以做到按順序去預測數字吧?
不過中間空白的部分還不太確定要怎麼處理 假日研究一下,實作完再丟Github XD
→
12/25 03:39,
6年前
, 16F
12/25 03:39, 16F
→
12/25 03:39,
6年前
, 17F
12/25 03:39, 17F
GAN對我是一個新名詞XD,看起來挺有趣,研究一下之後先從Mnist開始做看看好了
→
12/25 05:43,
6年前
, 18F
12/25 05:43, 18F
→
12/25 05:43,
6年前
, 19F
12/25 05:43, 19F
→
12/25 05:43,
6年前
, 20F
12/25 05:43, 20F
後來想到GAN雖然有辦法產生驗證碼圖,但是沒有辦法標記答案上去,所以應該也用不著
show and tell 拿去google有看到一篇google的paper,等一下來看看他的架構
推
12/25 15:24,
6年前
, 21F
12/25 15:24, 21F
推
12/25 18:41,
6年前
, 22F
12/25 18:41, 22F
推
12/25 23:07,
6年前
, 23F
12/25 23:07, 23F
謝謝:)
→
12/26 18:06,
6年前
, 24F
12/26 18:06, 24F
→
12/26 18:06,
6年前
, 25F
12/26 18:06, 25F
→
12/26 18:06,
6年前
, 26F
12/26 18:06, 26F
原來如此,GAN我還在研究架構中,見笑了XD
※ 編輯: jason860421 (36.233.146.211), 12/26/2017 19:20:08
推
12/26 20:45,
6年前
, 27F
12/26 20:45, 27F
推
12/26 20:48,
6年前
, 28F
12/26 20:48, 28F
大概了解,不過可能還是會試試看用GAN,因為有趣XD
推
12/27 19:08,
6年前
, 29F
12/27 19:08, 29F
→
12/27 19:09,
6年前
, 30F
12/27 19:09, 30F
分割好像還是會有不能辨識黏在一起的問題嗎?
推
12/28 16:27,
6年前
, 31F
12/28 16:27, 31F
→
12/28 16:27,
6年前
, 32F
12/28 16:27, 32F
可以站內信跟我討論呀:)
推
12/28 23:11,
6年前
, 33F
12/28 23:11, 33F
※ 編輯: jason860421 (123.50.42.131), 12/29/2017 01:56:00
推
12/30 00:24,
6年前
, 34F
12/30 00:24, 34F
→
12/30 00:24,
6年前
, 35F
12/30 00:24, 35F
→
12/30 00:25,
6年前
, 36F
12/30 00:25, 36F
→
12/30 00:25,
6年前
, 37F
12/30 00:25, 37F
推
12/30 01:04,
6年前
, 38F
12/30 01:04, 38F
推
12/30 02:27,
6年前
, 39F
12/30 02:27, 39F
→
12/30 02:31,
6年前
, 40F
12/30 02:31, 40F
推
01/01 18:20,
7年前
, 41F
01/01 18:20, 41F
※ 編輯: jason860421 (36.235.66.128), 06/07/2018 03:17:04
推
06/19 17:39,
7年前
, 42F
06/19 17:39, 42F
推
07/28 00:39,
6年前
, 43F
07/28 00:39, 43F
推
04/08 16:02,
5年前
, 44F
04/08 16:02, 44F