當前位置:
首頁 > 最新 > 一文概覽2017年Facebook AI Research的計算機視覺研究進展

一文概覽2017年Facebook AI Research的計算機視覺研究進展

選自skrish13

作者:Krish

機器之心編譯

參與:路雪、劉曉坤

本文概述了 2017年Facebook AI 研究院(FAIR)在計算機視覺上的研究進展,包括基礎構建模塊創新、CNN、one shot 目標檢測模塊等,然後介紹實例分割方面的創新,最後介紹用弱半監督方式來擴展實例分割。

特徵金字塔網路(FPN)

首先我們先來介紹著名的特徵金字塔網路[1](發表在 CVPR 2017 上)。FPN 論文非常棒,要知道,構建一個可在多項任務、子主題和應用領域中使用的基線模型並不簡單。FPN 是通用特徵提取網路(如 ResNet、DenseNet)的擴展。你可以從喜歡的 DL 庫中選擇預訓練的 FPN 模型,然後像使用其他模型一樣使用它!

圖像目標通常有多個尺度和大小。一般的數據集無法捕捉所有這些屬性,因此人們使用圖像金字塔(圖像的多種解析度降級),以方便 CNN 處理。但是這樣很慢。因此人們使用單個尺度預測,一些人可能從中間層獲取預測結果,它是在特徵空間中進行的。這很好理解,在幾個 ResNet 模塊後放置一個反卷積層,獲取分割輸出(就分類而言,可能是 1x1 卷積和 GlobalPool)。現在大量此類架構在有輔助信息和輔助損失的情況下使用。

回到主題,FPN 的作者發現一種有效改善上述方法的方式。他們不只使用側向連接,還使用自上而下的路徑。這非常有效!他們使用一個簡單的 MergeLayer(mode=『addition』)將二者結合起來。該想法的關鍵是底層特徵圖(初始卷積層)的語義不夠強,無法用於分類。而深層特徵圖有更強的語義。這裡還有一個優勢,即自上而下的路徑 FMaps(特徵圖),可以達到最深層網路同樣的效果。這是因為結合了側向連接和自上而下的連接。

細節

金字塔:同樣大小的所有特徵圖屬於同一個階段。最後一層的輸出是金字塔的 reference FMaps。如:ResNet,第 2、3、4、5 個模塊的輸出。你可以根據內存和特定使用情況改變金字塔。

側向連接:1x1 卷積和自上而下的路徑都經過兩倍上採樣。上層特徵自上而下生成粗糙的特徵,而側向連接從自下而上的路徑添加更細粒度的細節。

那篇論文中介紹了一個簡單的 demo,展示了這個想法結合簡單的設計思路的效果。

如前所述,這是一個可以在多項任務中使用的基線模型,如目標檢測、分割、姿態估計、人臉檢測,以及所有應用領域。這篇論文問世不過寥寥數月,但引用量已經超過 100!這篇論文的題目是《FPNs for Object Detection》,因此作者繼續在 RPN(區域建議網路)和 Faster-RCNN 網路中使用 FPN 作為基線模型。所有關鍵細節這篇論文中都有講述,這裡我列出了一些要點。

實驗要點

在 RPN 中使用 FPN:將單個尺度 FMap 替換成 FPN。他們在每一級都有單尺度 anchor(由於使用了 FPN,所以沒必要使用多尺度 anchor)。作者還展示了金字塔所有層級都共享類似的語義水平。

Faster RCNN:他們用類似圖像金字塔輸出的方式處理這個金字塔。因此 RoI 使用以下公式被分配至特定的級別:

其中 w、h 代表寬度、高度。k 代表 RoI 被分配的級別。k_0 是 w,h=224,224 映射至的級別。

在 COCO 數據集上獲取當前最優結果,沒有任何不必要的功能。

他們對每個模塊的功能進行了 ablation 研究,因此他們能夠從一開始就證明了自己的說法。

他們還基於 DeepMask 和 SharpMask 論文展示了如何使用 FPN 進行分割建議生成(segmentation proposal generation)。

對實現細節、實驗設置等感興趣的同學應該認真閱讀這篇論文。

代碼

