使用深度學習(CNN)演算法進行圖像識別工作時,有哪些data augmentation 的奇技淫巧?
我知道常見的有旋轉,拉伸,加雜訊呀這些,題主現在在做fine grained level的分類,那幾個公開數據集的訓練樣本規模特別小,非常容易overfitting....當然,還包括fine-tune時固定到第幾層,一些初始化的策略?這方面有沒有比較有指導意義的綜述性文章?還是只能對每個數據集反覆嘗試,調參?
最近也在做Object Detection方面的東西,嘗試了很多data augmentation的trick,算不上奇淫技巧,但也算是一個總結吧:
- 圖像亮度、飽和度、對比度的變化
- PCA Jittering
- Random resize
- Random crop
- Horizontal/Vertical flip
- 旋轉/仿射變換
- 加高斯雜訊、模糊處理
- Label shuffle:類別不平衡數據的增廣,參見海康威視ILSVRC2016的report
另外,海康威視今年imagenet 比賽中用的SDA可是大殺器啊
----------------------------------------------------------------------------------------------------------------
PCA Jittering的實現:1603.07057今年eccv的一篇文章,使用3d建模重構的人臉來做data augmentation,滿足題主奇技淫巧的描述,雖然好像不怎麼work
data agumentation前面@小白在閉關 提到的方法已經很全面了
@taoari用ResNet-50對一些agumentation方案做了一些驗證。
在現有data agumentation的基礎上,個人認為對於小數據集的情況,還可以從以下三個方面做一些嘗試:
1. 更改網路結構。一年多過去了cvpr,iccv又新鮮出爐了一大批paper,可以嘗試使用這些新提出來的ideal做一些改進。
2. 根據使用場景人為構造特徵。當數據受限,不足以支撐更深的網路結構時,人為提取特徵作為補充。有兩種使用方式:
a. 將人為提取的特徵當做網路輸入。
b. 將提取的特徵與神經網路提取出來的特徵做融合,再分類
3. 使用集成的策略,採用不同的框架做boost。
我也在尋找答案,但又不希望太多答案。深度學習的成功應用我想很大部分在於減少了對經驗或者技巧的依賴,當一大批非創新的技巧能提升網路能力的時候,深度網路也就失去了他的魅力。
一般比較有效的有random crop, random mirror, random resize (scale augmentation)。以上三種實現簡單而且有效,基本能復現resnet的結果。至於color augmentation, random rotation, aspect ratio augmentation感覺效果幾乎沒有,尤其是color augmentation,貌似還有一點點反作用。。。
附圖是對於ResNet-50 on ImageNet的結果。scale aug作為baseline。JPEG compression quality 90和aspect ratio aug基本沒有作用,color aug是反作用。。。沒有train完,計算開銷太大,不準備繼續train了。。。
題主已經用了大數據集上pre-train然後再用小數據集fine tune了沒?
在哪裡可以找到這些方法的細節,有數學公式描述的最好。
我看到一種轉到HSV空間,然後改變SV而保持H不變的方法,就是改變光照而不改變色調。 對每個像素的S和V分量進行指數運算(指數因子在0.25到4之間隨機,但這樣貌似只能增強光照而不能減弱了啊)。我沒有試過,只是看到了這種方法。
推薦閱讀:
※如何評價文章《物理學家:用數學理論證明人工智慧無法超越人類智慧》?
※ACL 2016上哪些論文值得關注?
※如何評價科大訊飛推出的人工智慧計劃「訊飛超腦」?
※人工智慧是否有情感?
※如何評價arXiv上的最新論文:「可自動編程」的人工智慧程序員(AI Programmer)?
TAG:人工智慧 | 計算機視覺 | 深度學習DeepLearning |