計算機視覺的數據增廣技術大盤點!附漲點神器,已開源!
如果要把深度學習開發過程中幾個環節按重要程度排個序的話,相信準備訓練數據肯定能排在前幾位。要知道一個模型網絡被編寫出來后,也只是一坨代碼而已,和智能基本不沾邊,它只有通過學習大量的數據,才能學會如何作推理。因此訓練數據其實和一樣東西非常像!——武俠小說中的神功秘笈,學之前菜鳥一只,學之后一統江湖!

下文所有的代碼都來自PaddleClas:
GitHub 鏈接:
https://github.com/PaddlePaddle/PaddleClas
Gitee 鏈接:
https://gitee.com/paddlepaddle/PaddleClas
8大數據增廣方法
首先咱們先來看看以ImageNet圖像分類任務為代表的標準數據增廣方法,該方法的操作過程可以分為以下幾個步驟:
圖像解碼,也就是將圖像轉為Numpy格式的數據,簡寫為 ImageDecode。
圖像隨機裁剪,隨機將圖像的長寬均裁剪為 224 大小,簡寫為 RandCrop。
水平方向隨機翻轉,簡寫為 RandFlip。
圖像數據的歸一化,簡寫為 Normalize。
圖像數據的重排。圖像的數據格式為[H, W, C](即高度、寬度和通道數),而神經網絡使用的訓練數據的格式為[C, H, W],因此需要對圖像數據重新排列,例如[224, 224, 3]?變為?[3, 224, 224],簡寫為 Transpose。
多幅圖像數據組成 batch 數據,如 BatchSize 個?[3, 224, 224]?的圖像數據拼組成?[batch-size, 3, 224, 224],簡寫為 Batch。
圖像變換類:對 RandCrop 后的 224 的圖像進行一些變換,包括AutoAugment和RandAugment。
圖像裁剪類:對Transpose 后的 224 的圖像進行一些裁剪,包括CutOut、RandErasing、HideAndSeek和GridMask。
圖像混疊:對 Batch 后的數據進行混合或疊加,包括Mixup和Cutmix。
圖像變換類
01
AutoAugment
變換結果如下圖所示。
02
RandAugment
變換結果如下圖所示。
圖像裁剪類
圖像裁剪類主要是對Transpose 后的 224 的圖像進行一些裁剪,即裁剪掉部分圖像,或者也可以理解為對部分圖像做遮蓋,共有CutOut、RandErasing、HideAndSeek和GridMask四種方法。
03
Cutout
通過 Cutout 可以模擬真實場景中主體被部分遮擋時的分類場景。
可以促進模型充分利用圖像中更多的內容來進行分類,防止網絡只關注顯著性的圖像區域,從而發生過擬合。
裁剪結果如下圖所示:
04
RandomErasing
裁剪結果如下圖所示。
05
HideAndSeek
PaddleClas中HideAndSeek的使用方法如下所示:
裁剪結果如下圖所示。
06
GridMask
過度刪除區域可能造成目標主體大部分甚至全部被刪除,或者導致上下文信息的丟失,導致增廣后的數據成為噪聲數據;
保留過多的區域,對目標主體及上下文基本產生不了什么影響,失去增廣的意義。
設置一個概率p,從訓練開始就對圖片以概率p使用GridMask進行增廣。
一開始設置增廣概率為0,隨著迭代輪數增加,對訓練圖片進行GridMask增廣的概率逐漸增大,最后變為p。
結果如下圖所示:
圖像混疊
前文所述的圖像變換與圖像裁剪都是針對單幅圖像進行的操作,而圖像混疊是對兩幅圖像進行融合,生成一幅圖像,Mixup和Cutmix兩種方法的主要區別為混疊的方式不太一樣。
07
Mixup
混疊結果如下圖所示。
08
Cutmix
混疊結果如下圖所示:
實驗
經過實驗驗證,在ImageNet1k數據集上基于PaddleClas使用不同數據增廣方式的分類精度如下所示,可見通過數據增廣方式可以有效提升模型的準確率。
機器視覺 AI
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。