1. 程式人生 > >ng機器學習視頻筆記(十六) ——從圖像處理談機器學習項目流程

ng機器學習視頻筆記(十六) ——從圖像處理談機器學習項目流程

公眾號 written 字符串分割 評估 jpg 關註 改進 視頻 pip

ng機器學習視頻筆記(十六)

——從圖像處理談機器學習項目流程

(轉載請附上本文鏈接——linhxx)

一、概述

這裏簡單討論圖像處理的機器學習過程,主要討論的是機器學習的項目流程。采用的業務示例是OCR(photo optical character recognition,照片光學字符識別),通過一張照片,識別出上面所有帶字符的內容。

二、機器學習流水線

對於一個業務項目,通常機器學習是其中一部分的內容,對於整個項目而言,相當於一個流水線(pipeline)。

對於OCR,主要流水線為:1-獲取照片->2-字符串區域識別->3-字符串分割->4字符辨認->5-輸出結果。其中2~4步都是對結果非常重要的步驟。如下圖所示:

技術分享圖片

三、滑動窗口

滑動窗口(sliding windows),通過指定大小的方框,從圖片左上角開始,掃描全圖,旨在最終識別出需要的內容,如字符串,並用明顯的顏色標出。

技術分享圖片

1、行人識別

下面先討論行人識別。

1)監督學習

下面進行監督學習,指定圖像的像素是82*36,給出一些這樣大小的圖片且裏面有行人的,標記為分類結果是1;再給一些這樣大小的圖片,裏面沒有行人,分類結果標記為0。將這些數據進行監督學習,讓機器懂得判斷82*36像素的圖片,是否有行人。

技術分享圖片

2)滑動窗口

首先,用82*36像素,從圖像左上角開始,掃描全圖,每次右移的位置是一個參數,這個參數設置太小雖然很精確,但是會很慢,通常設置為2~5像素。到達最右邊後,會回到最左邊,並稍稍往下,再進行第二行的掃描,同樣,往下的像素也是一個參數。

接著,用比82*36大一些的像素,進行掃描全圖(大多少同樣是參數設定)。但是這裏要註意的是,每次取到一塊圖,要壓縮到82*36像素,給前面步驟訓練好的分類器進行判別。

技術分享圖片

2、字符識別

1)監督學習

同樣,選一些有字符的標記為1,沒字符的標記為0,進行監督學習。

技術分享圖片

2)滑動窗口

同樣使用滑動窗口進行檢測,區別之處在於,把識別的結果重新生成一幅灰白黑圖,顏色越白表示該區域是字符的概率越大,白色表示肯定是字符,黑色表示肯定不是,灰色的深淺表示可能性(如果旁邊還有白色,則可能判定為也是字符)。

接著,輸出結果乘以一個膨脹算子(expand operator),這樣可以放大結果,讓白色更白,黑色更黑,以便於識別結果。

最後再拋棄一些不規則的矩形,剩下的就認為是識別到的字符。

技術分享圖片

3、字符分割

字符分割,也用到滑動窗口技術,但是這裏稱為一維滑動窗口,因為固定了長寬,就一次性掃描一行內容(每次移動的邊界還是需要設定的參數)。

這裏的監督學習,用到的是學習判斷圖的正中間是否是字符的邊界,對於是邊界的則畫上一條豎線,標記分割完成。如下圖所示:

技術分享圖片

四、人工數據合成

對於機器學習,如果數據不夠多,可以考慮使用人工數據合成(artificial data synthesis),即可以理解為“造數據”。但是,造數據也不是隨意造的,主要做的工作有以下幾點。

1、取各種字體

字體多種多樣,在一些網站有開源的字體,裏面每個字符都有大量的樣式,這就需要對機器進行訓練,以便其識別到各種樣式的字體,如下圖所示:

技術分享圖片

2、字符扭曲

由於照片上的字未必是方方正正的,因此字符扭曲很重要,讓機器識別出各種扭曲的字符,其也是正確的字符,這樣有助於提高識別率,如下圖所示:

技術分享圖片

3、註意事項

這裏的造數據,要考慮到造數據的有效性,即需要的是模擬出各種有可能的情況,而不是僅僅加入一些無意義的噪聲。例如下圖的第一個內容,字符扭曲,對於識別就有好處;而第二個內容,只是對字符加入一些隨機的小噪聲,這樣對於識別就沒有太大用處。

技術分享圖片

五、上限分析

當一個機器學習流水線項目完成,評估後發現正確率不符合預期要求,此時需要考慮對流水線的內容進行優化。但是,流水線的步驟繁多,不可能全盤優化,因此,就需要用到上限分析(ceiling analysis)的分析方案。

上限分析類似生物學到的控制變量法,通過逐個控制流水線的不確定因素,來衡量如果將某個步驟優化到100%精確度,對於整個系統精確度的提升會有多少。

1、串行流水線

考慮到串行流水線,假設最終的算法結果的精確度是72%。

做法:

1)對於流水線的每個步驟,從第一個步驟開始,不使用算法,而是直接人工給出第一步應該有的、100%正確的結果,此時再看整個系統的精確度。通過計算此時系統精確度與原始系統精確度的差,可以判斷出如果將第一步優化到完美,對整個系統精確度的提升能有多少。

註意:衡量精確度要用同樣的計算方式。

2)接著,在第一步的基礎上,將第二個步驟也直接給出應有的結果,查看此時的精確度,減去第一步的系統精確度,得出將第二步優化到最佳,對系統精確度的提升的貢獻度。

3)以此類推,直到計算出每一步的精確度的改進範圍,將最需要改進的步驟著重進行優化改進。

如下圖所示:

技術分享圖片

2、並行流水線

對於機器學習,某些步驟需要並行完成,此時同樣可以計算精確度,而且用的方式和串行完全一樣,不贅述,如下圖所示:

技術分享圖片

六、總結

技術分享圖片

這裏是對整個視頻課程的總結,在視頻課程中,主要分為監督學習、無監督學習、機器學習應用、機器學習技巧四個部分內容,在學習過程中,我認為最有難度的部分,在於BP算法、SVM算法這兩個算法的數學推導論證過程,目前我覺得我只達到基本明白的程度,後續還要加強學習。

機器學習的算法很巧妙,而且非常有趣,拓寬了我的思維,另外也讓我更有信心繼續後面的學習。

七、感悟

到此為止,學完吳恩達的coursera的機器學習課程,113集,大致20個小時的課程,歷時32天(其間我同時完成《機器學習實戰》前六章的課程編程與學習),有種終於要正式開始了的感覺。

這裏僅僅是入門,可能甚至只是還在門邊初探機器學習的內容。

接下來,視頻課程部分,我計劃學習吳恩達的深度學習微專業;書籍部分,我會先學完《機器學習實戰》,接著開始周誌華的《機器學習》(俗稱西瓜書),鞏固機器學習的內容。至於TF框架、機器學習的具體方向、深度學習花書以及其他各種視頻、書籍等內容,後續會持續進行。

2018,加油~

——written by linhxx

更多最新文章,歡迎關註微信公眾號“決勝機器學習”,或掃描右邊二維碼。技術分享圖片

ng機器學習視頻筆記(十六) ——從圖像處理談機器學習項目流程