此類識別方法就是流程化作業,基本不太需要在編程上思考太多。
識別步驟如下:
下載一定數量的目標驗證碼圖片,數量根據驗證圖片的複雜程度而定
準備好一套標準的CNN圖像分類的項目模板,並做好相關的功課
對項目模板進行簡單的參數調整,以適配當前問題的圖片尺寸
將圖像輸入CNN,對輸出的結果和先驗標記的類型做誤差對比
不斷迭代生成模型
由Google主推的深度學習框架tensorflow的入門文檔裡面就介紹了分別用矩陣回歸和CNN神經網絡對手寫數字識別的方法。
當然,關於如何獲取帶標記的數據,目前也有比較便宜的獲取渠道,直接在網上搜索「打碼平臺」後,可發現有許多提供 「人工智慧」領域的「人工」打碼服務的服務商,並且大部分都有明碼標價。對於圖片驗證碼,基本上是幾分錢一張標記圖。
此類識別方法仍然是基於深度學習這種通用方法來做的,只是我們可以將一些複雜問題進行適當的簡化,這個思想有點類似於「降維」處理的意思。
理論上,利用深度學習能對絕大多數的線性或者非線性問題實現非常好的擬合。
雖然問題越複雜、數據需求量越大的現狀是無法避免的,但是我們可以做一些人為的自動化工作來達到目標。
比如像下圖中的驗證碼,無論它們的色彩、字體及幹擾項如何變化,字符之間容易分割的事實是無法被改變的。也就是說,此類驗證碼可以很容易將一個本來要判定N位字符串的問題簡化為「判定1位字符,然後將N個這樣的圖片再組合起來」。這樣網絡的複雜度可以大大的簡化,訓練所需要的樣本數量及訓練時長都會大量減少。
如果驗證碼圖片可以從N維「降維」到1維,並且字符的字體單一(以下圖為例),那麼問題就更簡單了:只需為每個字符分類準備一張圖片即可。例如你的驗證碼範圍是[0,9],則只需要從下載的圖片集中對0~9這幾個數字每個標記一張即可,然後就是使用一些普通的數據增強技術:貼圖,綻放,上下自由截取,隨機噪點等等,可以生成無限多的數據集了。當然,這些全部是由程序自動化完成。