吳恩達機器學習Coursera-week11

Photo OCR

在此章的課程中瞧捌,Andrew主要是想通過OCR問題的解決來闡釋在實際項目中我們應該如何定義問題膳帕,并將一個大問題分解為多個小問題鹿霸,并通過pipeline的方式將對這些小問題的解決方案串聯(lián)起來乡括,從而解決這個大問題。我認為這是解決實際問題的一個經(jīng)典的方法論挎峦,有助于我們在實際工作和生活中更好地思考問題,分解問題合瓢,并最終解決問題坦胶。

Problem Description and Pipeline

此小節(jié)主要是通過Photo OCR(Optical Character Recognition)問題來闡釋什么是pipeline. OCR簡單說就是識別圖片中的文字的問題。那么要解決這個問題晴楔,實際我們可以分解為三個小一點的問題顿苇,即 1,識別出有文字的區(qū)域税弃;2纪岁,分割字符;3则果,識別字符幔翰。如下圖所示:


1.1- Photo OCR pipeline

每一個問題可能都需要一個功能模塊去解決,而不同的模塊又可以分給不同的工程師去解決短条,從而可以通過team work的方式來解決一個實際的問題导匣。如下圖所示:


1.2- pipleline

Sliding Window

文字區(qū)域識別是一個相對較難的問題,因為文字識別區(qū)域會有非常多的變化茸时,寬高比都不固定贡定,所以Andrew先以人物識別為例講述如何進行識別(因為人物,尤其是站立的人物可都,其寬高比是基本固定的)缓待。那么,我們自己想象一下該如何去識別呢渠牲?(我最開始的想法是只要有人出現(xiàn)這個圖片就判定為1旋炒,沒有人就判定為0,但問題是這并沒有圈定人物區(qū)域签杈,直到看到課程中講到滑動窗口的概念才恍然大悟)瘫镇。先看看Andrew在課程中講述的如何識別人物,如下圖所示:


1.3-supervised learning for pedestrian detection
  • 我們需要首先收集樣本答姥,Andrew的例子中樣本是固定的82x36分辨率的圖片铣除,有人物的標記為1,沒有人物的標記為0
  • 通過有監(jiān)督學習鹦付,我們就有了一個模型可以識別類似圖片中是否有人

之后尚粘,就是我們要說的滑動窗口(sliding window)了


1.4-sliding window detection
  • 我們可以用同樣寬高比例的方框,從圖片一角開始滑動敲长,每次滑動所取的區(qū)域圖片都可以利用我們之前訓練的模型來識別是否有人郎嫁,這樣從頭到尾的滑動一遍之后秉继,我們就知道那個區(qū)域有人,哪個區(qū)域沒有人泽铛。
  • 滑動的距離被定義為step-size或者stride尚辑,可以是一個像素,也可以是多個像素厚宰。step-size越小則最后可能識別錯誤的可能越小
  • 由于遠近的關(guān)系腌巾,圖片中有的人物會比較大,有的會比較小铲觉,所以我們可能需要不同尺寸的矩形框去掃描澈蝙。但是需要注意的是即使使用了不同尺寸我們也可以保持同樣的寬高比,然后再將原尺寸矩形框通過拉伸或者壓縮使得其符合82x36的分辨率撵幽,然后再使用模型進行識別灯荧。

針對文字識別,我們可以使用類似的方法進行滑動窗口識別盐杂,同樣我們需要先訓練一個模型逗载,針對有文字的圖片標記為1,沒有文字的標記為0链烈,這樣訓練出一個模型厉斟。


1.5-training text detection model

之后再利用滑動窗口的方法對要識別的圖像進行滑動掃描,如下圖:


1.6-sliding window for text detection
  • 在文字識別的時候先使用較小的矩形框進行滑動識別强衡,并根據(jù)框中是否有文字的概率來選擇不同的灰度進行置灰擦秽,當有文字的概率越高,灰度越袖銮凇(左下圖中白色兩點)感挥,相反越黑。
  • 然后我們通過expansion越败,將白色方框區(qū)域進行拓展使其連成一片區(qū)域触幼。
  • 最后將符合我們寬高比的區(qū)域進行框選即可

下一步,是將有文字的區(qū)域送人下一個pipeline究飞,進行文字分割置谦,首先也要有一個模型,來訓練其識別字符的分割線亿傅,如下圖所示:


1.7-1D sliding window for character segmentation
  • 訓練分割字符的模型霉祸,將中間可分割的圖片標記為1,不可分割的圖片標記為0袱蜡,從而訓練出一個模型。
  • 然后再利用滑動窗口在我們之前框出的文字區(qū)域進行滑動識別慢宗,從而分割字符

分割好之后坪蚁,就是利用我們之前課程講過的文字識別的模型進行文字識別即可奔穿。

Getting lots of data and artificial data

此小節(jié)主要講了如何獲得大量數(shù)據(jù),其中一個技巧就是人造數(shù)據(jù)敏晤,通過合成贱田,distortion等方法我們可以生成一些“假”的數(shù)據(jù),但是這些數(shù)據(jù)卻能大幅提升我們模型的性能嘴脾。

Andrew首先舉了一個字符識別的例子男摧,如下圖:


1.8-artificial data synthesis for photo OCR
  • 這里是通過把不同font的字符放到不同的背景中合成新的樣本

還有不同的方式來人工生成的數(shù)據(jù),是通過引入distortion來生成新的樣本译打,如下圖:


1.9-introducing distortions

另外耗拓,不同的領(lǐng)域合成數(shù)據(jù)的方式是不同的,比如在語音識別領(lǐng)域奏司,我們是通過引入不同的背景噪音來合成新的樣本數(shù)據(jù)乔询,如下:


