為什么要做數(shù)據(jù)增強?
可能面臨的一個常見挑戰(zhàn)是模型的過擬合。這種情況發(fā)生在模型記住了訓練樣本的特征,但卻無法將其預測能力應用到新的、未見過的圖像上。過擬合在計算機視覺中尤為重要,在計算機視覺中,我們處理高維圖像輸入和大型、過度參數(shù)化的深度網(wǎng)絡。有許多現(xiàn)代建模技術可以解決這個問題,包括基于丟棄的方法、標簽平滑或架構,這些方法可以減少所需的參數(shù)數(shù)量,同時仍能保持擬合復雜數(shù)據(jù)的能力。但是,對抗過擬合的最有效方法之一是數(shù)據(jù)本身。
深度學習模型通常需要大量數(shù)據(jù),而提高模型性能的一種有效方法是提供更多數(shù)據(jù),這是深度學習的核心要素。這可以通過兩種方式完成:
- 增加原始數(shù)據(jù)量。這是通過增加數(shù)據(jù)集中的圖像數(shù)量來實現(xiàn)的,從而擴充了圖像的基本分布,并有助于優(yōu)化模型的決策邊界,對抗過擬合。您擁有的樣本越多(比如來自分類問題的特定類別),您就能更準確地描述該類別的特征。
- 增加數(shù)據(jù)集的多樣性。值得一提的是,無法泛化到新數(shù)據(jù)也可能是由數(shù)據(jù)集/分布偏移引起的。想象一下,使用一組訓練后的狗在公園里的圖像對狗品種進行分類,但在生產(chǎn)中的其他地方看到狗。擴大訓練數(shù)據(jù)集以包含這些類型的圖像可能會對模型的泛化能力產(chǎn)生巨大影響。(但大多數(shù)時候,圖像增強將無法解決這個問題)。
然而,收集數(shù)據(jù)通常既昂貴又耗時。例如,在醫(yī)療保健應用中,收集更多數(shù)據(jù)通常需要接觸患有特定疾病的患者,熟練的醫(yī)療專業(yè)人員花費大量時間和精力來收集和注釋數(shù)據(jù),并且通常使用昂貴的成像和診斷設備。在許多情況下,“獲取更多數(shù)據(jù)”的解決方案將非常不切實際。此外,除了在遷移學習中使用之外,公共數(shù)據(jù)集通常并不適用于定制的計算機視覺問題。如果有某種方法可以在不返回數(shù)據(jù)收集階段的情況下增加數(shù)據(jù)集的大小,那不是很好嗎?這就是數(shù)據(jù)增強。
等等,什么是數(shù)據(jù)增強?
數(shù)據(jù)增強是通過各種轉換從現(xiàn)有訓練樣本中生成新的訓練樣本。它是一種非常有效的正則化工具,幾乎所有 CV 問題和模型的專家都在使用它。數(shù)據(jù)增強可以以一種非常簡單有效的方式將幾乎任何圖像訓練集的大小增加 10 倍、100 倍甚至無限大。從數(shù)學上講:
更多的數(shù)據(jù)=更好的模型。數(shù)據(jù)增強 = 更多數(shù)據(jù)。因此,數(shù)據(jù)增強 = 更好的機器學習模型。
數(shù)據(jù)增強技術
上圖所示的方法列表絕不是詳盡無遺的。還有無數(shù)其他方法可以操作圖像和創(chuàng)建增強數(shù)據(jù)。你只受限于自己的創(chuàng)造力!
也不要覺得只限于孤立地使用每種技術。您可以(并且應該)將它們鏈接在一起,如下所示:
圖像來源
數(shù)據(jù)增強的注意事項和潛在陷阱
- 毋庸置疑,在將數(shù)據(jù)集拆分為訓練、驗證和測試子集后,應該進行任何數(shù)據(jù)增強。否則,您將在模型中造成重大數(shù)據(jù)泄漏,并且您的測試結果將毫無用處。
- 如果您正在執(zhí)行基于本地化的任務(如對象檢測或分割),則在應用幾何變換(如反射(翻轉)、旋轉、平移和裁剪)時,您的標簽將發(fā)生變化。因此,您還需要將相同的轉換應用于標簽注釋。
- 裁剪圖像時,會更改模型輸入的大小和形狀。對于卷積神經(jīng)網(wǎng)絡模型,您需要所有輸入(包括測試集)具有相同的維度。處理此問題的常用方法是將裁剪轉換也應用于測試集和驗證集。調(diào)整圖像大小是另一種選擇。
- 其中一些轉換(如平移、旋轉或縮放)可能會導致“空白區(qū)域”,即轉換后的圖像未完全覆蓋輸入模型的網(wǎng)格空間。在這些情況下,您可以使用恒定的黑/白/灰像素、隨機噪聲或擴展原始圖像內(nèi)容的插值來填充多余的像素。
- 注意不要裁剪或平移太多,以免從圖像中完全刪除相關對象。當您知道對象檢測任務中的邊界框時,這很容易檢測到,但如果完全裁剪掉與標簽對應的對象,則可能會成為圖像分類的問題。
- 數(shù)據(jù)增強通常只在訓練集上執(zhí)行。雖然它也可以用作在非常小的驗證甚至測試集中減少方差的策略,但在對測試集進行任何更改時應始終非常小心。您希望測試數(shù)據(jù)是對推理時間分布中看不見的示例的性能的無偏估計,而增強數(shù)據(jù)集可能與該分布不同。
- 不建議同時使用過多的增強技術。你可能會想通過組合所有列出的轉換來一次把所有東西都扔進去,廚房水槽,但這會很快使生成的圖像變得非常不真實,人類無法識別,并且還會導致上述點中概述的潛在問題。使用所有這些轉換并沒有錯,只是不要一次組合所有這些轉換。
話雖如此,轉換后的圖像并不需要完美才能有用。數(shù)據(jù)量往往會超過數(shù)據(jù)質量。示例越多,異常值/錯誤圖像對模型的不利影響就越小,數(shù)據(jù)集的多樣性就越大。
盡管數(shù)據(jù)增強幾乎總是對模型性能有積極影響,但它并非解決所有與數(shù)據(jù)集大小相關問題的靈丹妙藥。你不能指望使用50張圖像的微小數(shù)據(jù)集,使用上述技術將其放大到50,000張,并獲得50,000張數(shù)據(jù)集的所有好處。數(shù)據(jù)增強可以幫助使模型對旋轉、平移、照明和相機偽影等內(nèi)容更加魯棒,但不適用于其他變化,例如不同的背景、透視、對象外觀的變化、場景中的相對位置等。
什么時候應該做數(shù)據(jù)增強?
您可能想知道“我應該在什么時候使用數(shù)據(jù)增強?什么時候有好處?答案是:總是!數(shù)據(jù)增強通常有助于規(guī)范化和改進您的模型,如果您以合理的方式應用它,則不太可能有任何缺點。唯一可以跳過它的情況是,如果你的數(shù)據(jù)集非常龐大和多樣化,以至于增強不會為其增加任何有意義的多樣性。但是我們大多數(shù)人都沒有奢侈地使用這樣的童話數(shù)據(jù)集??。
類不平衡的數(shù)據(jù)增強
擴增法也可用于處理類不平衡問題。與使用基于抽樣或加權的方法相比,你可以簡單地增加較小的類,使所有類的大小相同。
那么我應該選擇哪些轉換呢?
沒有一個確切的答案,但你應該從思考自己的問題開始。轉換生成的圖像是否完全超出了現(xiàn)實世界的支持范圍?即使公園里一棵樹的倒立圖像不是你在現(xiàn)實生活中會看到的,你也可能會看到一棵倒下的樹的類似方向。不過,有些變換可能需要重新考慮,例如:
- 垂直反射(倒置)十字路口的停車標志,用于自動駕駛中的物體識別。
- 倒置的身體部位或模糊/彩色圖像,用于放射學圖像,其方向、光照和清晰度始終保持 一致。
- 道路和社區(qū)衛(wèi)星圖像上的網(wǎng)格失真。(盡管這可能是應用輪換的最佳位置之一)。
- 數(shù)字分類 (MNIST) 的 180 度旋轉。這種轉換將使您的 6 看起來像 9,反之亦然,同時保留原始標簽。
你的轉換不一定是完全現(xiàn)實的,但你絕對應該使用在實踐中可能發(fā)生的任何轉換。
除了對任務和領域的了解,對數(shù)據(jù)集的了解也很重要。更好地了解數(shù)據(jù)集中圖像的分布情況,可以讓您更好地選擇哪種增強技術能為您帶來合理的結果,甚至可能幫助您填補數(shù)據(jù)集中的空白。Encord Active 是幫助您探索數(shù)據(jù)集、可視化圖像屬性分布和檢查圖像數(shù)據(jù)質量的一個很好的工具。
然而,我們是工程師和數(shù)據(jù)科學家。我們不只是根據(jù)猜想做出決定,我們還要嘗試和進行實驗。我們擁有久經(jīng)考驗的模型驗證和超參數(shù)調(diào)整技術。我們可以簡單地嘗試不同的技術,并選擇在驗證集上性能最大化的組合。
如果您需要一個良好的起點:水平反射(水平翻轉)、裁剪、模糊、噪點和圖像擦除方法(如剪切或隨機擦除)是一個良好的基礎。然后,你可以嘗試將它們組合在一起,并添加亮度和色彩變化。
視頻數(shù)據(jù)增強
視頻數(shù)據(jù)的增強技術與圖像數(shù)據(jù)非常相似,但有一些區(qū)別。通常,所選的變換將以相同的方式應用于視頻中的每一幀(噪點除外)。修剪視頻以創(chuàng)建較短的片段也是一種流行的技術(時間裁剪)。
如何實現(xiàn)數(shù)據(jù)增強
實施的具體細節(jié)取決于硬件、所選的深度學習庫、所選的轉換等。但通常有兩種策略可以實現(xiàn)數(shù)據(jù)增強:離線和在線。
離線增強: 離線數(shù)據(jù)增強是指計算一個新的數(shù)據(jù)集,其中包括所有原始圖像和轉換后的圖像,并將其保存到磁盤中。然后像往常一樣,使用增強數(shù)據(jù)集而不是原始數(shù)據(jù)集來訓練模型。這可能會大大增加所需的磁盤存儲空間,因此我們不建議您這樣做,除非您有特殊原因(如驗證增強圖像的質量或控制訓練過程中顯示的準確圖像)。
在線擴增: 這是最常見的數(shù)據(jù)增強方法。在在線增強中,每次加載圖像時都會對圖像進行轉換。在這種情況下,模型在每個時間點都會看到不同的圖像變換,變換結果不會保存到磁盤中。通常情況下,變換會在每個紀元隨機應用于圖像。例如,您將在每個時區(qū)隨機決定是否翻轉圖像、執(zhí)行隨機裁剪、采樣模糊/銳化量等。
TensorFlow 和 PyTorch 都包含各種模塊和函數(shù)來幫助您進行增強。如需更多選項,請查看 imgaug Python 庫。
專業(yè)人士使用哪些技術?
您可能仍然想知道:"訓練最先進模型的人是如何使用圖像增強技術的?讓我們一起來看看:
論文 | 數(shù)據(jù)增強技術 |
---|---|
LeNet-5 | Translate, Scale, Squeeze, Shear |
AlexNet | Translate, Flip, Intensity Changing |
ResNet | Crop, Flip |
DenseNet | Flip, Crop, Translate |
MobileNet | Crop, Elastic distortion |
NasNet | Cutout, Crop, Flip |
ResNeSt | AutoAugment, Mixup, Crop |
DeiT | AutoAugment, RandAugment, Random erasing, Mixup, CutMix |
Swin Transformer | RandAugment, Mixup, CutMix, Random erasing |
U-Net | Translate, Rotate, Gray value variation, Elastic deformation |
Faster R-CNN | Flip |
YOLO | Scale, Translate, Color space |
SSD | Crop, Resize, Flip, Color Space, Distortion |
YOLOv4 | Mosaic, Distortion, Scale, Color space, Crop, Flip, Rotate, Random erase, Cutout, Hide and Seek, GridMask, Mixup, CutMix, StyleGAN |
Erasing/Cutout: 等等,這些Cutout-混合-然后-修改的東西是什么?其中一些像 Cutout、Random erasing和 GridMask都是圖像擦除方法。執(zhí)行擦除時,您可以在圖像中剪切出正方形、不同形狀的矩形,甚至多個單獨的剪切/蒙版。還有多種方法可以使該過程隨機化。擦除是一種流行的策略,例如,在圖像分類的背景下,可以迫使模型學習識別每個單獨部分的對象,而不僅僅是通過擦除最獨特的部分來識別最獨特的部分(例如學習識別狗)通過爪子和尾巴,而不僅僅是臉)。擦除可以被認為是一種“輸入空間中的丟失”。
Mixing: 數(shù)據(jù)增強中的另一種流行技術是混合?;旌仙婕敖M合單獨的示例(通常屬于不同類別)以創(chuàng)建新的訓練圖像。混合比我們見過的其他方法不太直觀,因為生成的圖像看起來不真實。讓我們看一下幾種常用的技術:
Mixup: Mixup 通過兩個圖像的線性插值(加權平均)來組合兩個圖像。然后將相同的插值應用于類標簽。
混合圖像的示例。具有標簽(狗、貓)的二值圖像分類問題中相應的圖像標簽將為(0.52,0.48)。
什么?這看起來像是模糊的廢話!這些標簽值是什么?為什么這有效?
從本質上講,這里的目標是鼓勵我們的模型學習不同類別之間更平滑的線性過渡,而不是振蕩或行為不穩(wěn)定。這有助于在推理時穩(wěn)定模型在未見過的示例上的行為。
CutMix: CutMix 是 Cutout 和 Mixup 方法的組合。如前所述,混合圖像看起來非常不自然,并且在執(zhí)行本地化時可能會讓模型感到困惑。 CutMix 不是在兩個圖像之間進行插值,而是簡單地裁剪一個圖像并將其粘貼到第二個圖像上。與剪切相比,這也有一個好處,即剪切區(qū)域不僅會被丟棄并用垃圾替換,而且會被替換為實際信息。標簽權重類似 - 對于分類問題,標簽對應于增強圖像中存在的相應類圖像的像素百分比。為了定位,我們在合成圖像的各自部分中保留與原始圖像相同的邊界框或分割。
AugMix: Augmix 與上面的例子有點不同,但這里也值得一提。 AugMix 不會將不同的訓練圖像混合在一起 - 相反,它混合同一圖像的不同變換。通過探索圖像之間的輸入空間,這保留了混合的一些好處,并減少了對同一圖像應用多次變換帶來的退化影響。混合計算如下:
- 創(chuàng)建多個(默認為 3 個)增強圖像。每個增強圖像都是使用 1-3 種不同的變換創(chuàng)建的。
- 3個增強圖像通過加權平均混合
- 通過加權平均將所得圖像與原始圖像混合
AugMix增強過程。整個方法還包括其他部分,例如特定的損失函數(shù)。來源
高級技術,即“我不能使用 GAN 生成完全獨特的數(shù)據(jù)嗎”?
圖像增強仍然是一個活躍的研究領域,還有一些更先進的方法需要注意。以下技術更為復雜(尤其是最后兩種),并不總是最實用或最有效的實施策略。為了完整起見,我們列出了這些內(nèi)容。
特征空間增強: 特征空間增強包括在訓練期間對隱藏層表示而不是原始圖像執(zhí)行增強。這個想法是,與通過輸入空間相比,您更有可能遇到遍歷特征空間的隨機圖像。這可以通過向隱藏的表示添加噪聲、對它們執(zhí)行混合或其他方法來完成。
GAN: 另一種方法是使用生成模型(通常是 GAN)生成新的合成圖像,該模型學習底層數(shù)據(jù)生成分布。這可以無條件地完成,也可以從現(xiàn)有的訓練示例開始,例如,使用樣式轉移。對于視頻數(shù)據(jù),可以使用仿真技術來合成幀序列。
自動增強: 為給定問題找到增強技術的最佳組合可能非常耗時,并且需要領域和特定數(shù)據(jù)集方面的專業(yè)知識。如果計算機能為我們完成所有這些工作,那不是很好嗎?自動增強算法在可能的增強空間中搜索,以找到性能最佳的增強。像 AutoAugment 這樣的強化學習方法可以找到高性能的增強策略。還存在基于對抗性學習的方法,這些方法會產(chǎn)生難以分類的轉換。文章來源:http://www.zghlxwxcb.cn/news/detail-778881.html
結論
現(xiàn)在您知道什么是數(shù)據(jù)增強,以及它如何通過填寫數(shù)據(jù)集來幫助解決過擬合問題。您知道應該將數(shù)據(jù)增強用于所有計算機視覺任務。你對最重要的數(shù)據(jù)增強轉換和技術有一個很好的概述,你知道要注意什么,并且你已經(jīng)準備好將數(shù)據(jù)增強添加到你自己的預處理和訓練管道中。祝你好運!文章來源地址http://www.zghlxwxcb.cn/news/detail-778881.html
到了這里,關于【深度學習:數(shù)據(jù)增強】計算機視覺中數(shù)據(jù)增強的完整指南的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!