Official Caffe2 - https://github.com/facebookresearch/Detectron/tree/master/configs/12_2017_baselines

Caffe - https://github.com/unsky/FPN

PyTorch - https://github.com/kuangliu/pytorch-fpn (just the network)

MXNet - https://github.com/unsky/FPN-mxnet

Tensorflow - https://github.com/yangxue0827/FPN_Tensorflow

RetinaNet:在密集目標檢測中使用 Focal Loss

該架構由同一個團隊所開發,也是同一個一作。這篇論文 [2] 在 ICCV 2017 上發表。該論文中有兩個關鍵點:通用損失函數 Focal Loss(FL)和單階段的目標檢測器 RetinaNet。兩者的組合使其在 COCO 目標檢測任務中表現得非常好,並打敗了上述的 FPN 基準結果。

Focal Loss

該論文中的方法相當聰明和簡單。如果你熟悉加權損失的話,那麼該方法其實就是使用了巧妙的加權,讓訓練更加聚焦於分類難度高的樣本。公式如下所示,其含義是很明顯的。

γ是一個可改變的超參數。p_t 是分類器輸出的樣本概率。將 γ 設為大於 0 將減小分類結果較好的樣本的權重。α_t 是通常的加權損失函數中的類別權重。在論文中它被稱為 α-balanced 損失。需要注意,這個是分類損失,它將和 smooth L1 損失結合,用於 RetinaNet 的目標檢測任務。

RetinaNet

FAIR 竟然會發布單階段檢測器,這令人難以置信。直到目前,YOLOv2 和 SSD 仍在單階段場景中佔據主導地位。但作者指出,它們都沒有接近當前最佳的結果。而 RetinaNet 可以輕鬆地做到,僅使用了單階段,並且速度很快。他們稱其頂尖結果源於新型損失函數的應用,而不是簡單的網路(其後端為 FPN)。其中利用的思想是單階段檢測器將面臨很多背景和正類別不平衡的情況(不是正類別之間的不平衡)。作者稱加權損失函數僅僅是為了平衡,而 FL 是針對難度小/大的樣本,而兩者是可以結合的。

注意:

兩階段檢測器無需擔心不平衡的情況,因為第一階段就移除了幾乎所有不平衡。

兩部分:主幹網路(卷積特徵提取器,如 FPN)和兩個特定任務的子網路(分類器和邊界框回歸器)。

在選擇不同的組件設計時,(性能)沒有太多變化。

Anchor 或 AnchorBoxes 是 RPN 的相同 Anchor [5]。其中心圍繞滑動窗口,且與長寬比有關。大小和長寬比分別對應 32^2 到 51^2 和 。

在 FPN 的每一階段,我們都有 cls+bbox 子網路,給出 anchor 中所有位置的對應輸出。

代碼

Official Caffe2 - https://github.com/facebookresearch/Detectron/tree/master/configs/12_2017_baselines

PyTorch - https://github.com/kuangliu/pytorch-retinanet

Keras - https://github.com/fizyr/keras-retinanet

MXNet - https://github.com/unsky/RetinaNet

Mask R-CNN

TL;DR:如果你了解 Faster-RCNN,那麼 Mask R-CNN 很簡單,只需要添加一個用於分割的 head(分支)。因此基本上是 3 個分支,分別用於分類、邊界框回歸和分割。

再次強調,其重點在於使用簡單、基礎的網路設計來展示該方法的效率。他們不需要什麼花哨的功能就實現了當前最佳。

我很喜歡這篇論文,它很簡單,但是看似簡單的東西有大量解釋。例如,多項式掩碼 vs 獨立掩碼的使用(softmax vs sigmoid)。此外,它並未假設大量先驗知識,也沒有要解釋一切。

如果你仔細查看這篇論文,你可能會找到他們(基於現有設置)的新想法無法有效運行的原因。以下解釋基於你對 Faster RCNN 已經有了基礎了解:

Mask R-CNN 與 FasterRCNN 類似,兩階段,第一階段是 RPN。

添加一個並行分支用於預測分割掩碼——FCN。

損失是 L_cls、L_box、L_maskLcls、L_box、L_mask 的總和。

