何愷明團隊計算機視覺最新進展:從特徵金字塔網絡、Mask R-CNN到...

2021-01-07 和訊網

圖來自Learning to Segment Everything

  新智元編譯來源: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 - http://github.com/facebookresearch/Detectron/tree/master/configs/12_2017_baselines

  · Caffe - http://github.com/unsky/FPN

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

  · MXNet - http://github.com/unsky/FPN-mxnet

  · Tensorflow - http://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 - http://github.com/facebookresearch/Detectron/tree/master/configs/12_2017_baselines

  · PyTorch - http://github.com/kuangliu/pytorch-retinanet

  · Keras - http://github.com/fizyr/keras-retinanet

  · MXNet - http://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是,和的和。

  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 - http://github.com/facebookresearch/Detectron/tree/master/configs/12_2017_baselines

  · Keras - http://github.com/matterport/Mask_RCNN/

  · PyTorch - http://github.com/soeaver/Pytorch_Mask_RCNN/

  · MXNet - http://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 http://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.

    本文首發於微信公眾號:新智元。文章內容屬作者個人觀點,不代表和訊網立場。投資者據此操作,風險請自擔。

(責任編輯:陶海玲 HF003)

相關焦點

  • 何愷明團隊:從特徵金字塔網絡、Mask R-CNN到學習分割一切
    圖來自Learning to Segment Everything來源:skrish13.github.io作者:krish 編譯:肖琴【新智元導讀】這篇文章介紹了FAIR何愷明、Tsung-Yi Lin等人的團隊在計算機視覺領域最新的一些創新
  • 詳解何愷明團隊4篇大作 !(附代碼)| 從特徵金字塔網絡、Mask R-CNN到學習分割一切
    本文介紹FAIR何愷明、Tsung-Yi Lin等人的團隊在計算機視覺領域最新的一些創新,包括特徵金字塔網絡、RetinaNet、Mask R-CNN以及用於實例分割的弱半監督方法。Kerashttps://github.com/fizyr/keras-retinanetMXNethttps://github.com/unsky/RetinaNetMask R-CNN再次,Mask R-CNN也來自FAIR何
  • FAIR最新視覺論文集錦:FPN,RetinaNet,Mask 和 Mask-X RCNN(含代碼...
    FPN   特徵金字塔網絡 (FPN) [1] 發表在 2017 年的 CVPR 上。如果你關注最近兩年計算機視覺的發展,就知道冥冥之中存在著那樣一些優秀的算法,而你要做的,就是等著大神們把它寫出來、訓練好、再公開源碼。認真地說,FPN這篇論文寫的非常不錯,很合我胃口。
  • 用於圖像分割的卷積神經網絡:從R-CNN到Mask R-CNN
    2015: Fast R-CNN - 加速和簡化 R-CNNRoss Girshick 編寫了 R-CNN 和 Fast R-CNN,並持續推動著 Facebook Research 在計算機視覺方面的進展。R-CNN 性能很棒,但是因為下述原因運行很慢:1.
  • 何愷明團隊開源圖像分割新算法PointRend:性能顯著提升,算力僅需Mask R-CNN的2.6%
    論文作者 | Alexander Kirillov,Yuxin Wu,Kaiming He等 PointRend 是何愷明團隊對圖像分割領域的又一最新探索,該項工作創新地採用計算機圖形學的渲染思路來解決計算機視覺領域的圖像分割問題。算法不僅提升了分割過程中的平滑性,實現了對圖像細節的準確分割,也大大節省了資源消耗,算力需求僅為 Mask R-CNN 的 2.6%。
  • Mask R-CNN
    Mask R-CNN是一種在有效檢測目標的同時輸出高質量的實例分割mask。是對faster r-cnn的擴展,與bbox識別並行的增加一個預測分割mask的分支。Mask R-CNN 可以應用到人體姿勢識別。並且在實例分割、目標檢測、人體關鍵點檢測三個任務都取得了現在最好的效果。效果圖
  • 一文看懂近年火到不行的CNN圖像識別:從R-CNN到Mask R-CNN
    他在Facebook Research繼續推動計算機視覺(Computer Vision)的發展。R-CNN效果非常好,但是效率太低了,主要的原因:- 需要對每個圖像的每個區域建議進行CNN (AlexNet)前向傳播(forward pass),每個圖像大約2000次前向傳播。
  • 從FPN到Mask R-CNN,一文告訴你Facebook的計算機視覺有多強
    翻譯 | 人工智慧頭條(ID:AI_Thinker)參與 | 林椿眄本文概述了 Facebook AI Research(FAIR)近期在計算機視覺領域的研究進展
  • 一文帶你讀懂計算機視覺
    自動駕駛的圖像分割近年來,計算機視覺取得了很大進展。>https://towardsdatascience.com/r-cnn-fast-r-cnn-faster-r-cnn-yolo-object-detection-algorithms-36d53571365e a comparison of r-cnn, fast r-cnn, faster r-cnn and yolo
  • 深度學習筆記 | 第7講:CNN目標檢測發家史之從R-CNN到yolo
    又到了每周一狗熊會的深度學習時間了。在上一期的筆記分享中,小編和大家回歸了卷積神經網絡在圖像分類和識別方面的發展歷程,和大家梳理了經典的卷積網絡結構,了解了卷積網絡的發展脈絡,我們從上個世紀經典的 LeNet-5 網絡一直介紹到近年來的 ResNet。
  • 經典目標檢測方法Faster R-CNN和Mask R-CNN|基於PaddlePaddle深度...
    對於機器學習方法,首先使用 SIFT、HOG 等方法定義特徵,然後使用支持向量機 (SVM)、Adaboost 等技術進行分類。對於深度學習方法,深度學習技術能夠在沒有專門定義特徵的情況下進行端到端目標檢測,並且通常基於卷積神經網絡 (CNN)。但是傳統的目標檢測方法有如下幾個問題:光線變化較快時,算法效果不好;緩慢運動和背景顏色一致時不能提取出特徵像素點;時間複雜度高;抗噪性能差。
  • 一文概覽2017年Facebook AI Research的計算機視覺研究進展
    本文概述了 2017年Facebook AI 研究院(FAIR)在計算機視覺上的研究進展,包括基礎構建模塊創新、CNN、one shot 目標檢測模塊等,然後介紹實例分割方面的創新,最後介紹用弱半監督方式來擴展實例分割。特徵金字塔網絡(FPN)首先我們先來介紹著名的特徵金字塔網絡[1](發表在 CVPR 2017 上)。
  • 愷明大神 Mask R-CNN 超實用教程
    我們將應用Mask R-CNN到圖像和視頻流。在上周的博客文章中,你學習了如何使用Yolo物體探測器來檢測圖像中物體(https://www.pyimagesearch.com/2018/11/12/yolo-object-detection-with-opencv/)。對象檢測器,如yolo、faster r-cnn和ssd,生成四組(x,y)坐標,表示圖像中對象的邊界框。
  • 愷明大神 Mask R-CNN 超實用教程
    對象檢測器,如yolo、faster r-cnn和ssd,生成四組(x,y)坐標,表示圖像中對象的邊界框。從獲取對象的邊界框開始挺好的,但是邊界框本身並不能告訴我們(1)哪些像素屬於前景對象,(2)哪些像素屬於背景。這就引出了一個問題:是否可以為圖像中的每個對象生成一個MASK,從而允許我們從背景分割前景對象?
  • 【從零開始學Mask RCNN】一,原理回顧&&項目文檔翻譯
    同樣,對於狗這個目標,我們將其對應到特徵圖上得到的結果是,因為坐標要保留整數所以這裡引入了第一個量化誤差即捨棄了目標框在特徵圖上對應長寬的浮點數部分。backbone提取特徵,右邊的網絡採用FPN網絡做Backbone提取特徵,最終作者發現使用ResNet-FPN作為特徵提取的backbone具有更高的精度和更快的運行速度,所以實際工作時大多採用右圖的完全並行的mask/分類回歸。
  • 經典論文速讀-Mask R-CNN
    分割分支是一個小的FCN網絡,逐點分類像素,更重要的是,Faster R-CNN並不是輸入圖到分割圖上的像素到像素對齊,RoIPool這個核心模塊只能在特徵圖上提取比較粗的空間位置,本文提出一種不需要空間坐標取整的模塊RoIAlign,可以完整保留空間位置。
  • 先理解Mask R-CNN的工作原理,然後構建顏色填充器應用
    實例分割是一種在像素層面識別目標輪廓的任務,相比其他相關任務,實例分割是較難解決的計算機視覺任務之一:分類:這張圖像中有一個氣球。語義分割:這些全是氣球像素。特徵金字塔網絡(FPN)來源:Feature Pyramid Networks for Object Detection上述的主幹網絡還可以進一步提升。
  • 卷積神經網絡在圖像分割中的進化史:從R-CNN到Mask R-CNN
    受到多倫多大學Hinton實驗室研究工作的啟發,加州大學伯克利分校Jitendra Malik教授領導的團隊,提出了一個在如今看來好像是不可避免的問題:能否將Krizhevsky等人提出的網絡模型泛化應用到對象檢測上?對象檢測技術是一項通過標出圖像中不同對象並對其進行分類的任務。
  • 從零開始 Mask RCNN 實戰:基於 Win10 + Anaconda 的 Mask RCNN 環境搭建
    Mask RCNN 是何愷明基於以往的 Faster RCNN 架構提出的新的卷積網絡,實現高效地檢測圖中的物體,並同時生成一張高質量的每個個體的分割掩碼,即有效地目標的同時完成了高質量的語義分割。同時下載 Mask RCNN 的預訓練模型 「mask_rcnn_coco.h5」,放置於本地 Mask_RCNN 開源庫的根目錄下。
  • 【源頭活水】Sparse R-CNN:簡化版fast rcnn
    算法,是faster rcnn算法的前身,由於其巨大計算量以及無法端到端訓練,故而提出區域提取網絡RPN加上fast rcnn的faster rcnn算法。1.2 faster rcnnfastrcnn的做法不是一個完全端到端的做法,比較麻煩,性能也一般,故faster rcnn提出採用可學習的RPN網絡代替