當前位置:
首頁 > 新聞 > 何愷明團隊計算機視覺最新進展:從FPN、Mask R-CNN 到學習分割一切

何愷明團隊計算機視覺最新進展:從FPN、Mask R-CNN 到學習分割一切

介紹何愷明大神的4篇大作!

圖來自 Learning to Segment Everything

2018新智元AI技術峰會倒計時10天】

2018 年 3 月 29 日,北京舉辦的 2018 年中國 AI 開年盛典——新智元產業 · 躍遷 AI 技術峰會,邀請了微軟技術院士、微軟語音、自然語言和機器翻譯團隊負責人黃學東博士和微軟全球傑出工程師張祺博士,解析機器翻譯最新突破和人機交互未來趨勢!想近距離交流互動?點擊文末閱讀原文,馬上參會!

搶票鏈接:http://www.huodongxing.com/event/8426451122400

新智元編譯

來源:skrish13.github.io

作者:krish 編譯:肖琴

【新智元導讀】這篇文章介紹了 FAIR 何愷明、Tsung-Yi Lin 等人的團隊在計算機視覺領域最新的一些創新,包括特徵金字塔網路、RetinaNet、Mask R-CNN 以及用於實例分割的弱半監督方法。


特徵金字塔網路(Feature Pyramid Networks)

讓我們以現在著名的Feature Pyramid Networks(FPN)[1] 開始,這是在 CVPR 2017 發表的論文,作者 Tsung-Yi Lin,何愷明等人。FPN 的論文真的很棒。構建一個每個人都可以在各種任務、子主題和應用領域中建立的基準模型並不容易。在詳細討論之前,我們需要了解的一點是:FPN 是 ResNet 或 DenseNet 等通用特徵提取網路的附加組件。你可以從你喜歡的 DL 庫中得到想要的預訓練 FPN 模型,然後像其他預訓練模型一樣使用它們。

物體是以不同的的 scale 和 size 出現的。數據集無法捕獲所有這些數據。因此,可以使用圖像金字塔(圖像的多種縮小比例),以使 CNN 更易處理。但這太慢了。所以人們只使用一個單個 scale 的預測,也可以從中間層進行預測。這跟前一種方法有點像,但這是在特徵空間上進行的。例如,在幾個 ResNet 塊之後放一個 Deconv,並獲得分割輸出(分類也類似,可以是 1x1 Conv 和 GlobalPool)。

FPN 的作者找到了一種改進上述方法的聰明方法。不是僅僅具有橫向連接,而是將自上而下的 pathway 也放在上面。這非常合理!他們使用一個簡單的 MergeLayer(mode ="addition")來組合兩者。這個想法的一個關鍵點是,較低層(比如初始的 conv 層)的特徵語義信息比較少,不足以用來進行分類。但是更深層的特徵可以用於理解。在這裡,你還可以利用所有自上而下的 pathway FMaps(特徵地圖)來理解它,就像最深的層一樣。這是由於橫向連接和自上而下的連接相結合形成的。


FPN 論文的一些細節

金字塔(pyramid)即屬於一個 stage 的所有大小相同的輸出圖。最後一層的輸出是金字塔的參考 FMaps。例如:ResNet - 第 2,3,4,5 個 block 的輸出。根據內存的可用性和特定任務,你可以根據需要改變金字塔。

橫向連接(Lateral connection):1x1 Conv 和 Top-Down pathway 是 2x 的上採樣。這個想法來自於頂部特徵,同時向下產生粗糙的特徵,而橫向連接則增加了從下往上的路徑中更精細的細節。如下圖所示。

這篇論文只描述了一個簡單的 demo。它只是展現了這個想法在簡單的設計選擇中表現非常好,你可以做得更大、更複雜。

正如我前面所說,這是一個基礎網路,可以在任何任務上使用,包括目標檢測,分割,姿態估計,人臉檢測等等。論文發布後幾個月的時間,已經得到 100 多個引用!論文的標題是 FPNs for Object Detection,因此作者繼續將 FPN 用作 RPN(Region Proposal Network)和 Faster-RCNN 網路的 baseline。更多關鍵細節在論文中有更全面的解釋,這裡只列出一部分。

實驗的一些要點:

用於 RPN 的 FPN:用 FPN 替換單一尺度的 FMap。它們對每個級都有一個單一尺度的 anchor(不需要多級作為其 FPN)。它們還表明,金字塔的所有層級都有相似的語義層級。

Faster RCNN:他們以類似於圖像金字塔輸出的方式觀察金字塔。因此,使用下面這個公式將 RoI 分配到特定 level。

其中 w,h 分別表示寬度和高度。k 是分配 RoI 的 level。是 w,h=224,224 時映射的 level。

他們對每個模塊的工作進行消融實驗,以證實論文開頭的宣稱。

他們還基於 DeepMask 和 SharpMask 這兩篇論文展示了如何將 FPN 用於 segmentation proposal 生成。

請閱讀原論文了解實現細節和實驗設置等。

代碼

? 官方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 函數

RetinaNet 跟上面的 FPN 來自同一團隊,第一作者也都是 Tsung-Yi Lin。這篇論文發表於 ICCV 2017,並且獲得當年的最佳學生論文。

這篇論文有兩個關鍵想法——稱為焦點損失(Focal Loss,FL)的損失函數和稱為 RetinaNet 的 single stage 物體檢測網路。該網路在 COCO 物體檢測任務上表現非常出色,同時也擊敗了前面的 FPN benchmark。


Focal Loss

