最後一章內容,主要是OCR的實例,不少都是和經驗或者實際應用有關;看完了,總之,有始有終,繼續加油!!算法
1、圖像識別(店名識別)的步驟:網絡
圖像文字識別應用所做的事是,從一張給定的圖片中識別文字。這比從一份掃描文檔中
識別文字要複雜的多。性能
爲了完成這樣的工做,須要採起以下步驟:
1.文字偵測(Text detection)——將圖片上的文字與其餘環境對象分離開來
2.字符切分(Character segmentation)——將文字分割成一個個單一的字符
3.字符分類(Character classification)——肯定每個字符是什麼 字體
能夠用任務流程圖來表達這個問題,每一項任務能夠由一個單獨的小隊來負責解決:大數據
2、滑動窗口優化
滑動窗口是一項用來從圖像中抽取對象的技術。假使咱們須要在一張圖片中識別行人,
首先要作的是用許多固定尺寸的圖片來訓練一個可以準確識別行人的模型。而後咱們用以前
訓練識別行人的模型時所採用的圖片尺寸在咱們要進行行人識別的圖片上進行剪裁,而後將
剪裁獲得的切片交給模型,讓模型判斷是否爲行人,而後在圖片上滑動剪裁區域從新進行剪
裁,將新剪裁的切片也交給模型進行判斷,如此循環直至將圖片所有檢測完。spa
一旦完成後,咱們按比例放大剪裁的區域,再以新的尺寸對圖片進行剪裁,將新剪裁的
切片按比例縮小至模型所採納的尺寸,交給模型進行判斷,如此循環。3d
滑動窗口技術也被用於文字識別,首先訓練模型可以區分字符與非字符,而後,運用滑
動窗口技術識別字符,一旦完成了字符的識別,咱們將識別得出的區域進行一些擴展,而後
將重疊的區域進行合併。接着咱們以寬高比做爲過濾條件,過濾掉高度比寬度更大的區域
(認爲單詞的長度一般比高度要大)。下圖中綠色的區域是通過這些步驟後被認爲是文字的區域,而紅色的區域是被忽略的。component
以上即是文字偵測階段。 下一步是訓練一個模型來完成將文字分割成一個個字符的任
務,須要的訓練集由單個字符的圖片和兩個相連字符之間的圖片來訓練模型。對象
模型訓練完後,咱們仍然是使用滑動窗口技術來進行字符識別。
以上即是字符切分階段。 最後一個階段是字符分類階段,利用神經網絡、支持向量機
或者邏輯迴歸算法訓練一個分類器便可。
3、獲取大量數據和人工合成數據集(這裏主要指字母識別中的數據集)的兩種方法:
一、沒有已有樣本:一般有不少字體庫,咱們能夠採集同一個字符的不一樣種類字體,而後將這些字符加上不一樣的隨機背景。
二、少許已有樣本:使用已有的樣本,選取一個真實的樣本,而後添加將此樣本扭曲、旋轉(人工變形)的數據,以此來擴大數據集。
注:在決定擴大數據集以前須要考慮的問題:
① 須要先有一個低誤差的分類器,若是沒有,能夠經過增大特徵數或者在神經網絡中增大隱藏層單元數來解決
② 首先估計增長樣本須要的工做量
有關得到更多數據的幾種方法:
1.人工數據合成
2.手動收集、標記數據
3.衆包
4、上限分析
回到咱們的文字識別應用中,咱們的流程圖以下:
流程圖中每一部分的輸出都是下一部分的輸入,上限分析中,咱們選取一部分,手工提
供100%正確的輸出結果,而後看應用的總體效果提高了多少。
總結一下上面的意思,即經過人工干預,使某一個component的準確率人工達到100%,再使用這些數據訓練,若是這一component的變化致使總體系統的系統變得很好,那麼說明這個component值得花時間優化。
反之,咱們將某一component達到100%,系統性能仍沒有提高不少,則說明這一component不值得咱們花費精力改進。