ng機器學習視頻筆記(十六) ——從圖像處理談機器學習項目流程
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機器學習視頻筆記(十六) ——從圖像處理談機器學習項目流程