CVPR2020:Learning in the Frequency Domain(翻譯)(二)

圖像分析新方法:“頻域學習”(Learning in the Frequency Domain)

就是省略圖像壓縮/解壓縮中計算量最大的步驟,直接利用頻域特徵來進行圖像推理,減少系統中模塊之間的數據傳輸量,從而提升系統性能。輸入的數據量更小,深度神經網絡在圖像分類/分割任務上的精度反而提升了。

論文地址:https://arxiv.org/pdf/2002.12416.pdf

 圖1 (a)使用RGB圖像作爲輸入的傳統的基於CNN的方法的工作流程。

(b)採用DCT係數作爲輸入的方法的工作流程。CB表示CPU和GPU/加速器之間所需的通信帶寬。

3.算法

在本文中,我們提出了一種頻域學習的通用方法,包括數據預處理通道和輸入數據大小剪枝方法。

圖1顯示了我們的方法與傳統方法的比較。在傳統的方法中,高分辨率的RGB圖像通常在CPU上進行預處理,然後傳輸給GPU/AI加速器進行實時推理。由於RGB格式的未壓縮圖像通常很大,因此CPU和GPU/AI加速器之間的通信帶寬要求通常很高。這種通信帶寬可能成爲系統性能的瓶頸,如圖1(a)所示。

爲了降低計算成本和通信帶寬的要求,將高分辨率的RGB圖像向下採樣到更小的圖像中,往往會導致信息丟失和推理精度下降。在我們的方法中,高分辨率的RGB圖像仍然在CPU上進行預處理。然而,它們首先被轉換到YCbCr顏色空間,然後轉換到頻域。

這與最廣泛使用的圖像壓縮標準(如JPEG)一致。所有相同頻率的分量被分組到一個信道中。這樣,就產生了多個頻率通道。如3.2節所示,某些頻率信道對推理精度的影響要大於其他信道。因此,我們建議只保留和傳輸最重要的頻率通道到GPU/AI加速器進行推理。與傳統方法相比,該方法要求較少的通信帶寬,同時具有較高的精度。

我們證明了頻率域的輸入特徵可以應用於所有現有的空間域CNN模型,並且只需進行最小的修改。具體來說,只需要刪除輸入CNN層並保留剩餘的剩餘塊。將第一殘差層作爲輸入層,修改輸入通道的數量以適應DCT係數輸入的尺寸。因此,修改後的模型可以保持與原始模型相似的參數數量和計算複雜度。

基於我們的頻域模型,我們提出了一種基於學習的信道選擇方法來探索給定CNN模型的譜偏,即,哪些頻率分量對後續推理任務更有幫助。這一發現促使我們在保持推理準確性的同時,對瑣碎的頻率成分進行刪減,從而大大減少了輸入數據的大小,從而降低了域轉換的計算複雜度和所需的通信帶寬。

圖2  用於頻域學習的數據預處理管道

3.1  頻域數據預處理

數據預處理流程如圖2所示。我們遵循空間域的預處理和擴展流,包括圖像調整大小、裁剪和翻轉(圖2中的空間調整大小和裁剪)。然後將圖像轉換到YCbCr顏色空間,再轉換到頻域(圖2中的DCT變換),再將相同頻率的二維DCT係數分組到一個通道中,形成三維DCT立方體(圖2中的DCT整形)。正如3.2節中所討論的,選擇有效的頻率通道的一個子集(DCT通道選擇如圖2所示)。所選頻道YCbCr色彩空間的連接在一起,形成一個張量(DCT連接如圖2所示)。最後,每個頻道都是歸一化的均值和方差計算訓練數據集。

首先考慮亮度通道(Y channel)。假設我們使用圖像壓縮標準中默認的8x8作爲塊的尺寸(blocksize)。對於每一個塊(block),我們會得到64個DCT的信號,對應了64個不同的頻率分量。如果我們原始的圖像的尺寸是W x H, 那麼我們將會有W/8 x H/8 個DCT信號組成的塊。每個塊中相同位置的頻率分量可以組成一個尺寸爲W/8 x H/8的特徵圖片(feature map),這樣我們會產生8x8=64個feature map。同樣的對於Cb和Cr通道,我們也可以各自產生64個feature map。總共產生了64x3=192個feature map。假設W=H=448, 那麼現有的基於頻域的feature map的尺寸爲56x56x192。現在的問題是如何將這些feature map合理的輸入到一個已有的DNN網絡結構中,使得feature map的尺寸和已有DNN網絡的尺寸吻合。

