雲計算

計算機如何“看懂”圖片?達摩院提出新的研究方法

--------點擊屏幕右側或者屏幕底部“+訂閱”,關注我,隨時分享機器智能最新行業動態及技術乾貨------------

視覺-1.png

背景

近年來,基於深度神經網絡的機器學習方法在計算機視覺上獲得的巨大的成功。我們現在應用的主流的深度神經網絡都基於對空間域信號的處理和分析,即圖像或視頻的 RGB 信號。我們知道,現有的圖像視頻分析系統由多個模塊組成。例如,實時圖像分析系統由圖像獲取(capture),圖像壓縮(compression),圖像傳輸(transmission),圖像解壓縮(decompression),圖像推理(inference)組成。而對於非實時的圖像分析系統,這些保存在存儲中的圖像已經經過壓縮,因此需要經過解壓縮和圖像推理的模塊。以實時圖像分析系統為例,這個系統整體的性能(包括延時,功耗,精度等)取決於其中每一個模塊的性能。以往的瓶頸來自於圖像推理引擎,因為其中包含了非常大規模的計算量。由於這些計算具有結構性和並行度的特徵,近年來在 GPU 和人工智能專用芯片的幫助下,圖像推理引擎的性能得到了極大的提升。

因此,圖像壓縮/解壓縮在整個系統中的佔比會越來越大。例如在 Figure 1 中,我們看到在一個 GPU 的系統中圖像處理的時間佔比已經大約為圖像推理(inference)的兩倍之多[1]。

這篇文章介紹圖像分析系統的基本組成,以及我們如何利用頻域特徵來進行圖像推理,從而省略頻域到空間域的轉換,因為這個轉換是圖像壓縮/解壓縮中計算量最大的步驟。同時我們可以在頻域選擇重要的信息,進一步減少系統中模塊之間的數據傳輸量。因為模塊之間的數據帶寬往往遠小於模塊內部的數據帶寬,減小模塊間的數據傳輸量便可以提升整個系統的性能。

image.png

Figure 1. Latency breakdown in a single inference

本文的主要貢獻如下:

  • 第一,我們提出了一種系統方法可以在基本不改變現有的卷積神經網絡(如 ResNet,MobileNet 等)的前提下做基於頻域的機器識別。
  • 第二,由於基於頻域的機器識別可以在不增加計算量的前提下,接受空間域尺寸更大的圖片,因此提高了圖像識別的精度。
  • 第三,我們提出了一種系統方法來區分每個頻域分量對於機器學習的重要性,並且發現僅有很少部分的頻域分量實際上對機器學習有貢獻。
  • 第四,之前基於頻域的機器學習只完成了單一物體的圖像分類 (single object recognition),我們首次將基於頻域的機器學習擴展到了圖像的物體檢測(object detection)和語義/實例分割(instance segmentation)任務中,通常物體檢測和語義/實例分割被定義為高級視覺(High level vision) 任務。

本文的概要如下:

  • 第一部分我們介紹了一個傳統圖像分析系統的基本框架,並分析的這個系統中計算量的瓶頸位置。
  • 第二部分我們介紹了在頻域實現機器學習的系統方法,以及我們提出了一種基於 Gumbel softmax 開關的選擇頻率信息重要性的方法。
  • 第三部分我們介紹了利用我們提出的方法在頻率域做圖像分類(image classification)和實例分割(instancesegmentation)的結果。

1. 圖像傳輸/存儲/分析系統的基本框架

image.png

Figure 2. A framework for image transmission and analysis

Figure 2 描述了一個實時圖像分析系統的框架。圖像輸入(In)通常是 RGB 的空間域信號,在編碼端經過 RGB-to-YCbCr 的轉化,離散餘弦變換(DCT),量化(Quantization), 以及熵編碼(Entropy coding),得到壓縮後用來傳輸的信號。這個信號傳輸到解碼端,經過對應的熵解碼(Entropy decoding),反量化(dequantization),逆離散餘弦變換(IDCT),YCbCr-to-RGB 轉化得到原圖像的重建圖像。這個基於 RGB 空間域的重建圖像作為深度神經網絡的輸入,經過分析可以得到所需要的結果。以下我們簡要介紹以上這些操作,並分析它們的計算複雜度。

1.1 YCbCr-RGB conversion

YCbCr(有時也稱 YUV)是一系列表示圖像/視頻的色彩空間(color space)。通常 RGB color space 中三個通道的信號強相關,同時很難說明其中哪一個通道的信號更重要。YCbCr 信號是 RGB 信號的一個點對點的可逆線性變換,其中 Y 信號表示的是亮度(luma)信息,而 Cb 和 Cr 表示的是色彩(chroma)信息(seeFigure 3)。對於人類的視覺系統,亮度信息比色彩信息更重要,因此我們可以通過不同的壓縮方法來達到最佳的壓縮性能。例如對 Cb 和 Cr 通道進行降採樣。由於 YCbCr 和 RGB 信號的轉換是 point-wise linear,所以所需的計算量相對較小。

