LINE DEV DAY 2019 - Making a strong and robust deep model by simple but effective data augmentation

大家好,我是卡米哥,LINE 官方認證的 API 專家,LINE API Expert。目前在維護知名 Node.js 聊天機器人框架 Bottender

身為 LINE API Expert 的我,受邀參加 LINE DEVELOPER DAY 2019,這是 LINE 每年都會舉辦的開發者大會,發表 LINE 所研發以及使用的技術,這麼棒的研討會,當然不能只有我聽到。

本文不是講座翻譯,為了讓大家理解,除了幾個重要的專有名詞之外,我會避免使用專有名詞,增加說明和省略細節。

這場議程的講者 Sangdoo Yun 和他的同事們發表了一篇論文:CutMix: Regularization Strategy to Train Strong Classifiers with Localizable Features,目前已經被 ICCV 2019 所接受。整場議程就是在說明其論文原理以及和其他方法的比較。

講者想要解決的問題

講者想要解決的問題是在使用深度學習來做圖片分類或物件偵測時,使用相同的資料量和相同的模型的情況下,如何透過採取更好的學習策略,來獲得更好的結果。

舉例來說,如果想要讓電腦判斷一張圖是不是貓,那麼我們需要準備一些貓的圖片,和一些不是貓的圖片,並且分別標記為是貓和不是貓。收集這種有標記的圖片是很耗費人力的,所以如果能夠用少量的圖片獲得好的結果,那麼就不需要大量的圖,也就意味著電腦的學習效率提升。

目前的解法

有許多種作法可以達成上述目標,其中一種思路是透過修改原始資料來獲得更多的資料量,這種方法通稱為 Data Augmentation,而要做到 Data Augmentation,又有許多種方法。

如果我們將圖片順時針旋轉 10 度,就可以獲得新的圖片,而這些新的圖片的標記和原本的標記相同,因為貓旋轉過後還是貓,這就是 Data Augmentation。

還有一個類型的學習策略叫做 Regularization,他主要的目的是確保電腦是融會貫通,避免電腦死背題目,其中一種做法叫做 Dropout,也就是在訓練時把類神經網路中的部分節點移除,從而確保電腦的學習是完整的。

結合以上兩點,如果我們只讓電腦看一張貓的圖的其中一部分,電腦也能辨識出貓,那就表示電腦可能真的知道貓的特徵。

舉例來說,我們可以透過遮蔽下圖中這隻狗的一部分,來產生一些新的圖。這種方法稱為 Cutout。

我們也可以透過重疊兩張影像來產生新的圖,這稱為 Mixup。

當我們把貓跟狗重疊在一起之後,電腦應該要覺得這張圖有 50% 機率是貓,50% 機率是狗。這兩個方法都是近年來被提出來的方法,都能提升學習效率。

講者提出的方法

而講者提出了一個方法能結合以上兩種方法的優點,稱為 CutMix,我是覺得這聽起來就有點像卡米。

一樣是將兩張圖合成一張,但這個方法不是用半透明的圖片重疊,而是透過剪貼部分的方式合成。

實驗結果

左邊的 ResNet-50 是使用的模型以及學習策略,CUB200–2011 以及 ImageNet 是使用的資料來源,而數字代表的是準確率,結果當然是屌虐。卡米哥在這裡只是簡單提及一個實驗結果,其實講者做了許多實驗都是屌虐。

我認為

我以前也是做影像處理長大的,不過當年根本沒有人在用深度學習來解影像處理問題。雖然這個題目的思路看起來很簡單,不過很多偉大的成果都是簡單的思路,其實這些都是需要經過各種細節的嘗試以及驗證才能做出好的成績。這篇論文上了 ICCV 2019,講者也很佛心的把原始碼放到 github 上,這表示 LINE 的 AI 團隊除了實力堅強之外,也願意將技術分享到社群。

參考連結

LINE DEV DAY Session
講者投影片
論文連結
Github 原始碼

在追求真理的道路上

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store