爲了便於理解,我們以ResNet-50作爲基礎的圖像分類舉例。ResNet-50通常接受的圖片輸入尺寸爲224x224. 在經過一次convolutional layer (stride=2)和pooling之後,此時網絡的feature map的尺寸爲56x56,和我們產生的頻率信號的feature map尺寸吻合。我們可以將192個56x56的頻域feature map全部或者部分直接接在ResNet-50的第一個Residue Block之前,從而達到不改變ResNet-50的結構而實現從頻域做機器識別的目的。如果我們從192個feature map中選取的64個,則和一個標準的ResNet-50在這一層的feature map個數相同,則網絡結構和ResNet-50達到了完全一致。這個過程如下圖所示。值得注意的是,由於我們做了8x8的DCT變換,我們實際輸入的圖片大小爲448x448,是標準ResNet-50輸入(224x224)的兩倍。正因爲我們提高了輸入圖片在空間域的分辨率,我們在後續的實驗中可以得到更好的識別精度。

3.2  基於學習的頻道選擇

圖像壓縮理論的基礎是人眼對於不同色彩空間和頻率分量有不同的敏感度,因此我們可以對Cb,Cr通道降採樣,也可以對每個DCT信號中高頻分量設置更大的量化區間。然而,我們對於這些頻率分量對於機器學習的重要性並不瞭解。如果我們可以忽略掉其中不重要的feature map,就可以不用將這部分數據從圖像解碼模塊傳輸到圖像推理引擎中,從而節省這部分可能成爲瓶頸的帶寬。

我們現在面臨的問題是如何在這192個feature map中做出選擇。類比人類視覺系統,在這192個feature map中,我們能否猜想Y通道和低頻分量對應的feature map似乎更重要?如果是這樣的話,我們如何確定Y通道中應該選擇多少個feature map,而CbCr通道有應當選擇多少個feature map?在這一部分,我們提出了利用機器學習中添加gate的方法來學習每一個feature map的重要性。在訓練中,不僅圖像推理的DNN中的weights被訓練出來,同時每一個feature map的重要性也被確定。

上圖展示了利用gate來選擇重要的feature map的方法。原始所有頻率分量組成的feature map的尺寸爲WxHxC,其中C代表了feature map的個數,正如我們前面介紹的那樣,在實驗中使用的是C=192. 每個feautre map通過average pooling將會生成一個1x1xC的特徵向量,其中每個數值代表了對應feature map。這個特徵向量通過一個fully connected layer生成一個1x1xCx2的特徵向量對。每一對數字表示這個對應的feature map是否重要,如果index爲0的數字比index爲1的數字更大,那麼這個feature map被認爲不重要,整個feature map將會被忽略而不參與後續DNN的計算;反過來說,如果index爲1的數字比index爲0的數字更大,那麼這個feature map被認爲重要,將會參與後續DNN的計算。這個操作等效於使用了一個開關(gate)來控制每一個頻率信息組成的feature map是否流通到後續的計算中。

具體而言,由於我們使用了argmax函數來選擇更大的index進而表示feature map是否被選擇參與計算,我們需要一種特殊的方法在訓練中將gradient傳播到這C個開關的控制網絡中。這種方法名爲Gumbel-softmax 。

由於頻率分量對應的開關被選爲通過的數量決定了輸入DNN的數據帶寬,我們把選擇爲通過的開關的比例作爲loss function中的一項,另一項就是對應機器學習任務中原始的loss。通過最小化loss function來實現機器學習任務精度和輸入DNN數據帶寬的平衡。
3.3  靜態頻率通道選擇

現在我們擁有了選擇重要的feature map的方式,我們有兩種方案來減少從圖像解碼模塊到圖像推理引擎的數據帶寬,這兩種方式我們稱之爲動態(Dynamic)方式和靜態(Static)方式。

所謂動態方式,就是每一個頻率分量的選擇開關由當前輸入的圖像決定,這種方法可以自適應每一次圖像推理(inference)的不同輸入。由於選擇開關的網絡十分簡單,我們可以將其放在圖像解碼模塊中。這樣從圖像解碼模塊到圖像推理引擎之間只需要對被選擇的頻率分量對應的feature map進行數據傳輸,可以極大的減少這兩個模塊之間的帶寬需求(see 3rdrow in Figure 12)。

所謂靜態方式,就是我們通過訓練(training)得到最重要的一些頻率分量。在做圖像推理(inference)的時候,我們事先就確定只用這些事先確定好的頻率分量對應的featuremap,而不會根據不同的圖像進行自適應選擇。這種靜態方式在inference的時候無需選擇開關的網絡。這種方式不僅可以節省圖像解碼模塊到圖像推理引擎的帶寬,還可以在編碼模塊中忽略不重要的頻率分量,進而減少圖像編碼的計算量,延時,以及網絡傳輸的帶寬。值得一提的是,通常網絡傳輸的帶寬遠小於機器內部組件之間的帶寬。