image.png

Figure 3. Conversion from RGB to YCbCr

1.2 Discrete cosine transform(DCT) and inverse discrete cosine transform (IDCT)

離散餘弦變換是一種二維的可逆線性變換,它將呈現出圖像不同的頻率信息。以一個 8x8 的圖像為例,它的二維 DCT 信號矩陣包含了直流分量(通常是(0,0)號元素), 低頻信號分量,以及高頻信號分量。從 Figure 4 中可以看到,直流分量衡量了這個信號整體的幅度,而兩個方向上不同的分量分別衡量了這個二維信號在x方向和y方向上不同的震盪頻率。由於 DCT(以及 IDCT)是矩陣變換,而通常的圖像壓縮標準使用的是 8x8 的 DCT 變換,所需的計算量佔據的整個壓縮系統中的大部分。

image.png

Figure 4. Coefficients in a discrete cosine transform

1.3 Quantization

量化模塊將信號由浮點數 floating-point 轉換為整型表示。它對 DCT 變換後的對應位置的信號進行 point-wise 的量化。量化模塊所需的計算量因此也相對較小,和矩陣的尺寸成正比。由於人類視覺系統對低頻信號比較敏感,因此量化矩陣的左上角數字相對比較小。Figure 5 展示了一個量化矩陣的例子。由於量化的操作是不可逆的操作,因此量化模塊是圖像壓縮傳輸系統中有損的操作。

image.png

Figure 5. A quantization table for JPEG

1.4 Entropy coding

傳輸所需的信號是一維信號,而我們經過量化的信號是二維信號,因此我們首先通過 Zig-zag 的方式將二維信號轉換為一位信號(see Figure 6)。由於量化矩陣中高頻信號的量化間隔較大,因此許多信號矩陣中對應高頻,也就是對應一維信號中靠後位置的信號將被量化為 0 。這個一維信號經過 Run length coding [2](see Figure 7)和 Huffman coding [3](在視頻壓縮中會有更復雜的 Arithmetic coding [4] 以及 Context-adaptive binaryarithmetic coding [5])被壓縮成為用來傳輸/存儲的信號。 Entropy coding 基於很成熟的算法和加速結構,所需的計算量也較小,和圖像矩陣的尺寸稱正比。由於 Zig-zag 轉換和 Entropy coding 都是可逆的,因此這個模塊也是無損的。

image.png

Figure 6. A zig-zag serialization from 2D to 1D

image.png

Figure 7. An example of run-length coding

以上各個模塊在解碼端都可以用對應的逆模塊(inverse module)來實現,同時這些逆模塊的計算複雜度和編碼端對應的模塊基本一致。

通過以上的介紹我們可以看出,在整個圖像分析系統中,除去最後的圖像推理(inference)引擎,前期的壓縮,傳輸,解壓縮的瓶頸在於其中的 DCT 和 IDCT 模塊,因為這兩個變換是矩陣變換,而其他的操作基本都是 point-wise 的操作。我們知道矩陣變換的計算複雜度遠大於點變換的計算複雜度,因此如果我們能夠減少,甚至省略這兩個模塊,將會對圖像分析系統的前半部分帶來極大的性能提升。

2. 基於頻域信息的機器學習

在解碼端,傳統的圖像傳輸系統使用 IDCT 將頻域信號轉換為空間域信號的目的是為了讓人類視覺系統服務的。然而,在機器學習任務中,我們可以思考是否需要做 IDCT 這個對計算量需求較大的操作。如果我們可以省略 IDCT 的模塊,我們就可以減少解碼端的延時和功耗(see Figure 8)。

image.png

Figure 8. A framework of image transmission and analysis directly from the frequency domain.