Focal Loss 是很聰明的想法,而且很簡單!如果你已經熟悉加權損失,這個與加權損失基本相同,但具有更聰明的權重,將更多的注意力集中在對困難的樣本進行分類。公式如下:

其中γ是一個可以改變的超參數。是來自分類器的樣本的概率。如果設γ比 0 大,將減小分類號的樣本的權重。是正常加權損失函數中類的權重。在論文中它被表示為α-balanced loss。需要注意的是,這是分類損失,並與 RetinaNet 中物體檢測任務的平滑 L1 損失相結合。


RetinaNet

FAIR 發布這個 single stage 的檢測網路,很是令人驚訝。直到現在,在 single stage 的目標檢測中,佔據主導地位的仍是 YOLOv2 和 SSD。但正如作者指出的那樣,這兩個網路都沒有能夠非常接近 SOTA 方法。RetinaNet 做到了這一點,同時它是 one stage 而且快速的。作者認為,最好的結果是由於新的損失,而不是由於一個簡單的網路(它後端是一個 FPN)。 one stage 的檢測器將在背景與 positive classes 之間存在很多不平衡(而非 positive classes 內部的不平衡)。他們認為,加權損失函數只是針對平衡,但 FL 則針對簡單 / 困難的樣本,同時也表明兩者可以結合起來。

代碼

?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

再次,Mask R-CNN 也來自 FAIR 何愷明團隊,論文發表在 ICCV 2017。Mask R-CNN 用於目標實例分割。簡單來說,目標實例分割基本上就是對象檢測,但不是使用邊界框,它的任務是給出對象的精確分割圖!

TL;DR :如果你已經了解 Faster R-CNN,那麼 Mask R-CNN 就很好理解了,就是為分割增加另一個 head(branch)。所以它有 3 個 branch,分別用於分類、bounding box regression 和分割。

下面的解釋假設你已經對 Faster R-CNN 有一定了解:

Mask R-CNN 與 Faster R-CNN 相似,Faster R-CNN 是 two-stage 的,其中第一個 stage 是 RPN。

添加一個預測分割 mask 的並行分支——這是一個 FCN。

Loss 是Lmask,Lbox和Lcls的和。

ROIlign Layer 而不是 ROIPool。這就不會像 ROIPool 那樣將(x / spatial_scale)分數舍入為整數,相反,它執行雙線性插值來找出那些浮點值處的像素。

例如:想像一下,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),類似的邏輯將相應的區域分成適當的 bins。

感興趣的話可以看看 Chainer 的 ROIPooling 的 python 實現,並嘗試自己實現 ROIAlign

ROIAlign 代碼可以在不同的庫中使用,請查看下面提供的代碼庫。

它的主幹是 ResNet-FPN

代碼

?官方 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


學習分割一切(Learning to Segment Everything)

文如其名,這篇論文是關於分割的。更具體的說,是關於實例分割的。計算機視覺中用於分割的標準數據集非常小,對現實世界的問題不足以有效。即便到了 2018 年,創建於 2015 年的 COCO 數據集仍然是最流行、最豐富的數據集,儘管它只有 80 個物體類別。

相比之下,對象識別和檢測的數據集(例如 OpenImages [8])具有用於分類任務的 6000 個類別和用於檢測的 545 個類別。話雖如此,斯坦福大學還有另一個名為 Visual Genome 的數據集,其中包含 3000 個物體類別!那麼,為什麼不使用這個數據集呢?因為每個類別中的圖像數量太少,因此 DNN 在這個數據集上並不會真正起作用,所以即使它更豐富,人們也不會使用這個數據集。而且,這個數據集沒有任何分割注釋,只有 3000 個類別的對象檢測的邊界框(bounding boxes)標籤可用。

讓我們回到 Learning to Segment Everything 這篇論文。實際上,邊界框(bounding box)和分割注釋(segmentation annotation)對於域來說並沒有太大的區別,僅僅是後者比前者更精確。因此,因為 Visual Genome 數據集有 3000 個類,為什麼不利用這個數據集來做實例分割呢?FAIR 何愷明團隊正是這樣做的。這可以被稱為弱監督(或弱半監督?)學習,也就是說你沒法完全監督你想要實現的任務。它還可以與半監督相關聯,因為它們都使用 COCO + Visual Genome 數據集。這篇論文是迄今為止最酷的。

它是建立在Mask-RCNN之上的

同時在有 mask 標註和無 mask 標註的輸入上訓練

在 mask 和 bbox mask 之間添加一個weight transfer 函數

當無 mask 標註的輸入通過時,wseg 預測將於馬薩卡 features 相乘的權重;當有 mask 標註的輸入通過時,不使用這個函數,代而使用一個簡單的 MLP。

如下圖所示。A 是 COCO 數據集,B 是 VG。注意不同輸入的兩個不同路徑。

由於沒有注釋可用,作者無法在 VG 數據集上顯示精確度,因此他們把這個想法應用到可以證明結果的數據集上。PASCAL-VOC 有 20 個類別,而且這些類別在 COCO 中都很常見。因此,他們使用 VOC 分類標籤進行訓練,並且只使用來自 COCO 的 bbox 標籤對這 20 個類別進行訓練。結果顯示在 COCO 數據集中 20 個類的實例分割任務上。反之亦然,因為這兩個數據集都有 ground-truth。結果如下表所示:

References:

[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.

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

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


請您繼續閱讀更多來自 新智元 的精彩文章:

馬斯克:我不是中本聰,高仿號冒充我撒幣不可信
全美性價比最高的工作地點竟然不是灣區

TAG:新智元 |