深度學習在計算機視覺各項任務中的應用

計算機視覺life發表於2019-01-23

本文轉載自數學與人工智慧

如今,深度學習是很好的方法。大規模資料集和 CNN 特徵表達能力使得模型的效果更加準確和魯棒。
深度學習在計算機視覺各項任務中的應用

Mask-RCNN進行物件檢測和例項分割

現在,只有一個問題:如何設計你的模型呢?

計算機視覺是一個廣泛而複雜的領域,解決方案並沒有那麼清晰。CV中的許多標準任務也需要特殊的考慮:分類,檢測,分割,姿態估計、影像增強和復原等等。雖然,用於這些任務的最先進的網路都具有共同的模式,但是它們仍然需要自己的獨特設計。

那麼該怎麼為不同的任務建立模型呢?讓我們一起來看看如何用深度學習完成這些計算機視覺任務。

Classification

分類是所有視覺任務中最知名的。影像分類網路以固定大小的影像作為輸入。輸入影像可以具有任意數量的通道,但對於RGB影像通常為3。當我們設計網路的時候,影像解析度在理論上可以是任何大小,只要它能夠支援我們在整個網路中執行的下采樣量。

比如說,如果我們進行4次下采樣,那麼我們輸入影像的解析度最少得24 = 16 x 16

隨著網路的深入,我們試圖將所有資訊壓縮並用一維向量表示,這時空間解析度會降低。為了保證網路能夠始終擁有持續提取所有資訊的能力,將按比例地增加特徵圖的數量以適應解析度的降低。即在下采樣過程中我們會損失空間資訊,為了適應這種損失,擴充套件特徵圖來增加語義資訊。

在進行了了一定數量的下采樣後,將特徵展開為1維向量,並饋入一系列全連線層。最後一層輸出資料集的分類。

深度學習在計算機視覺各項任務中的應用


Object Detection

物體檢測器有兩種型別:one-stage和two-stage.

兩種型別都始於anchor boxes,這些是預設的邊界框。檢測器是去學習這些候選區域和真實區域之間的差異,而不是直接預測邊框。

在two-stage 檢測器中,通常會有兩個網路:候選區域提取網路(box proposal network)和分類網路(classification network)。box proposal network提取它認為物體最可能出現的區域的座標。這些是和anchor box關聯起來的。分類網路獲取每個邊界框,並對其中的物體進行分類。

在one-stage檢測器中,提取和分類網路融入同一個階段中。該網路直接預測邊界框座標和分類物體。因為兩部分被融在一起,one-stage檢測器執行速度比two-stage檢測器執行速度更快。當然,因為兩個任務分別進行,two-stage檢測器擁有更高的精確度。

深度學習在計算機視覺各項任務中的應用

Faster-RCNN two-stage物體檢測器結構

深度學習在計算機視覺各項任務中的應用

SSD one-stage物體檢測器結構

Segmentation

分割在視覺任務中有些特殊,因為用於影像分割的網路需要同時學習低層級和高層級的資訊。低層級資訊用於按照畫素,準確分割影像中的每塊區域和物體,高層級資訊直接用於分類這些畫素。這使得網路設計要結合來自模型底層(對應著低層級的空間資訊)和高層(對應著高層級的語義資訊)的資訊。

下面,我們首先將影像輸入一個分類網路。然後,從網路的每一級提取特徵,得到從低層到高層的資訊。每級資訊在結合之前都是獨立處理的。在融合所有資訊的時候,我們對特徵圖進行上取樣以得到與輸入影像解析度一致的特徵圖。

深度學習在計算機視覺各項任務中的應用

GCN 分割結構

Pose Estimation

姿態估計模型需要完成兩個任務:(1)檢測影像中身體部分的關鍵點 (2)將這些關鍵點正確的連線。

完成這分為三個部分:

1、用標準的分類網路提取影像中的特徵;

2、基於這些特徵,訓練一個子網路來預測一組2D熱圖。每一組熱圖都與特定關鍵點關聯並且包含了關鍵點是否存在於影像的置信度;

3、還是基於分類網路提取到的特徵,我們訓練一個子網路來預測一組2D向量場,其中每個向量場編碼關鍵點之間的關聯程度。有高關聯度的關鍵點則是相互連通的。

將子網路與模型一起訓練,使得關鍵點檢測和連線同時進行最佳化。

深度學習在計算機視覺各項任務中的應用

OpenPose姿態估計架構

Enhancement and Restoration

影像增強和復原是很獨特的。我們不對它們做任何下采樣,因為我們真正關心的是細節的準確度。下采樣會完全丟失這些資訊,因為它會減少大量畫素。相反的,所有處理過程都是在影像完整解析度下進行的。

輸入我們想要增強或者恢復的影像到網路中,沒有任何修改,保證完整的解析度。網路簡單地由許多卷積和啟用函式組成。這些模組通常來自於影像分類使用的模組,例如Residual Blocks、Dense Blocks、Squeeze Excitation Blocks等等。

最後一層沒有任何啟用函式,甚至沒有sigmoid或者softmax函式,因為我們想直接預測影像畫素,不需要任何機率。

上述就是這類網路的全部內容。在影像的全解析度下進行大量的處理來獲得高空間精度,這種方式也可以用於其他任務中。

深度學習在計算機視覺各項任務中的應用

EDSR Super-Resolution 架構

Action Recognition

動作識別是少數幾個需要影片資料才能較好執行的應用之一。要對動作進行分類,我們需要了解隨時間變化的場景,這自然需要影片資料。

我們要訓練網路學習空間(spatial)和時間(temporal)資訊,即時間和空間上的變化。解決這個問題最好的一個模型是3D CNN。

一個3D CNN,顧名思義,使用3D卷積的卷積網路!和一般CNNs的差別在於,3D CNN的卷積應用於3個維度:寬度、高度、還有時間。

因此,輸出的每一個畫素的預測計算不僅基於它周圍的畫素,同時也基於前一幀和後一幀相同位置上的畫素。

深度學習在計算機視覺各項任務中的應用

直接輸入大批次影像

影片幀可以透過許多方式傳遞:

(1)直接大批次傳遞,就像上圖所示。因為我們傳遞的是有序列的幀,所以空間和時間資訊都可以得到。

深度學習在計算機視覺各項任務中的應用

單幀+光流(左)+光流(右)

(2)還可以在一個流中傳遞單個影像幀(資料的空間資訊)和來自影片的對應光流(資料的時間資訊)。我們將使用常規的2D CNN來提取特徵,然後傳遞到結合了兩種型別資訊的3D CNN。

(3)將幀序列輸入到一個3D CNN,將影片的光流輸入到另一個3D CNN。這兩種資料流都能具有可用的空間和時間資訊。這會是三種方法中最慢的一種,但是也是最準確的,因為對影片的兩種不同表示進行處理,它們包含了所有的資訊。

上述的網路都會輸出影片的動作分類。

深研資料

原文連結:

影像分割:

增強和復原

Residual Blocks:

Dense Blocks:

Squeeze Excitation Blocks:

3D CNN:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31562045/viewspace-2564567/,如需轉載,請註明出處,否則將追究法律責任。

相關文章