我們面臨兩個問題,第一,我們如何利用頻域的信息來進行機器學習,即如何將重建出的 DCT 的信號接入合適的深度神經網絡。第二,我們如何利用不同頻域信號的重要性來節省從解碼端到圖像推理引擎所需的帶寬(see Figure 9

image.png

Figure 9. A framework of image transmission and analysis from selected frequency component to reduce memory bandwidth between decoder and AI engine.

2.1 如何利用頻域的信息來進行機器學習

首先考慮亮度通道(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,這個過程如 Figure 10(a) 所示。假設 W=H=448, 那麼現有的基於頻域的 feature map 的尺寸為 56x56x192。現在的問題是如何將這些 feature map 合理的輸入到一個已有的 DNN 網絡結構中,使得 feature map 的尺寸和已有 DNN 網絡的尺寸吻合。

image.png

Figure 10 (a). The data pre-processing pipeline for learning in the frequency domain

為了便於理解,我們以 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 達到了完全一致。這個過程如 Figure10(b) 所示。值得注意的是,由於我們做了 8x8 的 DCT 變換,我們實際輸入的圖片大小為 448x448,是標準 ResNet-50 輸入(224 x 224)的兩倍。正因為我們提高了輸入圖片在空間域的分辨率,我們在後續的實驗中可以得到更好的識別精度。

image.png

Figure 10 (b). Connecting the pre-processed input features in the frequency domain to ResNet-50. The three input layers (the dashed gray blocks) in a vanilla ResNet-50 are removed to admit the 56×56×64 DCT inputs.

2.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 的重要性也被確定。

image.png

FIgure 11. A gating method to select important frequency components

Figure 11 展示了利用 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 [7]。

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

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

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

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

image.png

Figure 12. Comparisons of image transmission and analysis system

3. 結果展示

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

3.1 Image Classification

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

經過我們的訓練,我們得到了一張不同頻率分量重要性的 Heat mapFigure 13 描述了對應 192 個頻率分量的重要性程度。我們可以看出,和我們直覺一致的是,Y 通道的重要性高於 Cb 和 Cr 通道,同時低頻分量的重要性高於高頻分量。利用我們提出的 gated 方法,我們可以通過一次訓練就瞭解該如何分配帶寬資源。以 Figure 13 為例,我們可以使用 14 個 Y 通道,5個 Cb 通道 5 個 Cr 通道,共計 24 個 feature map 來做圖像分類的任務,而不用將最初的 192 個 feature map 的數據都從圖像解碼模塊傳輸到圖像推理引擎中。這樣我們的傳輸帶寬需求降低為原來的八分之一,而推理的精度(accuracy)反而從標準 ResNet-50 的 75.78% 提升至 77.196% (see DCT-24 in Table 14 (a))。

同樣的,在 MobileNetV2 的實驗中,我們通過選取最重要的 24 個頻率分量,得到的識別精度從標準 MobileNetV2 的 71.702% 提升至 72.364% (see DCT-24 in Table 14(b) )。其它的結果,例如選取 64,48,12,6 個頻率分量的精度也展現在 Table14 中。值得一提的是,根據 Figure 13 的展示,我們發現低頻分量在識別中相對重要,因此我們也嘗試了使用 heuristic 的方式,選取了一個上三角的區域。

例如對於 DCT-24 ,我們直覺選取的是 Y channel 的 [0-13] ,Cb 和 Cr channel 的 [0-4] 編號的頻率分量。這些頻率分量和 Figure 13 中的 heatmap 略有不同,但是識別的精度幾乎沒有區別 (See DCT-64T, DCT-48T, and DCT-24T in Table 14(a) )。這說明我們並不需要對於每個不同的任務都嘗試首先獲得 heatmap,然後嚴格的按照 heatmap 來選取頻率分量。我們直觀上可以選擇低頻分量(例如這些上三角得到區域),達到和嚴格按照 heatmap 選擇相同的精度。

image.png

Figure 13. A heat map of different frequency components being used in image classification tasks (a) and instance segmentation tasks (b)

**image.png
**

(a)

image.png

(b)

Table 14. Accuracy comparison for image classification from RGB and DCT domain using ResNet-50 (a) and MobileNetV2 (b)

3.2 Instance segmentation

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

image.png

Figure 15. An example of instance segmentation (from selected frequency domain)

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

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

image.png

(a)

image.png

(b)

Table 16. Accuracy comparison from RGB and DCT domain on object detection (a) and instance segmentation (b)

以下是另外幾個利用在頻域選擇重要的 feature map 做實例分割的 visual demo

image.png

image.png

image.png

image.png

4. 未完成的工作以及思考

(1) Figure 12 展示了 Dynamic 和 Static 兩種選取頻率分量 feature map 的方式,現階段我們使用的是 dynamic 的方式,主要考慮的因素是 static 的方式需要對壓縮編碼端進行修改才能實現編碼端的性能提升和信道帶寬節省。這部分改變將會需要視頻獲取設備的改動,而這通常不是我們集團可以控制的部分。我們相信作為這個方向有很大的研究價值,它可以對圖像編碼標準進行優化。

(2)現有的實驗均基於圖像的壓縮傳輸系統。下一步我們的目標是對視頻壓縮系統做類似的嘗試。由於視頻壓縮標準中包含了幀間運動預測/補償和幀內預測,對應的頻域信息也會有比較大的差別。

(3)通過我們利用頻域信息來做機器學習的研究,我們的思考是:機器學習的目標和人眼觀測圖像/視頻的方式不同,什麼樣的信息才是對於機器學習更友好,更有用的信息呢?傳統的機器學習算法的輸入都是空間域的RGB圖像,然而我們是否可以設計更適合機器學習的特徵來過濾掉空間域冗餘的信息,從而真正做到節省解碼端到推理引擎間的數據帶寬。

Acknowledgement

本文的工作基於實習生Kai Xu在阿里巴巴達摩院實習期間的研究以及和Prof. Fengbo Ren (Arizona State University)的合作。在這個工作中,我們十分感謝來自於計算技術實驗室其他同學許多重要的建議和意見。

image.png

原文鏈接:
https://mp.weixin.qq.com/s/aYCbhuGr-__af0LwEdoi5w

Leave a Reply

Your email address will not be published. Required fields are marked *