用 ROIAlign 層替換 ROIPool。這不像 ROIPool 那樣將你的(x/spatial_scale)fraction 四捨五入成整數,而是通過雙線性內插法找出特定浮點值的像素。

例如:ROI 高度和寬度分別是 54、167。空間尺度基本上是圖像大小/FMap 大小(H/h),在此語境中也叫作 stride。通常是 224/14 = 16 (H=224,h=14)。

ROIPool: 54/16, 167/16 = 3,10

ROIAlign: 54/16, 167/16 = 3.375, 10.4375

現在,我們使用雙線性內插法對其進行上採樣。

類似的邏輯適用於根據 ROIAlign 輸出形狀(如 7x7)將對應的區域分割成合適的子區域。

使用 Chainer folks 檢查 ROIPooling 的 Python 實現,並嘗試自己實現 ROIAlign。

ROIAlign 代碼可在不同庫中獲取,可查看下面給出的代碼 repo。

主幹網路是 ResNet-FPN。

我曾專門寫文章介紹過 Mask-RCNN,文章地址:https://coming.soon/。

代碼

Official Caffe2 - https://github.com/facebookresearch/Detectron/tree/master/configs/12_2017_baselines

Keras - https://github.com/matterport/Mask_RCNN/

PyTorch - https://github.com/soeaver/Pytorch_Mask_RCNN/

MXNet - https://github.com/TuSimple/mx-maskrcnn

學習分割 Every Thing

如題目《Learning to Segment Every Thing》所示,這篇論文是關於分割的,具體來說,是實例分割問題。計算機視覺中的標準分割數據集對於現實應用而言規模太小。即使是 2018 年最流行、最豐富的 COCO 數據集 [7] 也僅有 80 個目標類別。這根本無法達到實用的要求。相比之下,目標識別和目標檢測數據集如 OpenImages [8] 就有將近 6000 個分類類別和 545 個檢測類別。除此之外,來自斯坦福的另一個數據集 Visual Genome 擁有 3000 個目標類別。那為什麼人們不選用這些數據集呢?因為每個類別中包含的目標數量太少了,從而 DNN 無法在這個數據集上取得足夠好的性能,即使這些數據集在實際應用上更加豐富、有用。需要注意的是該數據集並沒有任何分割標註,僅有 3000 個目標檢測(邊界框)標籤類別。

接下來介紹論文 [4]。實際上,就領域而言,邊界框和分割標註之間並不存在太大的區別,區別僅在於後者比前者更加精確。因此既然 Visual Genome [9] 數據集中有 3000 個類別,那麼為什麼不用來訓練分割任務呢?這正是作者所做的,這種方法可稱為弱監督學習(或弱半監督)學習,其中不需要相關任務的完整監督信息。如果他們使用的是 COCO+Visual Genome 數據集(即分割標籤 + 邊界框標籤),這同樣可稱為半監督學習。

這篇論文簡直不能再 cool,其網路架構有如下特點:

它建立在 Mask-RCNN 之上。

同時使用有掩碼和無掩碼的輸入進行訓練。

在掩碼和邊界框掩碼之間添加了一個權重遷移函數。

當傳遞了一個沒有掩碼的輸入時,將 ω_seg 函數預測的權重和掩碼特徵相乘。當傳遞了一個有掩碼的輸入時,則不使用該函數,而使用一個簡單的 MLP。

如下圖所示:A 是 COCO 數據集,B 是 VG 數據集。注意其中對不同輸入的不同訓練路徑。

將兩個損失同時進行反向傳播將導致 ω_seg 的權重不一致,因為對於 COCO 和 VG 之間的共有類別,有兩個損失(掩碼和邊界框),而對於非共有類別,則僅有一個損失(邊界框)。作者使用的修改方法是:

Fix:當反向傳播掩碼損失時,計算預測掩碼權重 (τ) 關於權重遷移函數參數θ的梯度,而對邊界框權重ω^c_det 不進行該計算。

w^c_seg=τ(stop_grad(w^c_seg); θ),其中 τ 預測掩碼權重。

