DL、ML筆記(20): YOLO v4 Reference(1): Data Augmentation

YOLOv4: Optimal Speed and Accuracy of Object Detection

JianJie
12 min readNov 11, 2021

在Convolution Network中,有許多方法可以提升檢測的效果,針對大型資料集的處理方法,或是針對特定問題的調整技巧,YOLOv4中引用先前Paper中多種改進方法,並加以調整,使其實現精度與速度的平衡。

YOLOv4 改進總整理:

  1. 提供一個使用單一GPU就可以進行訓練的模型
  2. 驗證YOLOv4中多項改進,包含Bag-of-Freebies及Bag-of-Specials
  3. 調整多種方法,使其更適用單GPU訓練模型

本篇文章首先會介紹YOLOv4 Reference中 Bag-of-Freebies 的 Data Augmentation,剩餘其他部分 Bag-of-Freebies、Bag-of-Specials及YOLO v4的實際改進會再之後的文章再介紹。

YOLO v4 Reference: Bag-of-Freebies

提升Accuracy,只增加Training時間成本,不增加Inference時間

Data Augmentation

在進行深度學習訓練時,我們經常需要海量的資料以確保訓練時不會產生過度擬合(over-fitting)的現象,但是資料量有時會不足或是資料變異性過小,因此需要創造更多的「假」資料,來彌補我們資料不足的缺憾

CutOut

隨機選擇一固定大小的方框,並在方框中全填0,並在訓練時,將Dataset Normalize至0,避免資料Batch的分布改變過大的情況。

方框可位於圖片中任意位置,可以使方框只有部分位於圖片中,這種做法相等於可變大小的遮蔽。而且作者發現CutOut的大小比起形狀影響更大,因此CutOut形狀使用方形即可。

CutOut 遮蔽效果

Random Erase

Random Erase是隨機選擇矩形大小及比例,並且隨機填充其中數值(0~255),並限制其遮蔽區域只能位於圖片中,不可超出圖片,以達到Data Augmentation的效果,其中有三個超參數可以設定,遮蔽的機率、遮蔽與圖片面積的比例、遮蔽矩形的長寬比,其效果如下圖:

Random Erase 遮蔽效果

Random Erase可以分為三種型式:

  1. IRE, Image-aware Random Erasing, 在整體圖片上隨機選擇位置遮蔽
  2. ORE, Object-aware Random Erasing, 只在有目標物體之區域隨機遮蔽
  3. I+ORE, Image and Object-aware Random Erasing, 綜合以上兩種方式,隨機遮蔽

也可以與其他Data Augmentation結合,如Random Croping,可以取得更佳的效果

不同 Data Augmentation 效果比較

Hide-and-Seek

Hide-and-Seek是將圖片切割為SxS的網格,每個網格有隨機遮蔽的機率,並設置為0。當作為分類最主要的的區域被遮蔽後,可以迫使模型去學習物體較為次要區域進行分類。

訓練時使用有遮蔽的圖片,使網路學習物體各個局部特徵,而測試時則使用完整的圖片,使網路綜合所有局部特徵

使用CAM(Class Activation Map)觀察模型依據圖片中哪些位置進行檢測,將對該類別有影響之Feature乘上對應之Weight,最後綜合為該Class的Activation Map。

Grid Mask

Grid Mask是一種訊息刪除的方法,其中最重要的部分為避免目標訊息的過度去除或是過度保留,因此作者使用等間距的Block進行遮蔽。

以下是方法的比較,Cutout及Random Erase都只刪除一個區域,可能造成目標訊息過度保留或是過度刪除;HaS則是將圖片平均分塊,隨機去除各區塊,但因為每塊皆是獨立機率,因此可能會有一次刪除多塊或是刪除過少的狀況。而等間距Block的遮蔽(Grid Mask)則可以較平衡以上狀況。

而作者也實驗兩種於訓練時遮蔽的形式,第二種形式會有更好的效果

  1. 設定一個固定採用GridMask的機率,從一開始訓練到結束
  2. 逐漸提升GridMask採用機率,隨著訓練epoch增加,採用機率從0提高至0.8
Grid Mask效果比較

DropOut

DropOut與以上幾種方法雷同,但DropOut是應用於Feature Maps,對每個Feature隨機去除,可以漸少Overfitting的狀況

DropOut可以減少Overfitting的理由有幾個,綜合結果及減少神經元間過度複雜的關係。一般情況下,使用相同的訓練資料訓練出不同模型,之後將所有的模型輸出取平均,就可以減少Overfitting的狀況,而DropOut就可達到類似的效果,每次對模型DropOut就等於產生新模型,多次訓練就擁有多個模型,而在測試時則會使用最完整的模型,相等於綜合多個模型的結果,因此可以減少Overfitting的情況

DropOut也可以減少神經元間過度複雜的關係。在訓練時,網路會逐漸學習資料的模式,但也可能造成每個神經元學習到固定的模式,神經元間的關係相當固定,這也是造成Overfitting的原因,而DropOut就可以降低這個問題,降低神經元間的依賴性。

DropConnect

DropConnect與DropOut相當類似,DropOut是將整個神經元去除,DropOut則是去除單一Weight,這個方法效果與DropOut差不多,但計算成本較高,因此較少使用。

Spatial DropOut

Spatial Dropout則是將一批數據綁定(timestep維度上),清除資料格式: (X, Y, 1),直接清除單一kernal對應的channel,在數據間擁有關聯性時,如圖片(2D CNN) or 練續資料(1D CNN),Spatial Dropout擁有更佳的效果,由於一個channel都是由同一組Kernal計算而產生,可以視為清除網路中一組kernal對網路的輸出。

Dropout VS Spatial Dropout
Spatial Dropout