4.結果展示

爲了演示基於頻率分量的機器學習系統和方法,我們選取了兩個有代表性的機器學習任務,即圖像分類(image classification)和實例分割(instance segmentation)。

4.1 Image Classification

圖像分類的任務是對給定的圖像進行類別的區分。我們使用ImageNet作爲數據集,其中包括大約128萬張訓練圖像和5萬張測試圖像,總共1000個類別。我們使用了ResNet-50 和MobilenetV2 作爲DNN的網絡結構。MobilenetV2使用了depth-wise convolution的方式,極大的減少了深度神經網絡的計算量和網絡的參數量。因此MobilenetV2有很大的潛力作爲移動端圖像推理引擎。

經過我們的訓練,我們得到了一張不同頻率分量重要性的Heat map。下圖描述了對應192個頻率分量的重要性程度。我們可以看出,和我們直覺一致的是,Y通道的重要性高於Cb和Cr通道,同時低頻分量的重要性高於高頻分量。利用我們提出的gated方法,我們可以通過一次訓練就瞭解該如何分配帶寬資源。以下圖爲例,我們可以使用14個Y通道,5個Cb通道5個Cr通道,共計24個feature map來做圖像分類的任務,而不用將最初的192個feature map的數據都從圖像解碼模塊傳輸到圖像推理引擎中。這樣我們的傳輸帶寬需求降低爲原來的八分之一,而推理的精度(accuracy)反而從標準ResNet-50的75.78%提升至77.196% (see DCT-24 in Table  (a))。同樣的,在MobileNetV2的實驗中,我們通過選取最重要的24個頻率分量,得到的識別精度從標準MobileNetV2的71.702%提升至72.364% (see DCT-24 in Table (b) ). 其它的結果,例如選取64,48,12,6個頻率分量的精度也展現在Table14中。值得一提的是,根據Figure 13的展示,我們發現低頻分量在識別中相對重要,因此我們也嘗試了使用heuristic的方式,選取了一個上三角的區域。例如對於DCT-24,我們直覺選取的是Y channel的[0-13],Cb和Cr channel的[0-4]編號的頻率分量。這些頻率分量和下圖中的heatmap略有不同,但是識別的精度幾乎沒有區別 (See DCT-64T, DCT-48T, and DCT-24T in Table (a) )。這說明我們並不需要對於每個不同的任務都嘗試首先獲得heatmap,然後嚴格的按照heatmap來選取頻率分量。我們直觀上可以選擇低頻分量(例如這些上三角得到區域),達到和嚴格按照heatmap選擇相同的精度。

3.2 Instance segmentation

實例分割(instance segmentation)結合了物體檢測(object detection) 和語義分割(semanticsegmentation)的需求,它的任務是檢測出圖像中的每個物體對應的像素點,同時將每一個檢測出的物體分類。如下圖所示,實例分割任務需要檢測出物體(例如,人,足球)的boundingbox,還需要在這個bounding box中將屬於該物體的像素標註出來。

 

我們使用了COCO的數據集,其中包含了約10萬張訓練圖像和5千張測試圖像。我們使用了Mask RCNN 作爲深度神經網絡結構。Mask RCNN首先會檢測出物體的bounding box,然後在bounding box內部的每個像素做二分,確定其是否屬於該物體。

Table 展示了我們在DCT頻域做物體識別和實例分割的精度對比。可以看到,從頻域做這兩個任務,我們可以提升大約0.8%的精度(37.3%到38.1% 以及 34.2%到35.0%)。

 

5.總結

在本文中,我們提出了一種頻域學習方法(使用DCT係數作爲輸入),並證明了它在分類、檢測和分割等多種任務上的通用性和優越性。我們的方法對現有的接收RGB輸入的CNN模型的修改很少,因此可以普遍應用於現有的網絡訓練和推理方法。

結果表明,與傳統的空間降採樣方法相比,頻域學習方法在預處理階段能更好地保存圖像信息,從而提高了圖像的精度。我們提出了一種基於學習的動態信道選擇方法,並通過實驗證明了CNN模型對低頻信道比對高頻信道更敏感。實驗結果表明,在不降低或降低分類、目標檢測和實例分割任務的精度的情況下,使用所提出的信道選擇方法可以削減高達87.5%的頻率信道。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章