1. 程式人生 > >斯坦福機器學習公開課筆記(十五)--[應用]照片OCR技術

斯坦福機器學習公開課筆記(十五)--[應用]照片OCR技術

1、problem description and pipeline(問題描述和流水線)

OCRoptical character recognition的縮寫,翻譯過來就是光學字元辨識。照片中的OCR技術其實就是識別中照片中存在的字元,例如下面這幅圖:


關於過程,主要有以下幾個步驟:


首先是檢測文字,找到文字出現的區域,然後是對文字進行劃分變成一個個單一的字母,最後是對字母進行識別,附加功能是對識別出來的字母進行拼接,對得到的單詞進行拼寫檢查糾錯。也可以用流水線的方式表示:


2、sliding windows(滑動視窗)

滑動視窗是一種從影象中提取出特定物體的技術,上面的文字檢測使用的就是滑動視窗技術,這裡換一個例子,從圖片中檢測出行人:


為了檢測出行人,首先需要訓練一個模型來判斷什麼是行人,為此可以把標記好的行人的圖片和非行人的圖片放在一起訓練:


訓練好了模型,然後再用滑動視窗在影象上面掃描,判斷每個掃描區域內是否包含行人:


掃描時需要先指定視窗的大小,一般來說是先指定一個較小的視窗,在圖上掃描一遍之後再換一個較大的視窗進行掃描。最終就能把所有的行人掃描出來:


回到最早提出的文字檢測,通過滑動視窗掃描後的結果如下:


圖中白色區域就是有文字的地方,找出這些區域後,對區域中的文字進行分割,這時依然是採用滑動視窗的方法,只不過這裡不再是把字母當成正樣本,而是把分割區域當成正樣本:


3、getting lots of data:artificial data synthesis(獲取大量資料
-人工資料合成)

在上一講中我們知道如果模型的偏差值較小,訓練樣本越多意味著模型效果越好。不過有時弄到資料不是那麼簡單的,尤其是大量的資料。如果沒有足夠的資料來訓練,那麼就該人工創造出一些資料,例如我們可以把原來正常的圖片進行扭曲,就能得到新的資料,如果對於音訊,可以增加背景噪聲:


要注意的是如果加入無意義的噪聲和變換,那對於增加資料是沒有幫助的:


下面是關於獲取資料一些討論,例如必須要在偏差較小的前提下,在走入死衚衕時可以問問自己如何獲得10倍資料,也許會豁然開朗:


4、ceiling analysis:what part of the pipeline to work on next(上限分析
)

可以說,機器學習的過程就像一個流水線一樣由很多部分組成,顯然每個部分都具有一定的誤差,為了提高準確率,我們需要知道該對哪個部分進行進一步完善,這時就要用到上限分析方法,該方法依次假設流水線上的某個部分達到完美狀態,這樣輸出的資料將會是完美資料,那下一個部分獲取的是沒有誤差的完美資料,計算這個時候整個系統的準確率:


如上圖所示,文字識別中有四個部分組成,我們現在求出針對每個部分優化後的系統準確率,現在的問題是如何提高整個系統的準確率?從表中可以看到,假設我們優化了文字檢測這個部分,那麼準確率將會從72%增加到89%,如果我們優化字元分割這個部分,準確率只不過從89%提高到90%而已,如果優化了字元識別,準確率從90%提高到100%,相比之下,優化文字檢測帶來的提升最大,其次是字元識別。這樣分析得到的結果就是應該對文字檢測和字元識別進行優化。再舉一個人臉識別的例子:


可以看到,優化預處理(移去背景)帶來的準度率提升最高。

-------------------------------------弱弱的分割線---------------------------------------

這一講介紹了機器學習在日常生活中的應用-OCR技術,這個技術現在已經很常見了,很多路口識別車輛牌照的系統就是採用這個技術。作為機器學習十週課程的最後一講,很高興看到這裡回到了具體應用的層面,我覺得這才是機器學習的魅力所在,期待機器學習更美好的未來。感謝Andrew Ng教授,感謝Coursera