【深度學(xué)習(xí)入門(mén)到進(jìn)階】必看系列,含激活函數(shù)、優(yōu)化策略、損失函數(shù)、模型調(diào)優(yōu)、歸一化算法、卷積模型、序列模型、預(yù)訓(xùn)練模型、對(duì)抗神經(jīng)網(wǎng)絡(luò)等
專(zhuān)欄詳細(xì)介紹:【深度學(xué)習(xí)入門(mén)到進(jìn)階】必看系列,含激活函數(shù)、優(yōu)化策略、損失函數(shù)、模型調(diào)優(yōu)、歸一化算法、卷積模型、序列模型、預(yù)訓(xùn)練模型、對(duì)抗神經(jīng)網(wǎng)絡(luò)等
本專(zhuān)欄主要方便入門(mén)同學(xué)快速掌握相關(guān)知識(shí)。后續(xù)會(huì)持續(xù)把深度學(xué)習(xí)涉及知識(shí)原理分析給大家,讓大家在項(xiàng)目實(shí)操的同時(shí)也能知識(shí)儲(chǔ)備,知其然、知其所以然、知何由以知其所以然。
聲明:部分項(xiàng)目為網(wǎng)絡(luò)經(jīng)典項(xiàng)目方便大家快速學(xué)習(xí),后續(xù)會(huì)不斷增添實(shí)戰(zhàn)環(huán)節(jié)(比賽、論文、現(xiàn)實(shí)應(yīng)用等)
專(zhuān)欄訂閱:
- 深度學(xué)習(xí)入門(mén)到進(jìn)階專(zhuān)欄
- 深度學(xué)習(xí)應(yīng)用項(xiàng)目實(shí)戰(zhàn)篇
深度學(xué)習(xí)應(yīng)用篇-計(jì)算機(jī)視覺(jué)-圖像增廣[1]:數(shù)據(jù)增廣、圖像混疊、圖像剪裁類(lèi)變化類(lèi)等詳解
一、數(shù)據(jù)增廣
在圖像分類(lèi)任務(wù)中,圖像數(shù)據(jù)的增廣是一種常用的正則化方法,主要用于增加訓(xùn)練數(shù)據(jù)集,讓數(shù)據(jù)集盡可能的多樣化,使得訓(xùn)練的模型具有更強(qiáng)的泛化能力,常用于數(shù)據(jù)量不足或者模型參數(shù)較多的場(chǎng)景。除了 ImageNet 分類(lèi)任務(wù)標(biāo)準(zhǔn)數(shù)據(jù)增廣方法外,還有8種數(shù)據(jù)增廣方式非常常用,這里對(duì)其進(jìn)行簡(jiǎn)單的介紹和對(duì)比,大家也可以將這些增廣方法應(yīng)用到自己的任務(wù)中,以獲得模型精度的提升。這8種數(shù)據(jù)增廣方式在ImageNet上的精度指標(biāo)如 圖1 所示。
圖1 8種數(shù)據(jù)增廣方法
二、常用數(shù)據(jù)增廣方法
注:如果沒(méi)有特殊說(shuō)明,本章節(jié)中所有示例為 ImageNet 分類(lèi),并且假設(shè)最終輸入網(wǎng)絡(luò)的數(shù)據(jù)維為:[batch-size, 3, 224, 224]
在ImageNet 分類(lèi)任務(wù)中,訓(xùn)練階段的標(biāo)準(zhǔn)數(shù)據(jù)增廣方法為以下幾步:
- 圖像解碼:簡(jiǎn)寫(xiě)為
ImageDecode
- 隨機(jī)裁剪到長(zhǎng)寬均為 224 的圖像:簡(jiǎn)寫(xiě)為
RandCrop
- 水平方向隨機(jī)翻轉(zhuǎn):簡(jiǎn)寫(xiě)為
RandFlip
- 圖像數(shù)據(jù)的歸一化:簡(jiǎn)寫(xiě)為
Normalize
- 圖像數(shù)據(jù)的重排,
[224, 224, 3]
變?yōu)?[3, 224, 224]
:簡(jiǎn)寫(xiě)為Transpose
- 多幅圖像數(shù)據(jù)組成 batch 數(shù)據(jù),如
batch-size
個(gè)[3, 224, 224]
的圖像數(shù)據(jù)拼組成[batch-size, 3, 224, 224]
:簡(jiǎn)寫(xiě)為Batch
相比于上述標(biāo)準(zhǔn)的圖像增廣方法,研究者也提出了很多改進(jìn)的圖像增廣策略,這些策略均是在標(biāo)準(zhǔn)增廣方法的不同階段插入一定的操作,基于這些策略操作所處的不同階段,我們將其分為了三類(lèi):
- 對(duì)
RandCrop
(上述的階段2)后的 224 的圖像進(jìn)行一些變換: AutoAugment,RandAugment - 對(duì)
Transpose
(上述的階段5)后的 224 的圖像進(jìn)行一些裁剪: CutOut,RandErasing,HideAndSeek,GridMask - 對(duì)
Batch
(上述的階段6) 后的數(shù)據(jù)進(jìn)行混合: Mixup,Cutmix
增廣后的可視化效果如 圖2 所示。
圖2 數(shù)據(jù)增廣后可視化
下文將介紹這些策略的原理與使用方法,其中,每種數(shù)據(jù)增廣策略的參考論文與參考開(kāi)源代碼均在下面的介紹中列出。
以 圖3 為測(cè)試圖像,第三節(jié)將基于測(cè)試圖像進(jìn)行變換,并將變換后的效果進(jìn)行可視化。
由于
RandCrop
是隨機(jī)裁剪,變換前后的圖像內(nèi)容可能會(huì)有一定的差別,無(wú)法直觀地對(duì)比變換前后的圖像。因此,本節(jié)將RandCrop
替換為Resize
。
圖3 測(cè)試圖像
三、圖像變換類(lèi)
圖像變換類(lèi)指的是對(duì) RandCrop
后的224 的圖像進(jìn)行一些變換,主要包括:
- AutoAugment[1]
- RandAugment[2]
3.1 AutoAugment
論文地址:https://arxiv.org/abs/1805.09501v1
開(kāi)源代碼github地址:https://github.com/DeepVoltaire/AutoAugment
不同于常規(guī)的人工設(shè)計(jì)圖像增廣方式,AutoAugment 是在一系列圖像增廣子策略的搜索空間中通過(guò)搜索算法找到的適合特定數(shù)據(jù)集的圖像增廣方案。針對(duì) ImageNet 數(shù)據(jù)集,最終搜索出來(lái)的數(shù)據(jù)增廣方案包含 25 個(gè)子策略組合,每個(gè)子策略中都包含兩種變換,針對(duì)每幅圖像都隨機(jī)的挑選一個(gè)子策略組合,然后以一定的概率來(lái)決定是否執(zhí)行子策略中的每種變換。
結(jié)果如 圖4 所示。
圖4 AutoAugment后圖像可視化
3.2 RandAugment
論文地址:https://arxiv.org/pdf/1909.13719.pdf
開(kāi)源代碼github地址:https://github.com/heartInsert/randaugment
AutoAugment
的搜索方法比較暴力,直接在數(shù)據(jù)集上搜索針對(duì)該數(shù)據(jù)集的最優(yōu)策略,其計(jì)算量很大。在 RandAugment
文章中作者發(fā)現(xiàn),一方面,針對(duì)越大的模型,越大的數(shù)據(jù)集,使用 AutoAugment
方式搜索到的增廣方式產(chǎn)生的收益也就越??;另一方面,這種搜索出的最優(yōu)策略是針對(duì)該數(shù)據(jù)集的,其遷移能力較差,并不太適合遷移到其他數(shù)據(jù)集上。
在 RandAugment
中,作者提出了一種隨機(jī)增廣的方式,不再像 AutoAugment
中那樣使用特定的概率確定是否使用某種子策略,而是所有的子策略都會(huì)以同樣的概率被選擇到,論文中的實(shí)驗(yàn)也表明這種數(shù)據(jù)增廣方式即使在大模型的訓(xùn)練中也具有很好的效果。
結(jié)果如 圖5 所示。
圖5 RandAugment后圖像可視化
四、圖像裁剪類(lèi)
圖像裁剪類(lèi)主要是對(duì)Transpose
后的 224 的圖像進(jìn)行一些裁剪,并將裁剪區(qū)域的像素值置為特定的常數(shù)(默認(rèn)為0),主要包括:
- CutOut[3]
- RandErasing[4]
- HideAndSeek[5]
- GridMask[6]
圖像裁剪的這些增廣并非一定要放在歸一化之后,也有不少實(shí)現(xiàn)是放在歸一化之前的,也就是直接對(duì) uint8 的圖像進(jìn)行操作,兩種方式的差別是:如果直接對(duì) uint8 的圖像進(jìn)行操作,那么再經(jīng)過(guò)歸一化之后被裁剪的區(qū)域?qū)⒉辉偈羌兒诨蚣儼祝p均值除方差之后像素值不為0)。而對(duì)歸一后之后的數(shù)據(jù)進(jìn)行操作,裁剪的區(qū)域會(huì)是純黑或純白。
上述的裁剪變換思路是相同的,都是為了解決訓(xùn)練出的模型在有遮擋數(shù)據(jù)上泛化能力較差的問(wèn)題,不同的是他們的裁剪方式、區(qū)域不太一樣。
4.1 Cutout
論文地址:https://arxiv.org/abs/1708.04552
開(kāi)源代碼github地址:https://github.com/uoguelph-mlrg/Cutout
Cutout 可以理解為 Dropout 的一種擴(kuò)展操作,不同的是 Dropout 是對(duì)圖像經(jīng)過(guò)網(wǎng)絡(luò)后生成的特征進(jìn)行遮擋,而 Cutout 是直接對(duì)輸入的圖像進(jìn)行遮擋,相對(duì)于Dropout,Cutout 對(duì)噪聲的魯棒性更好。作者在論文中也進(jìn)行了說(shuō)明,這樣做法有以下兩點(diǎn)優(yōu)勢(shì):(1) 通過(guò) Cutout 可以模擬真實(shí)場(chǎng)景中主體被部分遮擋時(shí)的分類(lèi)場(chǎng)景;(2) 可以促進(jìn)模型充分利用圖像中更多的內(nèi)容來(lái)進(jìn)行分類(lèi),防止網(wǎng)絡(luò)只關(guān)注顯著性的圖像區(qū)域,從而發(fā)生過(guò)擬合。
結(jié)果如 圖6 所示。
圖6 Cutout后圖像可視化
4.2 RandomErasing
論文地址:https://arxiv.org/pdf/1708.04896.pdf
開(kāi)源代碼github地址:https://github.com/zhunzhong07/Random-Erasing
RandomErasing
與 Cutout
方法類(lèi)似,同樣是為了解決訓(xùn)練出的模型在有遮擋數(shù)據(jù)上泛化能力較差的問(wèn)題,作者在論文中也指出,隨機(jī)裁剪的方式與隨機(jī)水平翻轉(zhuǎn)具有一定的互補(bǔ)性。作者也在行人再識(shí)別(REID)上驗(yàn)證了該方法的有效性。與Cutout
不同的是,在RandomErasing
中,圖片以一定的概率接受該種預(yù)處理方法,生成掩碼的尺寸大小與長(zhǎng)寬比也是根據(jù)預(yù)設(shè)的超參數(shù)隨機(jī)生成。
結(jié)果如 圖7 所示。
圖7 RandomErasing后圖像可視化
4.3 HideAndSeek
論文地址:https://arxiv.org/pdf/1811.02545.pdf
開(kāi)源代碼github地址:https://github.com/kkanshul/Hide-and-Seek
HideAndSeek
論文將圖像分為若干塊區(qū)域(patch),對(duì)于每塊區(qū)域,都以一定的概率生成掩碼,不同區(qū)域的掩碼含義如 圖8 所示。
圖8 HideAndSeek分塊掩碼圖
結(jié)果如 圖9 所示。
圖9 HideAndSeek后圖像可視化
4.4 GridMask
論文地址:https://arxiv.org/abs/2001.04086
開(kāi)源代碼github地址:https://github.com/akuxcw/GridMask
作者在論文中指出,此前存在的基于對(duì)圖像 crop 的方法存在兩個(gè)問(wèn)題,如 圖10 所示:
-
過(guò)度刪除區(qū)域可能造成目標(biāo)主體大部分甚至全部被刪除,或者導(dǎo)致上下文信息的丟失,導(dǎo)致增廣后的數(shù)據(jù)成為噪聲數(shù)據(jù);
-
保留過(guò)多的區(qū)域,對(duì)目標(biāo)主體及上下文基本產(chǎn)生不了什么影響,失去增廣的意義。
圖10 增廣后的噪聲數(shù)據(jù)
因此如果避免過(guò)度刪除或過(guò)度保留成為需要解決的核心問(wèn)題。
GridMask
是通過(guò)生成一個(gè)與原圖分辨率相同的掩碼,并將掩碼進(jìn)行隨機(jī)翻轉(zhuǎn),與原圖相乘,從而得到增廣后的圖像,通過(guò)超參數(shù)控制生成的掩碼網(wǎng)格的大小。
在訓(xùn)練過(guò)程中,有兩種以下使用方法:
- 設(shè)置一個(gè)概率p,從訓(xùn)練開(kāi)始就對(duì)圖片以概率p使用
GridMask
進(jìn)行增廣。 - 一開(kāi)始設(shè)置增廣概率為0,隨著迭代輪數(shù)增加,對(duì)訓(xùn)練圖片進(jìn)行
GridMask
增廣的概率逐漸增大,最后變?yōu)閜。
論文中驗(yàn)證上述第二種方法的訓(xùn)練效果更好一些。
結(jié)果如 圖11 所示。
圖11 GridMask后圖像可視化
五、圖像混疊
圖像混疊主要對(duì) Batch
后的數(shù)據(jù)進(jìn)行混合,包括:
- Mixup[7]
- Cutmix[8]
前文所述的圖像變換與圖像裁剪都是針對(duì)單幅圖像進(jìn)行的操作,而圖像混疊是對(duì)兩幅圖像進(jìn)行融合,生成一幅圖像,兩種方法的主要區(qū)別為混疊的方式不太一樣。
5.1 Mixup
論文地址:https://arxiv.org/pdf/1710.09412.pdf
開(kāi)源代碼github地址:https://github.com/facebookresearch/mixup-cifar10
Mixup 是最先提出的圖像混疊增廣方案,其原理簡(jiǎn)單、方便實(shí)現(xiàn),不僅在圖像分類(lèi)上,在目標(biāo)檢測(cè)上也取得了不錯(cuò)的效果。為了便于實(shí)現(xiàn),通常只對(duì)一個(gè) batch 內(nèi)的數(shù)據(jù)進(jìn)行混疊,在 Cutmix
中也是如此。
如下是 imaug
中的實(shí)現(xiàn),需要指出的是,下述實(shí)現(xiàn)會(huì)出現(xiàn)對(duì)同一幅進(jìn)行相加的情況,也就是最終得到的圖和原圖一樣,隨著 batch-size
的增加這種情況出現(xiàn)的概率也會(huì)逐漸減小。
結(jié)果如 圖12 所示。
圖12 Mixup后圖像可視化
5.2 Cutmix
論文地址:https://arxiv.org/pdf/1905.04899v2.pdf
開(kāi)源代碼github地址:https://github.com/clovaai/CutMix-PyTorch
與 Mixup
直接對(duì)兩幅圖進(jìn)行相加不一樣,Cutmix
是從一幅圖中隨機(jī)裁剪出一個(gè) ROI
,然后覆蓋當(dāng)前圖像中對(duì)應(yīng)的區(qū)域。
結(jié)果如 圖13 所示。
圖13 Cutmix后圖像可視化
六、實(shí)驗(yàn)
基于PaddleClas套件,使用上述幾種數(shù)據(jù)增廣方法在ImageNet1k數(shù)據(jù)集上進(jìn)行了實(shí)驗(yàn)測(cè)試,每個(gè)方法的分類(lèi)精度如下。
模型 | 初始學(xué)習(xí)率策略 | l2 decay | batch size | epoch | 數(shù)據(jù)變化策略 | Top1 Acc | 論文中結(jié)論 |
---|---|---|---|---|---|---|---|
ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | 標(biāo)準(zhǔn)變換 | 0.7731 | - |
ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | AutoAugment | 0.7795 | 0.7763 |
ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | mixup | 0.7828 | 0.7790 |
ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | cutmix | 0.7839 | 0.7860 |
ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | cutout | 0.7801 | - |
ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | gridmask | 0.7785 | 0.7790 |
ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | random-augment | 0.7770 | 0.7760 |
ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | random erasing | 0.7791 | - |
ResNet50 | 0.1/cosine_decay | 0.0001 | 256 | 300 | hide and seek | 0.7743 | 0.7720 |
注意:
-
在實(shí)驗(yàn)中,為了便于對(duì)比,將l2 decay固定設(shè)置為1e-4,在實(shí)際使用中,推薦嘗試使用更小的l2 decay。結(jié)合數(shù)據(jù)增廣,發(fā)現(xiàn)將l2 decay由1e-4減小為7e-5均能帶來(lái)至少0.3~0.5%的精度提升。
-
在使用數(shù)據(jù)增廣后,由于訓(xùn)練數(shù)據(jù)更難,所以訓(xùn)練損失函數(shù)可能較大,訓(xùn)練集的準(zhǔn)確率相對(duì)較低,但其擁有更好的泛化能力,所以驗(yàn)證集的準(zhǔn)確率相對(duì)較高。
-
在使用數(shù)據(jù)增廣后,模型可能會(huì)趨于欠擬合狀態(tài),建議可以適當(dāng)?shù)恼{(diào)小
l2_decay
的值來(lái)獲得更高的驗(yàn)證集準(zhǔn)確率。
七、測(cè)試增強(qiáng)
在網(wǎng)絡(luò)訓(xùn)練過(guò)程中,數(shù)據(jù)增強(qiáng)是提升模型能力的有效方式,目前在圖像分割、分類(lèi)和檢測(cè)場(chǎng)景中都取得了不錯(cuò)的模型訓(xùn)練效果。
數(shù)據(jù)增強(qiáng)同樣也可以應(yīng)用于測(cè)試階段,將原始的圖像進(jìn)行各種形式的變換得到多張圖片,比如圖像翻轉(zhuǎn),圖像旋轉(zhuǎn),圖像拉伸等操作,然后對(duì)這些圖片分別進(jìn)行推理,再對(duì)這多個(gè)結(jié)果進(jìn)行綜合分析以確定最終結(jié)果,這便是測(cè)試時(shí)增強(qiáng)( Test-Time-Augmentation,TTA)。
7.1. 測(cè)試時(shí)增強(qiáng)的原因
如果只對(duì)圖像做一種增強(qiáng)時(shí),采用的變換有可能會(huì)使圖像的關(guān)鍵信息丟失,從而導(dǎo)致后續(xù)任務(wù)得不到正確的結(jié)果。
7.2. 測(cè)試時(shí)增強(qiáng)的作用
通過(guò)分析多項(xiàng)數(shù)據(jù)增強(qiáng)的圖像,然后綜合分析,有可能會(huì)平滑掉某一種變換導(dǎo)致的關(guān)鍵信息丟失現(xiàn)象帶來(lái)的損失,從而提升預(yù)測(cè)的準(zhǔn)確率。
參考文獻(xiàn)
[1] Autoaugment: Learning augmentation strategies from data
[2] Randaugment: Practical automated data augmentation with a reduced search space
[3] Improved regularization of convolutional neural networks with cutout
[4] Random erasing data augmentation
[5] Hide-and-seek: Forcing a network to be meticulous for weakly-supervised object and action localization
[6] GridMask Data Augmentation
[7] mixup: Beyond empirical risk minimization文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-480290.html
[8] Cutmix: Regularization strategy to train strong classifiers with localizable features)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-480290.html
到了這里,關(guān)于深度學(xué)習(xí)應(yīng)用篇-計(jì)算機(jī)視覺(jué)-圖像增廣[1]:數(shù)據(jù)增廣、圖像混疊、圖像剪裁類(lèi)變化類(lèi)等詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!