<label id="jgr5k"></label>
    <legend id="jgr5k"><track id="jgr5k"></track></legend>

    <sub id="jgr5k"></sub>
  1. <u id="jgr5k"></u>
      久草国产视频,91资源总站,在线免费看AV,丁香婷婷社区,久久精品99久久久久久久久,色天使av,无码探花,香蕉av在线
      您正在使用IE低版瀏覽器,為了您的雷峰網賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
      此為臨時鏈接,僅用于文章預覽,將在時失效
      人工智能開發者 正文
      發私信給AI研習社-譯站
      發送

      0

      數據增強:數據有限時如何使用深度學習 ? (續)

      本文作者: AI研習社-譯站 2018-05-07 11:36
      導語:對深度學習數據增強技術的全面回顧

      雷鋒網按:本文為雷鋒字幕組編譯的技術博客,原標題Data Augmentation | How to use Deep Learning when you have Limited Data?—?Part 2,作者Ralph Fehrer。

      翻譯 | 趙朋飛  涂世文      整理 |  吳璇

      這篇文章是對深度學習數據增強技術的全面回顧,具體到圖像領域。這是《在有限的數據下如何使用深度學習》的第2部分。點擊這里查看第1部分《NanoNets :數據有限時如何應用深度學習?》

      數據增強:數據有限時如何使用深度學習 ? (續)

      這些情況我們都經歷過。你精通機器學習的相關概念,并能將其應用于機器學習模型。打開瀏覽器搜索相關數據,很可能會找到一系列數據以及上百幅相關照片。

      你會想起大部分流行的數據集擁有數以千計的圖片(甚至更多)。你也會想起有人曾說過擁有大規模的數據集對性能至關重要。你會感到失望,非常想知道:在有限的數據量下,頂級神經網絡能不能很好地工作?

      回答是肯定的,但在見證奇跡之前,我們需要思考一些基本問題。

      為什么需要大量的數據

      數據增強:數據有限時如何使用深度學習 ? (續)

      常用的神經網絡的參數數量。

      當你訓練一個機器學習模型時,你實際做工作的是調參,以便將特定的輸入(一副圖像)映像到輸出(標簽)。我們優化的目標是使模型的損失最小化, 以正確的方式調節優化參數即可實現這一目標。

      成功的神經網絡擁有數以百萬計的參數!

      自然,如果你有大量參數,就需要提供你的機器學習模型同比例的實例,以獲得優秀的性能。你需要的參數數量與需要執行的任務復雜性也成比例。

      在沒有大量數據情況下,如何獲取更多數據?

      其實,你并不需要添加大量的圖像到你的數據集,為什么? 因為,神經網絡從一開始就不是智能的,例如,缺乏訓練的神經網絡會認為下面這3個網球是不同的、獨立的圖像。

      數據增強:數據有限時如何使用深度學習 ? (續)

      完全一樣的網球,神經網絡的解釋卻不同。

      所以,為了獲得更多數據,我們僅需要對已有的數據集做微小的調整。比如翻轉、平移或旋轉。神經網絡會認為這些數據是不同的。

      數據增強:數據有限時如何使用深度學習 ? (續)

      運動中的數據增強

      一個卷積神經網絡有一個稱作不變性的性質,即使卷積神經網絡被放在不同方向上,它也能進行對象分類。更具體的說,卷積神經網絡對平移、視角、尺寸或照度(或以上組合)保持不變性。

      這就是數據增強的本質前提。在現實世界中,我們可能會有一組在有限的條件下拍攝的圖像 。但是,我們的目標應用可能是在多變的環境中,例如,不同的方向、位置、比例、亮度等。我們通過使用經綜合修改過的數據來訓練神經網絡,以應對這些情形。

      即使擁有大量數據,再增強數據也是有幫助的嗎?

      當然。這會有助于增加數據集中相關數據的數量。 這與神經網絡的學習方法相關,讓我通過一個例子來說明。

      數據增強:數據有限時如何使用深度學習 ? (續)

      假設數據集中的兩個類。左邊的代表品牌A(福特),右邊的代表品牌B(雪佛蘭)。

      假設完成了訓練,并且輸入上面的圖像,即品牌A。但是你的神經網絡輸出認為它是品牌B的汽車!使用先進的神經網絡不是應該有95%的正確率嗎?我不是夸大其詞,類似的事情在過去也發生過。

      數據增強:數據有限時如何使用深度學習 ? (續)

      福特汽車(品牌A),但面向右側。

      為什么會發生這種現象?因為這是大多數機器學習算法就是這么工作的。它會尋找區分一個類和另一個類的最明顯特征。在這個例子中 ,這個特征就是所有品牌A的汽車朝向左邊,所有品牌B的汽車朝向右邊。

      神經網絡的好壞取決于輸入的數據。

      我們如何預防這種現象發生? 我們需要減少數據集中不相關特征的數量。對上面的汽車類型分類器來說,一個最簡單的解決辦法就是為數據集中的每種類別都添加朝向不同方向的汽車照片。更好的辦法是,你只需要將現有的數據集中的照片水平翻轉,使汽車朝向另一側。現在,用新的數據集訓練神經網絡,你就會得到你想要的結果。

      通過增強數據集,可以防止神經網絡學習到不相關的模式,根本上提升整體性能。

      準備開始

      在我們深入研究各種增強技術之前,我們必須先考慮一個問題。

      在機器學習過程中的什么位置進行數據增強?

      答案相當明顯:在向模型輸入數據之前增強數據集,對嗎?是的,但你有兩個選項,一個是預先進行所有必要的變換,從根本上增加數據集的規模。另外一個是小批量執行變換,僅僅在輸入機器學習模型之前。

      第一項被稱為離線增強。這個方法常被用于相對較小的數據集。因為你最終會通過一個與執行的轉換數量相等的因子來增加數據集的大小(例如,通過翻轉所有圖像,數據集數量會增加2倍)。

      第二個選項稱為在線增強,或稱為動態增強。主要應用于規模較大的數據集,因為你無法負擔數據量爆炸性增長。反而,你可以通過對即將輸入模型的小批量數據的執行相應的變化。很多機器學習架構已經支持在線增強,并可以利用GPU進行加速。

      常用的增強技術

      在這一節,我們將介紹一些基礎但功能強大的增強技術,這些技術目前被廣泛應用。在我們講述這些技術之前,為簡單起見,讓我們做一個假設,即我們不需要關心圖片邊界之外的東西。如果使用下面的技術,我們的假設將是有效的。

      如果使用的技術關注圖像邊界之外的區域,將會發生什么呢?在這種情況下,我們需要插入一些信息。在討論完數據增強的類型后我們在詳細討論這一問題。

      我們為每個技術都定義了一個增強因子,用以增強數據集(也成為數據增強因子)。

      1. 翻轉

      你可以水平或垂直翻轉圖像。一些架構并不支持垂直翻轉圖像。但,垂直翻轉等價于將圖片旋轉180再水平翻轉。下面就是圖像翻轉的例子。

      數據增強:數據有限時如何使用深度學習 ? (續)

      從左側開始分別是:原始圖像,水平翻轉圖像,垂直翻轉圖像。

      可以通過執行下面的命令完成圖像翻轉。

      數據增強:數據有限時如何使用深度學習 ? (續)

      2. 旋轉

      關于這個操作,需要注意的一個關鍵問題是,在旋轉之后,圖像維度可能不會被保留。如果是正方型圖像,旋轉90度之后圖像的尺寸會被保存。如果圖像是長方形,旋轉180度之后圖像尺寸也會保存。 但用更小的角度旋轉圖像,將會改變最終圖像的尺寸。在下面的章節中我們將會看到如何解決這個問題。下面是方形圖像旋轉90度的例子。

      數據增強:數據有限時如何使用深度學習 ? (續)

      當我們從左到右移動時,圖像相對于前一個圖像順時針旋轉90度。

      你可以執行下面的任一命令完成圖像旋轉。 數據增強因子 = 2 到 4x

      數據增強:數據有限時如何使用深度學習 ? (續)

      3. 縮放

      圖像可以被放大或縮小。放大時,放大后的圖像尺寸會大于原始尺寸。大多數圖像處理架構會按照原始尺寸對放大后的圖像進行裁切。我們將在下一章節討論圖像縮小,因為圖像縮小會減小圖像尺寸,這使我們不得不對圖像邊界之外的東西做出假設。下面是圖像縮放的例子。

      數據增強:數據有限時如何使用深度學習 ? (續)

      從左邊開始分別為:原始圖像,圖像向外縮放10%,圖像向外縮放20%。

      通過下面的命令執行圖像縮放。數據增強因子=任意。

      數據增強:數據有限時如何使用深度學習 ? (續)

      4. 裁剪

      與縮放不同,我們隨機從原始圖像中采樣一部分。然后將這部分圖像調整為原始圖像大小。這個方法更流行的叫法是隨機裁剪。下面是隨機裁剪的例子。如果你靠近了看,你會注意到裁剪和縮放兩種技術之間的區別。

      數據增強:數據有限時如何使用深度學習 ? (續)

      從左側開始分別為:原始圖像,從左上角裁剪出一個正方形部分,然后從右下角裁剪出一個正方形部分。剪裁的部分被調整為原始圖像大小。

      通過下面的TensorFlow命令你可以執行隨機裁剪。 數據增強因子=任意。

      數據增強:數據有限時如何使用深度學習 ? (續)

      5. 平移

      平移是將圖像沿X或Y方向(或者同時沿2個方向)移動。在下面的例子中, 我們假設在圖像邊界之外是黑色的背景,也同步被移動。這一數據增強方法非常有用,因為大多數對象有可能分布在圖像的任何地方。這迫使你的卷積神經網絡需要看到所有地方。

      數據增強:數據有限時如何使用深度學習 ? (續)

      從左側開始分別為:原始圖像,圖像翻轉到右側,圖像向上翻轉。

      在TensorFlow中,可以通過如下命令完成圖像平移。數據增強因子=任意。

      數據增強:數據有限時如何使用深度學習 ? (續)

      6. 高斯噪聲

      過擬合(Overfitting)經常會發生在神經網絡試圖學習高頻特征(即非常頻繁出現的無意義模式)的時候,而學習這些高頻特征對模型提升沒什么幫助。

      那么如何處理這些高頻特征呢?一種方法是采用具有零均值特性的高斯噪聲,它實質上在所有頻率上都能產生數據點,可以有效的使高頻特征失真,減弱其對模型的影響。

      但這也意味著低頻的成分(通常是你關心的特征)同時也會受到影響,但是神經網絡能夠通過學習來忽略那些影響。事實證明,通過添加適量的噪聲能夠有效提升神經網絡的學習能力。

      一個“弱化”的版本是椒鹽噪聲,它以隨機的白色和黑色像素點呈現并鋪滿整個圖片。這種方式對圖像產生的作用和添加高斯噪聲產生的作用是一樣的,只是效果相對較弱。

      數據增強:數據有限時如何使用深度學習 ? (續)

      從左側開始分別為:原始圖像,增加了高斯噪聲的圖像,添加了椒鹽噪聲的圖像。

      在 TensorFlow 中,你可以使用以下的代碼給圖片添加高斯噪聲。數據增強因子(Data Augmentation Factor)= 2x。

      數據增強:數據有限時如何使用深度學習 ? (續)

      高級增強技術

      現實世界中,自然狀態下的數據,存在于各種各樣的狀況之中, 不能用上述簡單的方法來處理。例如, 進行照片中的景觀識別的任務。景觀可以是任何自然中的東西:冰凍寒帶草原、草原、森林等等。聽起來像是個很直接的分類任務對吧?基本沒問題,除了一件事外。我們忽略了照片中的一個關鍵特征, 而這個特征將會影響到模型的表現——照片拍攝的季節。

      如果我們的神經網絡不明白某些景觀可以存在于各種條件下(雪、潮濕、明亮等), 它可能會錯誤地將冰凍的湖畔標記為冰川或者把沼澤標記為濕地。

      緩解這種情況的一種方法是添加更多的圖片,這樣我們就可以解釋所有季節性變化。但這是一項艱巨的任務。擴展我們的數據增強概念,想象一下,人為地產生不同季節的效果會有多酷?

      條件型生成對抗網絡,了解一下

      并不用深入了解繁雜的細節,條件型生成對抗網絡就能將一張圖片從一個領域轉換到另一個領域中去。假如你覺得這聽上去太模棱兩可了,它本身并不是這樣;事實上這是一種強大的神經網絡 ! 下面是一個應用條件型生成對抗網絡(Conditional GANs)將夏日風光的圖片轉換為冬季風景的例子。

      數據增強:數據有限時如何使用深度學習 ? (續)

      用CycleGAN 改變季節

       (Github: https://junyanz.github.io/CycleGAN/)

      上述方法是魯棒的(Robust), 但是屬于計算密集型,需要耗費大量的計算性能。一個更廉價的選擇是所謂的神經風格遷移(Neural Style Transfer)。它抓住了一個圖像的紋理/氣氛/外觀 (又名, "風格"), 并將其與其他內容混合在一起。使用這種強大的技術, 我們產生的效果類似于我們的條件型生成對抗網絡所產生的效果(事實上, 這個方法是在 cGANs 發明之前就被提出來了!)。 

      這種方法唯一的缺點在于輸出結果看起來太有藝術感了,以至于顯得不那么真實。但是,在譬如深度學習的圖像風格轉換方面還是具有獨特的優勢,至少它的輸出結果給人留下了深刻印象。

      數據增強:數據有限時如何使用深度學習 ? (續)

      深度照片風格轉移。

      注意如何在數據集上產生我們想要的效果。

      (來源:https://arxiv.org/abs/1703.07511)

      由于我們并不關注其內部的工作原理,所以我們沒有深入探索這些技術。事實上,我們可以使用現有訓練好的模型再加上一點遷移學習的“神奇力量”來進行數據增強。

      插值簡介

      如果想平移一個沒有黑色背景的圖像時候該怎么辦?向內部縮放呢?旋轉一個特定的角度?在完成這些變換之后,我們需要保持原始圖像的大小。由于我們的圖像沒有包含其邊界之外的區域的任何信息,我們得做一些假設。一般來說,我們會假定圖像邊界之外的部分的每一個像素點的值都是常數 0 (RGB值為 0 表示黑色)。這樣,在對圖像進行變換之后,在圖像沒有覆蓋的地方會得到一塊黑色的區域。

      數據增強:數據有限時如何使用深度學習 ? (續)

      從左側開始分別為:逆時針旋轉45度的圖像,右側翻轉的圖像和向內縮放的圖像。

      但是,那個假設是不是就一定正確呢?在現實世界中,大多數情況下那個假設是不適用的。圖像處理和機器學習框架提供的一些標準的處理方式,你可以決定如何填充未知的空間。

      數據增強:數據有限時如何使用深度學習 ? (續)

      從左側開始分別為:常數,邊緣,反射,對稱和包裹模式。

      它們的定義如下:

      1. 常量填充

      最簡單的插值方法是用某個常量值填充未知區域。這可能不適用于自然圖像, 但可以用于在單色背景下拍攝的圖像。

      2. 邊緣擴展

      將圖像邊緣的值擴展到邊界以外。這個方法可用于輕微的平移的圖像。

      3. 反射

      圖像像素值沿圖像邊界進行反射。這種方法對于包含樹木、山脈等的連續或自然背景是有用的。

      4. 對稱

      此方法類似于反射,除了在反射邊界上進行邊緣像素拷貝。通常,反射和對稱可以交替使用,但在處理非常小的圖像或圖案時,差異將是可見的。

      5. 包裹

      在超出圖像邊界的部分重復填充圖像,仿佛在進行圖像平鋪。這種方法不像其他的那樣普遍使用, 因為它對很多場景都沒有意義。

      除此之外,你還可以設計自己的方法來處理未定義的空間, 但通常以上這些方法對大多數分類問題都有很好的效果。

      使用了這些所有的技術,能保證機器學習算法的魯棒性嗎?

      如果你用的是正確的方法,那這個問題的答案是 Yes ! 什么?你問正確方法是什么?嗯,有時不是所有的增強技術都對數據集有意義。再考慮一下我們的汽車例子。下面是可以修改圖像的一些方法。

      數據增強:數據有限時如何使用深度學習 ? (續)

      第一個圖像(從左邊開始)是原始圖像,第二個圖像是水平翻轉的,第三個圖像旋轉了180度,最后一個圖像旋轉了90度(順時針)。

      當然, 他們是同一輛車的照片, 但你的目標應用可能永遠不會看到在這些方向的汽車。

      例如,如果你要分類在路上的隨機車輛,只有第二個圖像對數據集來說是有意義的。但是,如果你擁有一家處理車禍的保險公司,而你也想識別車禍中顛倒的、撞壞的車, 那么第三張圖片是有意義的。最后一個圖像可能對上述兩種情況都沒有意義。

      關鍵是, 在使用增強技術的同時,我們必須確保不增加無關的數據.。 

      這樣做真的值得嗎?

      你也許正期待著能有一些結果來。有道理,我也做了這一點。讓我先通過一個小示例來證明數據增強的確能夠產生作用。不信的話,你可以復現這個實驗來驗證。

      讓我們創建兩個神經網絡, 將數據分類到四類中的一個: 貓、獅子、豹或者老虎。區別在于,一個不會使用數據增強,而另一個將使用數據增強。可以從此鏈接下載數據集。

      如果你查看了數據集,你會發現里面訓練集和測試集中每一類都只有50張圖片。很明顯,我們不能對特定的一個分類器使用增強技術。公平起見,我們使用遷移學習讓模型能夠應對數據稀缺問題。

      數據增強:數據有限時如何使用深度學習 ? (續)

      數據庫里的四個分類

      對于沒有進行數據增強的神經網絡,我們將使用  VGG19 網絡結構。在參考這個 VGG19 實現的基礎上,我用TensorFlow實現了我們的第一個神經網絡。一旦你克隆了我的 Github Repo, 你就可以從這里 得到數據集以及從這里 下載 VGG19. npy (用于遷移學習) 。完成上述工作后,就可以運行模型來驗證性能了。

      不過, 為數據增強編寫額外的代碼確實是費時費力的工作。所以, 構建我們的第二個模型過程中,我使用了 Nanonets。它內部實現了轉移學習和數據擴充,可以用最少的數據量提供最佳的結果。所有你需要做的只是上傳的數據到他們的網站,并等待他們的服務器訓練完畢就可以了(通常約30分鐘)。你要知道,這對我們進行對比實驗多么完美。

      完成訓練后,你可以對其 API 請求調用來計算測試的準確性。你可以在GitHub repo中找到對應的示例代碼片段 (不要忘記在代碼段中插入模型的 ID)。

      數據增強:數據有限時如何使用深度學習 ? (續)

      對比結果令人印象深刻不是嗎?事實上,大多數模型在更多的數據上可以表現更良好。為了提供一個具體的證明,可仔細看看下面這張表。它顯示了 Cifar 10 (C10) 和 Cifar 100 (C100) 數據集上常用的神經網絡的錯誤率。C10+ 和 C100+ 列是進行數據增強后的錯誤率。

      數據增強:數據有限時如何使用深度學習 ? (續)

      Cifar 10 和 Cifar 100 數據集上的表現

      (來源: DenseNet

      雷鋒網雷鋒網

      數據增強:數據有限時如何使用深度學習 ? (續)

      數據增強:數據有限時如何使用深度學習 ? (續)

      雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知

      數據增強:數據有限時如何使用深度學習 ? (續)

      分享:
      相關文章

      知情人士

      AI研習社(yanxishe.com)譯站頻道,傳播前沿人工智能知識,讓語言不再成為學習知識的門檻。(原雷鋒字幕組)
      當月熱門文章
      最新文章
      請填寫申請人資料
      姓名
      電話
      郵箱
      微信號
      作品鏈接
      個人簡介
      為了您的賬戶安全,請驗證郵箱
      您的郵箱還未驗證,完成可獲20積分喲!
      請驗證您的郵箱
      立即驗證
      完善賬號信息
      您的賬號已經綁定,現在您可以設置密碼以方便用郵箱登錄
      立即設置 以后再說
      主站蜘蛛池模板: 成年女人免费视频播放体验区 | 91一区二区| 3751色视频| 久久久精品波多野结衣av| 91资源总站| 日韩人妻网站| 超碰人人妻| 久久久无码人妻精品一区| 无码人妻品一区二区三区精99| 盈江县| 在线观看国产午夜福利片| 国产高清在线A免费视频观看| 免费AV网站| 色综合久久久久久久久久| 人妻?日韩?中文?无码?制服| 久章草这里只有精品| 国产精品自拍一区视频在线观看| 精品综合久久久久久98| 2020久久超碰欧美| 亚洲精品在线成人| 黄页网站视频| 国产chinese男男网站| 午夜dv内射一区二区| 亚洲国产精品羞羞| 无码人妻aⅴ一区二区三区有奶水| 成人小说一区| 日本天天躁天天搡久久| 中文字幕在线视频不卡一区二区 | 亚洲国产成人久久综合一区| 国产蜜臀av在线一区尤物 | 免费无码高H视频在线观看| 天天做日日做天天添天天欢公交车| 国产精品天天狠天天看| 国产xxxxx| 少妇人妻大乳在线视频| 国产太嫩了在线观看| 777米奇色狠狠俺去啦| 日韩人妻无码一区二区三区综合部| 韩日一级| 综合色小说| 亚洲国产高清第一第二区|