2.0-introducing noise background for voice recognition

最后,關(guān)于數(shù)據(jù)作者強調(diào)了如下兩點:


2.1-about data
  • 即在增加數(shù)據(jù)之前首先要確認你已經(jīng)有了一個low bias的模型韵洋,其實也就是我們之前課程所說的要先看看我們模型目前面臨的是一個什么問題竿刁,是high bias問題還是high variance問題,只有當我們解決了high bias問題之后搪缨,才需要考慮增加數(shù)據(jù)量的問題食拜。
  • 通常在項目中我們需要問下“要獲取10倍的數(shù)據(jù)量需要投入多少資源(人力和時間)”,通常副编,很可能我們不需要花費太多的時間就可以獲取到10倍的數(shù)據(jù)量负甸,從而大幅提升我們的模型的性能。
  • 作者還介紹幾種獲取大量數(shù)據(jù)的方法齿桃,除了之前講到的人工合成數(shù)據(jù)惑惶,自己標記之外,還可以找相應的眾包網(wǎng)站短纵,去雇傭其它人來進行標記带污。

Ceiling Analysis

所謂Ceiling Analysis(上限分析)實際是分析Pipeline中每個module隊算法的影響度的分析,即哪個模塊對算法的改進最有用香到,然后我們把我們的精力資源投入到那個產(chǎn)出更高的模塊鱼冀。具體做法如下:


2.2-ceiling analysis
  • 我們首先使用我們現(xiàn)有的model在測試集中測試下錯誤率,本例是72%
  • 然后我們將text detection模塊的輸出數(shù)據(jù)均使用100%正確的數(shù)據(jù)(比如人工檢查圈選)悠就,然后再用模型跑一下測試集千绪,這時候我們會得到一個新的錯誤率,本例是89%, 這樣我們就知道當我們改進我們text detection模塊時梗脾,我們最多可以讓系統(tǒng)性能提升17%(89%-72%)
  • 同樣道理荸型,我們可以接著講character segmentation輸出的數(shù)據(jù)全部設(shè)置為正確的輸出,再看總的error rate炸茧,這次是90%瑞妇,說明改進character segmentation對系統(tǒng)整體性能的提升非常有限稿静,只有1%,那么我們可以不必花精力在這個模塊上了辕狰。
  • 以此類推改备,可以看到character recognition模塊對于系統(tǒng)的整體提升可以有10%的貢獻度

之后,Andrew又舉了一個更復雜的例子蔓倍,但是大同小異


2.3-another ceiling analysis example

總的來說悬钳,我們在一個項目的pipeline中,要通過ceiling analysis來分析究竟哪個模塊的改善對于我們系統(tǒng)的整體性能提升有的大的幫助偶翅,然后將我們resource投入到哪些可能帶來最大改善的模塊中更加有意義默勾。

至此,我們機器學習的課程就全部完結(jié)了倒堕,非常感謝Andrew灾测,他的課程真的非常棒!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末垦巴,一起剝皮案震驚了整個濱河市媳搪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌骤宣,老刑警劉巖秦爆,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異憔披,居然都是意外死亡等限,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門芬膝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來望门,“玉大人,你說我怎么就攤上這事锰霜〕镂螅” “怎么了?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵癣缅,是天一觀的道長厨剪。 經(jīng)常有香客問我,道長友存,這世上最難降的妖魔是什么祷膳? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮屡立,結(jié)果婚禮上直晨,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好抡秆,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布奕巍。 她就那樣靜靜地躺著,像睡著了一般儒士。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上檩坚,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天着撩,我揣著相機與錄音,去河邊找鬼匾委。 笑死拖叙,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的赂乐。 我是一名探鬼主播薯鳍,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼挨措!你這毒婦竟也來了挖滤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤浅役,失蹤者是張志新(化名)和其女友劉穎斩松,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體觉既,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡惧盹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了瞪讼。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钧椰。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖符欠,靈堂內(nèi)的尸體忽然破棺而出嫡霞,到底是詐尸還是另有隱情,我是刑警寧澤背亥,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布秒际,位于F島的核電站,受9級特大地震影響狡汉,放射性物質(zhì)發(fā)生泄漏娄徊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一盾戴、第九天 我趴在偏房一處隱蔽的房頂上張望寄锐。 院中可真熱鬧,春花似錦、人聲如沸橄仆。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盆顾。三九已至怠褐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間您宪,已是汗流浹背奈懒。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留宪巨,地道東北人磷杏。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像捏卓,于是被迫代替她去往敵國和親极祸。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 不愛寒梅不愛荷怠晴, 千芳偏戀曼陀羅遥金。 癡心易結(jié)傷心果, 孽海翻升情海波龄寞。 忍顧靈臺皆破碎汰规, 肯將年月盡蹉跎。 伽藍鐘...
    舒笙雨閱讀 1,106評論 7 11
  • 落葉入懷尋菊影物邑, 偏見小園草蔥蘢溜哮。 昔年花開爭明艷, 今曰彩蠑隱芳蹤色解。 世人皆嘆花相似茂嗓, 豈知一朝再難尋, 臨窗遙...
    化繭成蝶_219a閱讀 146評論 0 0
  • 1 安裝git ubuntu系統(tǒng)中可以直接使用apt-get來安裝git科阎,安裝指令如下 $ sudo apt-ge...
    happy_19閱讀 2,032評論 1 2
  • 01 關(guān)于消失的一段時間述吸。 最近,真正關(guān)心的我的朋友及讀者開始給我留言锣笨,為什么公眾號蝌矛,及其朋友圈都沒有任何的消息,...
    云朵默閱讀 596評論 3 2