36 數(shù)據(jù)增廣【動手學(xué)深度學(xué)習(xí)v2】

數(shù)據(jù)增廣(主要是關(guān)于圖像增強)
- 大型數(shù)據(jù)集是成功應(yīng)用深度神經(jīng)網(wǎng)絡(luò)的先決條件
- 圖像增廣在對訓(xùn)練圖像進行一系列的隨機變化之后,生成相似但不同的訓(xùn)練樣本,從而擴大訓(xùn)練集的規(guī)模
- 大多數(shù)圖像增廣方法都具有一定的隨機性
- 數(shù)據(jù)增廣不僅僅局限于處理圖片,還可以處理文本和語音
- 對于圖片的處理方式包括:覆蓋掉一些像素、對顏色進行變換、對亮度進行變換
在訓(xùn)練集中使用圖像增廣,隨機改變訓(xùn)練樣本可以減少模型對某些屬性(如位置、顏色等)的依賴,盡可能地模擬現(xiàn)場部署時的場景,提高模型的泛化性能
如何進行數(shù)據(jù)增廣
數(shù)據(jù)增強就是在已有的數(shù)據(jù)集上通過對數(shù)據(jù)的變換,使得數(shù)據(jù)具有多樣性
- 對于語音數(shù)據(jù)來說,可以加入不同的背景噪音
- 對于圖片數(shù)據(jù)來說,可以改變圖片的形狀,顏色等

- 上圖中右邊兩行小圖是對圖片進行數(shù)據(jù)增廣之后的結(jié)果
- 第1、2列是對原圖像進行部分截取之后的結(jié)果
- 第3、4列是對原圖像的亮度進行變換之后的結(jié)果
- 第5、6列是對原圖像的色溫進行變換之后的結(jié)果
如何使用增廣數(shù)據(jù)進行訓(xùn)練
一般來說,增廣數(shù)據(jù)都是在線生成的,而不是先進行數(shù)據(jù)增廣生成增廣數(shù)據(jù)之后再保存下來
- 先從原始數(shù)據(jù)中讀取圖片,然后隨機做數(shù)據(jù)增強(將不同的數(shù)據(jù)增強的方法隨機地用來處理原始數(shù)據(jù))生成增強數(shù)據(jù),再將增強數(shù)據(jù)放入模型中進行訓(xùn)練
- 核心是:1、在線生成,2、數(shù)據(jù)增強的方法是隨機的
數(shù)據(jù)增強可以看作是訓(xùn)練過程中的一個正則項
在測試的時候一般是不會進行圖像增強的
常見的數(shù)據(jù)增強方法
翻轉(zhuǎn)

圖片的翻轉(zhuǎn)包括左右翻轉(zhuǎn)和上下翻轉(zhuǎn)
- 左右翻轉(zhuǎn)圖像通常不會改變圖像的類別(最早且最廣泛使用的圖像增廣方法之一)
- 上下翻轉(zhuǎn)并不是一定可行的,如上圖最后一行圖片所示,當(dāng)對貓的圖片進行翻轉(zhuǎn)之后,貓的頭就會朝向下面,建筑物的圖片同理(上下翻轉(zhuǎn)取決于數(shù)據(jù)集是否適合上下翻轉(zhuǎn))
裁剪

切割一般是在圖片中切割一塊出來,然后將它變成固定的形狀(之所以是固定的形狀,是因為卷積神經(jīng)網(wǎng)絡(luò)的輸入通常是固定的,一般是224*224)
- 通過對圖像進行隨機裁剪,使物體以不同的比例出現(xiàn)在圖像的不同位置,從而降低模型對目標(biāo)位置的敏感性
如何進行切割(隨機性原理)
- 隨機高寬比:比如在某一個區(qū)間(比如[3/4,4/3])之間隨機取一個數(shù)來作為切割部分的高寬比
- 隨機大?。罕热缭谀骋粋€區(qū)間(比如[8%,100%])之間隨機取一個數(shù)來作為切割部分的大小(切割部分占原始圖像的比例)
- 隨機位置:給定截取部分的形狀大小,然后在原始圖像上面進行隨機切割
顏色

改變顏色中四個比較重要的指標(biāo)
- 色調(diào)
- 飽和度
- 對比度
- 明亮度
一般說實在某一個區(qū)間(比如[0.5,1.5])上隨機選定一個值,然后在該指標(biāo)的當(dāng)前值的基礎(chǔ)之上進行增減
其他