DropBlock

影像是有空間關聯性,DropOut則是隨機對Feature Map中單一Pixel去除,而每個Feature Map的位置都有一個感受野,去除單一Pixel不能降低Feature Map學習的範圍,依然可以由相鄰的Pixel取得特徵,因此應用於圖片時效果較差,較適合應用於全連接層,而DropBlock是隨機去除區塊,應用圖片中效果較好。

其中需要設定兩個參數block_size及gamma,block_size為去除方框的大小(邊長);gamma則是與DropOut定義相同,為每個元素被去除的機率,綜合這兩個參數,可以計算出圖片保留的機率keep_prob,其計算式如下:

其等於:

由於Block會重疊,因此上方的公式只是近似值。

Scheduled DropBlock:

在訓練過程中,使用固定keep_prob的效果不佳,過小的keep_prob在訓練初期影響很大。因此一開始設keep_prob為1,並在訓練期間以線性方式逐漸調降keep_prob,可以得到較佳的效果。

MixUp

在機器學習中,我們經常使用ERM經驗風險最小化(Empiried risk minization),在假設空間、損失函式以及訓練集確定的情況下,經驗風險函式就可以確定。假設給定一個數據集:

模型f(x)關於訓練數據集的平均損失成為經驗風險或經驗損失:

這就是目前監督式學習模型訓練的方式,但根據經驗學習的模式在資料不足時很容易產生Overfitting的問題,或是因為資料空間分布不連續,因此分類界線較為強硬的狀況。

資料標註方面,皆為One Hot非正即負,資料間為獨立事件,使用MixUp可使樣本間為線性關係,也可減少標註時錯誤的影響。

因此Data Augmentation就是希望在資料空間分布較為離散的狀況下,使數據空間較為連續,增加模型的泛化性,其效果如下圖:

這篇Paper使用ERM的延伸VRM相鄰風險最小化(Vicinal Risk Minimization),其概念為在資料空間中訓練資料的周圍也可以視為相同的類別,且不考慮不同類類別資料間的關係,將資料混合,增加資料連續性:

其混和方式就是將圖片直接按比例相加,而Label也是按比例混合,使資料更加線性,線性關係可以使模型在訓練數據外的樣本擁有較好適應性,但在相同標籤下,Mix不能達到效果。也不能使用Softmax,否則失去線性效果。

CutMix

CutMix與CutOut類似,CutOut是將輸入圖片的部分區域去除,就是進行圖片遮蔽,而CutMix則是將遮蔽的區域用其他圖片填滿,因此可以視為CutMix為CutOut、MixUp的混合版本,保留兩種方法的優點:

優點:

  1. 訓練資料不會出現非現實的圖樣或是無訊息區域,可以提高訓練效率 (MixUp、CutOut)
  2. 保留Region Dropout的模式,使網路學習次要特徵或non-discriminative區域,增強模型定位能力 (CutOut)

CutMix是將兩張圖片混合,使用Lambda調整混合的比例,調整混合圖片的長寬,標籤也是使用相同的方式混合。

而CutMix效果相比MixUp及CutOut,可以同時訓練兩個目標,並且更能根據物體局部範圍進行檢測。CutOut只能檢測單一物體,但可以使模型專注於較難分割的區域。而MixUp則是充分使用整張圖片,但會有許多不自然的訊息影響模型。

Mosaic

Mosaic為YOLOv4中參考CutMix的做法,混合不同圖片進行資料擴增。CutMix是將一張圖片裁切部分區域,並使用另一張圖片填充,並對One Hot Label進行圖片比例的平衡。而Mosaic則是取四張圖片拼接,但不對Label進行處理。

其步驟為:

  1. 隨機取四張圖片,並分別進行翻轉、縮放、旋轉、顏色變化等基礎資料擴增方法
  2. 將四張圖片按照順序擺放於四個角落,並根據預設的圖片邊界裁切四張圖片並拼接
  3. 調整位於拼接邊界的物體對應之Bounding Box, 由於拼接時會裁切圖片,因此部分邊界框會超出圖片,跨越至其它拼接的圖片中,因此需要對Bounding Box進行調整

其最後合成的圖片如下圖,其作用就相等於一次學習四張圖片,並且都分別擁有CutOut的效果,等同於增加Batch Size,並且增加背景的多樣性,有助於提高檢測效果。

Style Transfer GAN
(IMAGENET-TRAINED CNNS ARE BIASED TOWARDS TEXTURE)

這篇論文中說道,神經網路除了使用物體”形狀”進行判別之外,有一大部分是使用物體的”紋理”來進行判別,其可能會發生誤判的狀況如下圖:

合成圖像分類結果

左圖為大象的皮膚,網路可以判別出這是大象,中間是貓,右邊是將大象皮膚的紋路加上貓的形狀,而在這個狀況下,人會判斷為貓,但網路判斷結果為大象,這個強烈的對比證明人與網路擁有不同的分類策略。為了證明以上現象,作者取兩種不同物體,分別取形狀及紋路混合成新圖片,將人員及多個分類模型判別結果進行比較,證明神經網路多數是利用紋理來進行判別。

人員及模型分類依據

根據上面結果,需要教導網路學習使用物體”形狀”來進行判別,減少”紋路”判別的比重。作者使用AdaIN 對原始的ImageNet圖片進行轉換,形成新的Dataset (Stylized-ImageNet, SIN),減少原始圖片的紋理訊息,保留形狀訊息。

最後可以發現使用形狀進行分類可以擁有更佳的分類性能,並更能適應圖片的變化(自動降噪),提高模型泛化能力。

資料擴增分類特徵依據及效果比較

--

--

JianJie

Image Processing / Computer Vision / Deep Learning