這是一個圖片字符型驗證碼識別平臺桐玻;
本文主要:
一篙挽、簡單介紹圖片驗證碼識別平臺;
二镊靴、介紹訓練模型(識別圖片驗證碼) :詳細介紹從獲取驗證碼原始數據铣卡、打標簽、特殊處理到訓練出模型的過程偏竟,解釋什么是訓練煮落;
三、平臺工作原理:介紹平臺對圖片(驗證碼)的處理過程踊谋;
一蝉仇、簡單介紹圖片驗證碼識別平臺:
(1)一個圖片驗證碼識別平臺,提供接口殖蚕,接收base64編碼圖片轿衔,識別,返回結果睦疫;
(2)基于卷積神經網絡( Convolutional Neural Network, CNN )害驹;
(3)Python語言編寫;
(4)基于Tensorflow框架蛤育;
(5)運行于Gunicorn服務器裙秋;
(6)示意圖:
解釋:圖片驗證碼經base64編碼后,發(fā)送到驗證碼識別平臺(PCP)缨伊,平臺返回識別結果摘刑;
二、訓練模型:
1刻坊、獲取原始數據
即是到目標網站獲取足夠多需要識別的驗證碼圖片枷恕,用于接下來的訓練;
2谭胚、對圖片驗證碼打標簽(有監(jiān)督學習)
對獲取到的大量原始驗證碼圖片需要正確標記:每個圖片驗證碼對應的正確字符徐块;標記完后還需要核對,確保正確灾而,否則會非常影響訓練的準確性胡控;
這一步最耗費時間和精力;
目前打標簽的過程:
(1)寫一段代碼旁趟,使用現(xiàn)有的OCR庫昼激,對一部分圖片(如1000張)進行初次識別;
(2)然后進行人工修改、打標簽橙困;
(3)最后人工核對瞧掺;得到了1000張正確打好標簽的驗證碼圖片;
(4)重復(1)~(3)步凡傅,如辟狈,得到了2000張正確打好標簽的驗證碼圖片;——當然夏跷,可以一直如此重復哼转,直到得到所需要的圖片數量;
(5)另:把此2000張圖片進行訓練槽华,如準確率能有0.7以上释簿,那么可用此訓練的模型識別原始(未打標簽)的圖片——即是替換(1),OCR的成功率非常低硼莽;
(6)得到所需要的打好標簽的圖片數量,如1萬張煮纵;
3懂鸵、進行模型訓練
把標記好的圖片驗證碼輸入寫好的AI程序中,進行訓練行疏;
一般要求準確率達到0.98匆光;
對于訓練來說,理想的情況是:輸入的數據越多(打好標簽的圖片)酿联、訓練的次數越少终息,如此得到的模型越好,可以用下面的公式表達:
acc = Ax + By
A贞让、B: 權重周崭;x: 圖片;y: 次數喳张;acc: 準確率续镇;
上面的1~3步,就是訓練模型的一般過程销部;
存在問題:需要大量的打好標簽的圖片摸航,耗時費力;
所以舅桩,一般采用針對不同的驗證碼圖片進行特殊處理的方法:切割大法酱虎;
切割法操作如下(大致思路,因為每個驗證碼特征不同擂涛,處理方法會不同):
如有驗證碼圖片:
同一種驗證碼读串,模式都會是固定的,針對上面的驗證碼可以這樣切割:
得到:
然后合成一張圖片:
最后,訓練爹土、識別都是針對:
其實甥雕,就是將擁有特殊、多字符的驗證碼圖片轉為簡單胀茵、少字符的圖片社露;
如此一來:
只需要訓練識別0-9數字;
打標簽數量大大減少琼娘,300張峭弟;
打標簽難度也大大減少,僅需要輸入數字脱拼;
再如瞒瘸,此種驗證碼:
直接切割4個單獨字符的圖片:
然后,訓練熄浓、識別都是針對單個字符圖片進行情臭,難度也大大降低,準確率大大提高赌蔑;
打標簽的數量也大大減少俯在;
一些數據:由于此圖片,底色有絕對的干擾娃惯,測試中發(fā)現(xiàn)跷乐,直接訓練的話,3000張圖片進行訓練趾浅,準確率也只有區(qū)區(qū)0.1%愕提;
利用切割方法,只用1000張圖片皿哨,切割得到4000張單獨字符的圖片浅侨,訓練8100次,準確率即可達到0.995证膨;
簡單解釋一下什么是訓練仗颈,這是一個數學問題:
先看基本的函數,如:y = 2x + 1椎例,輸入x=1挨决,輸出y=3;這是已經知道函數對應關系f = 2x + 1订歪;
再看高階一點的數學脖祈,如:已知 y = 2x + 1,y = 3刷晋,求x盖高;從輸出慎陵,反推輸入,同樣也是知道函數對應關系f = 2x + 1喻奥;
再進階一步席纽,就接觸到機器學習了,函數對應關系f 撞蚕,我們不知道润梯,但是知道了x、y的值(x就是驗證碼圖片甥厦、y就是對應的標簽)纺铭,求對應關系f;
如果是簡單的刀疙,已知函數f的形式舶赔,如:y = ax + b;只要兩組(x, y)即可求得a谦秧、b竟纳;從而求得f;
如果是完全不知道函數的形式疚鲤,那么就需要構造函數锥累,f 可能是 2x + 1、3x + 3石咬、x^2 + 1等等無數種情況;僅有兩組(x, y)是無法得出f的卖哎;但是如果有大量的(x, y)鬼悠,就能通過“逼近計算”方法,不斷調整公式權重亏娜,近似求得函數f —— 這就是訓練過程焕窝;
三、平臺工作原理:
簡單介紹平臺對圖片(驗證碼)的處理過程维贺;
示意圖:
解釋:
圖片驗證碼通過base64編碼后它掂,通過提供的API發(fā)送到驗證碼識別平臺;
平臺獲取圖片的寬高溯泣,然后進入判別器1:根據針對此驗證碼配置的屬性虐秋,決定是否要切割圖片(若要切割,切割的尺寸是多大)垃沦;
如果發(fā)現(xiàn)有兩種不同的驗證碼尺寸一樣客给,那么需要進入判別器2:根據圖片特征對圖片進行分類;
經過判別器1和判別器2肢簿,可以確定此圖片驗證碼對應的是哪個訓練模型(用于最終的識別)靶剑、是否要切割蜻拨、切割成多大;
最后桩引,把圖片切割成預定的大小缎讼,選擇對應的模型,進行識別坑匠,返回結果血崭;
以上就是利用AI識別驗證碼的簡單介紹;
完畢笛辟;