imgaug(https://github.com/aleju/imgaug)中提供了幾十種不同的圖像增強的方法
- 高斯模糊
- 將圖片中的某一塊抹掉
- 對整個圖片進行變形
- 銳化
- 等等
某一種數(shù)據(jù)增強的方法有用,很多時候是因為測試集中某些圖片和原始圖片通過這種數(shù)據(jù)增強的方式處理之后的效果類似
- 很多時候應(yīng)該從結(jié)果向前推,通過對現(xiàn)場部署的情況或者測試集可能發(fā)生的變化進行分析,由此來反推所需要進行的數(shù)據(jù)增強
- 在實踐中,通常結(jié)合多種圖像增廣方法
總結(jié)
- 數(shù)據(jù)增強通過變形數(shù)據(jù)來獲取多樣性從而使得模型泛化性能更好(基于現(xiàn)有的訓(xùn)練數(shù)據(jù)生成隨機圖像,以提高模型的泛化能力,本質(zhì)上是希望通過對原始數(shù)據(jù)的變化來模擬現(xiàn)場部署或者是測試集中可能出現(xiàn)的情況)
- 常見的圖片增強包括翻轉(zhuǎn)、切割、變色
- 為了在預(yù)測過程中得到確切的結(jié)果,通常會只對訓(xùn)練樣本進行圖像增廣,而在預(yù)測過程中不使用帶隨機操作的圖像增廣
- 在實踐中,通常會組合使用多種圖像增廣方法
Q&A
- 1、理論上,是不是如果原始樣本足夠多,就用不著做增廣??QA P3 - 00:00?
- 2、老師,num_worker 的值是不是根據(jù)機器 GPU 性能而設(shè)定的??QA P3 - 02:14?
- 3、老師,金融風(fēng)控領(lǐng)域經(jīng)常碰到的數(shù)據(jù)都是極度偏斜數(shù)據(jù)(欺詐樣本/正樣本比例只占 1%),是否可以針對正樣本試試類似的數(shù)據(jù)增強(之前使用重采樣,效果一般般)??QA P3 - 03:38?
- 4、老師,測試一般做什么樣的增廣?測試增廣在比賽中能提高精度,如何理解??QA P3 - 04:44?
- 5、老師,課件中提到的對比試驗固定了所有的隨機種子嗎?做完增廣之后,訓(xùn)練精度下降,是不是意味著還可以繼續(xù)訓(xùn)練,減少 gap ??QA P3 - 07:28?
- 6、請問老師圖片增廣之后需要一張張確認是否有效嗎??QA P3 - 09:36?
- 7、老師,做了圖片增廣之后,訓(xùn)練數(shù)據(jù)的分布可能會和測試數(shù)據(jù)的分布不一樣,那會對模型的最終精度有影響嗎??QA P3 - 09:59?
- 8、老師您好,后面會講圖神經(jīng)網(wǎng)絡(luò)嗎?聽說圖神經(jīng)網(wǎng)絡(luò)挺強大的,老師可以稍微講解一下嗎??QA P3 - 10:55?
- 9、老師,怎么理解 mosaic 這種增廣方式?把不同的圖片 crop 之后拼接在一起,label 也是拼接的,為什么有效呢??QA P3 - 12:02?
- 10、老師好,最后對比沒增廣的訓(xùn)練精度和測試精度時,訓(xùn)練集用的是測試集,那最后同時把這些作為訓(xùn)練集的測試集當(dāng)作測試集時,為什么測試精度不是100%呢??QA P3 - 13:49?
- 11、使用對一個事物的視頻描述做數(shù)據(jù)集,是不是效果會更有效,對比于這樣的增廣??QA P3 - 14:19?
- 12、多張圖片疊加,是不是也是一種有效的增廣方式??QA P3 - 15:06?
- 13、老師,做車輛位置識別,如果實際應(yīng)用場景攝像頭高度和角度清晰度和訓(xùn)練集不一樣,是不是只能針對場景單獨采集數(shù)據(jù)重新打標(biāo)訓(xùn)練??QA P3 - 15:14?
- 14、圖像增廣的樣本會不會跟原始樣本有混淆結(jié)果,比如樣本A做圖像增廣后A'跟樣本B相似度從80%升到了90%??QA P3 - 16:41?
- 15、如何理解多樣性增加,但是分布不變??QA P3 - 17:19?
- 16、mix-up增廣為什么有效?測試集中不會出現(xiàn)這樣的樣本??QA P3 - 18:42?
- 17、圖像增廣減少了類間差異,混淆了不同類別怎么辦?會出現(xiàn)這種情況嗎??QA P3 - 19:30?
- 18、老師,請問一下,想做一個加油錐套的的識別,并且測量實際距離。用 yolo 做識別后,有什么辦法能提高測量距離的精度?以及做數(shù)據(jù)集的時候有什么要注意的重點嗎??QA P3 - 20:11?
- 19、請問老師實際操作時使用 torchvision 好還是 albumentation 好??QA P3 - 20:49?
- 20、標(biāo)號怎么疊加?標(biāo)號是 label 嗎??QA P3 - 21:12?
----end----
其他參考:
1、《動手學(xué)深度學(xué)習(xí)》,課程安排,https://courses.d2l.ai/zh-v2/assets/pdfs/part-2_5.pdf
2、《動手學(xué)深度學(xué)習(xí)》,https://zh-v2.d2l.ai/chapter_computer-vision/image-augmentation.html