圖 2:Mask^X RCNN 方法的細節展示。Mask^X RCNN 使用學得的權重遷移函數 τ,從對應的檢測參數ω_det 預測類別的分割參數 ω_seg,而不是直接學習掩碼預測參數 ω_seg。在訓練過程中,τ 僅需要數據集 A 中類別的掩碼數據,而在測試時可以應用到 A、B 數據集的所有類別。作者還用補充性的全連接多層感知機(MLP)增強了掩碼頭(mask head)。

由於 VG 數據集沒有分割標註,從而無法給出在該數據集上的分割準確率。因此他們在可驗證的數據集上展示結果。PASCAL-VOC 數據集有 20 個類別,全部包含於 COCO 數據集。因此,對於這 20 個類別,他們使用 VOC 的分割標註和 COCO 中這 20 個類別的邊界框標籤進行訓練。論文展示了在 COCO 數據集中這 20 個類別上的實例分割任務結果。此外由於兩個數據集包含兩種真實標註,他們還對相反的情況進行了訓練。結果如下圖所示。

表 2:Mask^X RCNN 的端到端訓練。如表 1 所示,作者使用了 τ 的 "cls+box、2-layer、LeakyReLU" 實現,並添加了 MLP 掩碼分支(遷移函數+MLP),然後使用相同的評估流程。作者還報告了 AP_50 和 AP_75(0.5 和 0.75 IoU 閾值的平均精度評估),以及在小、中、大型目標上的 AP 值(AP_S、AP_M、AP_L)。該方法使用 ResNet-50-FPN 和 ResNet-101-FPN 主幹架構時(沒有使用掩碼訓練數據)都顯著超越了數據集 B 上的基線結果。

參考文獻

[1] Lin, Tsung-Yi, Piotr Dollár, Ross B. Girshick, Kaiming He, Bharath Hariharan and Serge J. Belongie.「Feature Pyramid Networks for Object Detection.」*2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR)* (2017): 936-944.

[2] Lin, Tsung-Yi, Priya Goyal, Ross B. Girshick, Kaiming He and Piotr Dollár.「Focal Loss for Dense Object Detection.」*2017 IEEE International Conference on Computer Vision (ICCV)* (2017): 2999-3007.

[3] He, Kaiming, Georgia Gkioxari, Piotr Dollár and Ross B. Girshick.「Mask R-CNN.」*2017 IEEE International Conference on Computer Vision (ICCV)* (2017): 2980-2988.

[4] Hu, Ronghang, Piotr Dollár, Kaiming He, Trevor Darrell and Ross B. Girshick.「Learning to Segment Every Thing.」*CoRR*abs/1711.10370 (2017): n. pag.

[5] Ren, Shaoqing, Kaiming He, Ross B. Girshick and Jian Sun.「Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks.」*IEEE Transactions on Pattern Analysis and Machine Intelligence* 39 (2015): 1137-1149.

[6] Chollet, Fran?ois.「Xception: Deep Learning with Depthwise Separable Convolutions.」2017 IEEE Conference on Computer Vision and Pattern Recognition (CVPR) (2017): 1800-1807.

[7] Lin, Tsung-Yi, Michael Maire, Serge J. Belongie, James Hays, Pietro Perona, Deva Ramanan, Piotr Dollár and C. Lawrence Zitnick.「Microsoft COCO: Common Objects in Context.」ECCV (2014).

[8] Krasin, Ivan and Duerig, Tom and Alldrin, Neil and Ferrari, Vittorio et al. OpenImages: A public dataset for large-scale multi-label and multi-class image classification. Dataset available from https://github.com/openimages

[9] Krishna, Ranjay, Congcong Li, Oliver Groth, Justin Johnson, Kenji Hata, Joshua Kravitz, Stephanie Chen, Yannis Kalantidis, David A. Shamma, Michael S. Bernstein and Li Fei-Fei.「Visual Genome: Connecting Language and Vision Using Crowdsourced Dense Image Annotations.」International Journal of Computer Vision 123 (2016): 32-73.

本文為機器之心編譯,轉載請聯繫本公眾號獲得授權。

?------------------------------------------------


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

下一步研究目標:盤點NLP領域最具潛力的六大方向
LeCun卸任成劇變?看FAIR研究員田淵棟如何看待

TAG:機器之心 |