當前位置:
首頁 > 新聞 > 香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

雷鋒網 AI 科技評論按:物體檢測是計算機視覺的基礎任務之一。香港中文大學多媒體實驗室博士生陳愷在 AI 研習社的公開課上,為大家總結了深度學習背景下物體檢測演算法的發展,分享 COCO 比賽冠軍團隊所使用的演算法,並介紹由港中大多媒體實驗室開源的物體檢測演算法框架 mmdetection。


公開課回放視頻網址:

http://www.mooc.ai/open/course/604?=chenkai

分享嘉賓:

陳愷,香港中文大學多媒體實驗室博士生,COCO 2018 Instance Segmentation Challenge 冠軍團隊成員。

分享主題:物體檢測演算法的近期發展及開源框架介紹

分享提綱:


1. 深度學習背景下物體檢測演算法的發展

2. COCO 2018 Instance Segmentation 冠軍團隊演算法分享

3. 開源物體檢測框架 mmdetection 及 Open-MMLab 計劃介紹

雷鋒網 AI 研習社將其分享內容整理如下:

我叫陳愷,來自香港中文大學多媒體實驗室。我 2015 年從清華大學自動化系本科畢業,之後進入香港中文大學多媒體實驗室讀博,現在是博士四年級,導師是林達華老師。研究方向主要是物體檢測、視頻分析。

今天我報告的題目是《物體檢測演算法的近期發展》。

深度學習背景下物體檢測演算法的發展

對於物體檢測,有的人可能比較了解,有的人可能還不怎麼清楚,這裡我借用 COCO dataset 論文(論文查看地址:https://arxiv.org/pdf/1405.0312.pdf)裡面的 4 張圖來形象地介紹一下相關的任務:

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

打開今日頭條,查看更多圖片

  • Image classification:圖像分類,這個任務指的是給出一張圖片,要識別出哪張圖片屬於哪個類別。

  • Object detection:物體檢測,這個任務除了需要識別出圖片屬於哪個類別,還需要對相應的物體進行具體位置的定位,我們通常用矩形框來框出這個物體。

  • Semantic segmentation:語義分割,這個任務是指對圖片中的每個 pixel 打上標籤,比如這裡要給它們打上 person、sheep、dog 的標籤,需要進行非常精細的分類。

  • Instance segmentation:實例分割,可以理解為進行物體檢測後,對每個矩形框中的物體進行語義分割,該任務除了需要找到物體的類別和位置之外,還需要分辨出不同物體的 pixel。

下面用這個案例來說明物體檢測和實例分割之間的區別:

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

(關於這個案例的具體講解,請回看視頻 00:04:05-00:05:35 處)

接下來介紹一下物體檢測在深度學習出現以來的發展情況。

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

上面綠色的字體表示的是 Two-stage Detector 的發展歷程,當然還有很多其他的方法,這裡列出的是一些比較有代表性的方法。

  • 2014 年有一項很重要的工作是 R-CNN,它是將物體檢測首次應用於深度學習中的一篇論文,引用量非常高,影響也非常廣泛。它的主要思路是將物體檢測轉化為這麼一個問題:首先找到一個 region(區域),然後對 region 做分類。之後作者又提出了 Fast R-CNN,它是一個基於 R-CNN 的演算法,運算速度顯著提高。

  • 2015 年,這一群人又提出了 Faster R-CNN,它在速度上相比 Fast R-CNN 有了更大的提高,主要是改進了怎樣在 Fast R-CNN 和 R-CNN 中找 region 的過程,Faster R-CNN 也是用深度學習的方法得到一些 region(稱之為 proposal),然後再用這些 proposal 來做分類。雖然距離 Faster R-CNN 的提出已經三年多了,但它依舊是使用非常廣泛的一種演算法。

  • 2016 年,代季峰等人提出了 R-FCN,它在 Faster R-CNN 的基礎上進行了改進,當時它在性能和速度都有非常大的提高。

  • 2017 年有兩篇影響力非常大的論文,FPN 和 Mask R-CNN。FPN 也就是 Feature Pyramid Network,它相當於生成了 feature pyramid,然後再用多個 level 的 feature 來做 prediction。Mask R-CNN 這篇論文獲得了 ICCV 2017 的最佳論文,由何愷明他們提出,其在 Faster R-CNN 基礎上增加了 mask branch,可以用來做實例分割,同時因為有 multi-task learning,因此它對物體框的性能也有很大的提高。

  • 2018 年,沿著 Faster R-CNN 這條路線提出的方法有 Cascade R-CNN,它將 cascade 結構用在了 Faster R-CNN 中,同時也解決了一些 training distribution 的一些問題,因此它的性能是比較高的。另外還有兩篇比較重要的論文——Relaiton Network 和 SNIP。

下面藍色字體表示的 Single-stage Detector 的發展歷程:2014 年的 MultiBox 是非常早期的工作;2016 年提出了 SSD 和 YOLO,這兩篇論文是 Single-stage Detector 中的代表作;2017 年提出了 RetinaNet(當時 Single-stage Detector 中性能最高的方法)和 YOLO v2;2018 年有一個新的思路,提出了 CornerNet,把物體檢測看成一堆點的檢測,然後將這些點 group 起來,我們下面會詳細講到它。

下面會講一下物體檢測近期(2017 年以來)的工作。由於 Faster R-CNN 是很多方法的基礎,我們首先會介紹一下這個方法。

在此之前,先講一下物體檢測一般的 pipeline。下圖是一個 Two-stage Detector,它的 pipeline 首先有一張圖片,之後的步驟共分為三個部分:

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

第一部分是 Feature generation:首先圖片經過 backbone(分類網路)後,會生成 feature; 之後 feature 或者直接進行 prediction,或者再過一個 neck 進行修改或增強;

第二部分是 Region proposal:這個部分是 Two-stage Detector 的第一個 stage,其中會有一堆 sliding window anchor(預先定義好大小的框),之後對這些框做 dense 的分類和回歸;接著再篩除大部分 negative anchor,留出可能是物體的框,這些框稱之為 proposal;

第三個部分是 Region recognition:有了 proposal 後,在 feature map 上利用 Rol feature extractor 來提取出每一個 proposal 對應的 feature(Rol feature),最後會經過 task head。

相對來說,Single-stage Detector 的 pipeline 比較簡單。

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

圖片首先經過 feature generation 模塊,這裡也有 sliding window anchor,但是它們不是用來生成 proposal 的,而是直接用於做最終的 prediction,通過 dense 的分類和回歸,能直接生成最終的檢測結果。

(對於該部分的具體講解,請回看視頻 00:12:00:00:16:25 處)

Faster R-CNN

Faster R-CNN 是 Two-stage Detector 工作的基礎,它主要提出了兩個東西:

RPN:即 Region Proposal Network,目前是生成 proposal 的一個標準方式。

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

Traning pipeline:主要講的是 Two-stage Detector 應該怎樣 train,論文里給出的是一種交替的方法。

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

(關於 Faster R-CNN 的具體講解,請回看視頻 00:17:00:00:21:45 處)

FPN

FPN(Feature Pyramid Network)主要也是提出了兩項重要的思路:Top-down pathway 和 Multi-level prediction。

下圖中的 4 張圖代表了基於單個或多個 feature map 來做預測的 4 種不同的套路:

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

具體實現如下圖所示:

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

(關於 FPN 的具體講解,請回看視頻 00:22:35-00:25::45 處)

Mask R-CNN

Mask R-CNN 主要也有兩點貢獻:

RoIAlign:在 Mask R-CNN 之前,大家用得比較多的是 Rol Pooling,實現過程是:給出一個框,在 feature map 上 pool 出一個固定大小的 feature,比如要 pool 一個 2×2 的 feature,首先把這個框畫出 2×2 的格子,每個格子映射到 feature map,看它覆蓋了多少個點,之後對這些點做 max pooling,這樣就能得出一個 2×2 的 feature。它的劣勢是如果框稍微偏一點,得出的 feature 卻可能是一樣的,存在截斷誤差。Rol Align 就是為了解決這一問題提出的。Rol Align 並不是直接對框內的點做 max pooling,而是用雙線性插值的方式得到 feature。其中還有一步是:在 2×2 的每個框中會選擇多個點作為它的代表,這裡選擇了 4 個點,每個點分別做雙線性插值,之後再讓這 4 個點做 max/average pooling。

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

Mask branch:它是一個非常精細的操作,也有額外的監督信息,對整個框架的性能都有所提高。它的操作過程如下圖所示:

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

(關於 Mask R-CNN 的具體講解,請回看視頻 00: 26:55:00:30:20 處)

Cascade R-CNN

Cascade R-CNN 是目前 Faster R-CNN 這條線中較新的方法。這個方法也提出了兩點貢獻:一是提出了使用 cascade architecture;二是提出了怎樣來適應 training distribution。

Cascade architecture :這個框架不是特別新的東西,之前也有類似的結構。下圖左邊是 Faster R-CNN,右邊是 Cascade R-CNN。其中 I 代表圖像或者圖像生成的 feature map,H0 是 RPN,B 是 bounding box regression,C 是 classification。經過 RPN 得到的 proposal 再做 pooling 後,會有分類和回歸這兩個 prediction。

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

Cascade R-CNN 的結構是,在經過第一次分類和回歸之後,會用得到 bounding box 再來做一次 pooling,然後對這些框做下一階段的分類和回歸,這個過程可以重複多次。但如果僅僅使用 Cascade R-CNN 而不做其他改變,Cascade R-CNN 帶來的提高是非常有限的。

我認為 Cascade R-CNN 提出了一個很好的 motivation,這是它比較有意義的一個地方。它研究了一下採用不同的 IoU 閾值來進行 training 的情況下,Detector 和 Regressor 的性能分布。如下圖所示:

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

基於此,Cascade R-CNN 就提出了在不同的 stage 怎樣進行訓練的問題。下圖是 3 個 stage 的框的分布:

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

結果顯示,越往後的 stage,它的高 IoU 的框就越多。所以在 Cascade R-CNN 中,第 1 個 stage 用的是傳統的 0.5 的閾值;第 2 個 stage 用的是 0.6 的閾值;第 3 個 stage 用的是 0.7 的閾值。這篇論文的核心思想是,training distribution 在不同的 stage 需要隨著 sample distribution 來改變的。

(對於 Cascade R-CNN 的具體講解,請回看視頻 00: 30:30-00:35:30 處)

RetinaNet

RetinaNet 是 Singe-stage Detector 目前比較重要的一項工作,它可以看做是由 FPN+Focal Loss 組成的,其中 FPN 只是該論文中用到的架構,而 Focal Loss 則是本論文主要提出的工作。

RetinaNet 結構如下:

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

RetinaNet 的結構 和 SSD 非常類似,只不過它用的是 ResNet,並在 ResNet 上加入了 FPN 的結構,每一層都有兩個分支:一個用來做分類;另一個用來做框回歸。此外它的每個 head 都比 SSD 和 Faster R-CNN 都要大一點,這樣的話,它的參數量比較大,計算速度也比較慢。

而 Focal Loss 試圖解決的問題是 class imbalance。針對 class imbalance 的問題,Two-stage Detector 一般是通過 proposal、mini-batch sampaling 兩種方式來解決的;SSD 是通過 hard negative mining 來解決的;而 RetinaNet 則通過 Focal Loss 來解決該問題。

Focal loss 的核心思路是:對於 high confidence 的樣本,給一個小的 loss——這是因為正負樣本不平衡,或者說是由於 class imbalance 導致了這樣的問題:比如說正負樣本的比例是 1:1000,雖然負樣本的 loss 都很小,但數目非常多,這些負樣本的 loss 加起來的話,還是比正樣本要多——這樣的話,負樣本就會主導整個框架。其具體公式表示如下圖所示:

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

(關於 RetinaNet 更詳細的講解,請回看視頻 00:35:55-00 :40:45 處)

Relation Network

在 Relation Network 之前的大部分 detectcor,在做 prediction 或 training 的時候通常只考慮到當前這一個框,而 Relation Network 提出還要考慮這個框周圍的框,並基於此提出了一個 relation module,可以插在網路的任何位置,相當於是 feature refinement。Relation module 如下圖所示:

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

它的核心思想是:當前框的 feature 除了由當前框決定之外,還要考慮當前框和周圍框及其它框的關係,具體怎樣計算,大家感興趣的話可以閱讀論文原文了解。

SNIP

SNIP(Scale Normalization for Image Pyramids)是我認為另一篇比較有啟發性的工作。它提出的問題是:在 train 分類器的時候,究竟是要 scale specific 還是 scale invariant。傳統的 detector 通常會選擇 scale invariant,但 SNIP 研究了一下之前的方法後,發現之前的訓練方式得到的 feature 對 scale 並沒不是很 robust,因而提出要盡量減少 scale 的 variance,讓訓練時的 scale 儘可能地相似。

SNIP 結構圖如下:

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

CornerNet

CornerNet,是 Singe-stage Detector 中比較新的方法,其與其他方法最不一樣的地方是:之前的方法會在圖像上選出框,再對框做分類的問題;CornerNet 則是在圖中找到 pair 的關鍵點,這個點就代表物體。它的 pipeline 包括兩步:第一步是檢測到這樣的 corner,即 keypoint;第二步是 group corner,就是說怎樣將同一個物體的左上頂點和右下頂點框到一起。

其 pipeline 如下圖所示:

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

(關於 CornerNet 的具體講解,請回看視頻 00: 41:35-00:47:40 處)

COCO 2018 Instance Segmentation 冠軍團隊演算法分享

下面講一下我們在 COCO Challenge 2018 中的工作。

我們實驗室和商湯一起參加了 COCO Challenge 2018 比賽,然後在實例分割中取得了第一名的成績。

下圖展示了我們本次取得的成績與 2017 年的冠軍團隊取得的成績的比較:

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

比賽中,我們在三個方面提出了比較新的東西:


  • 第一,針對 detection 和 segmentation,我們提出了 Hybrid Task Cascade,簡稱 HTC;

  • 第二,針對 proposal 方面,我們提出了 Guided Anchoring,它是為了取代 sliding window 的 anchor;

  • 第三,針對 backbone,我們設計了新的 backbone——FishNet。

Hybrid task cascade(HTC)

前面我們講到過,Cascade Mask R-CNN 的×××performance 非常高,所以比賽中幾乎所有的隊伍都用了 Cascade Mask R-CNN,而這種方法其中的一項重要工作就是預測 mask,我們當時一個比較 naive 的想法就是把 Cascade R-CNN 和 Mask R-CNN 結合在一起,結構如下圖所示:

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

但這種方法的問題是:每個 stage 的 branch 都做並行的 prediction,彼此間沒有任何交集。

為了改善這一問題,我們提出了 interleaved execution,即交替做 bbox prediction 和 mask prediction。結構如下:

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

但是它仍存在一個問題是:不同 stage 的 mask branches 之間沒有 information flow,所以需要人為引入 information flow,如下圖所示:

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

不過這樣的話,該方法依舊存在另外一個問題:做 mask prediction 需要一些 spatial context,然而上面這個架構中並沒有引入任何 spatial context。那我們就想到可以做一個全圖的 semantic segmentation,這樣做的話,框架的 spatial context 就變得比較明顯了:

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

基於這些調整和改進,HTC 最終的 performance 如下圖所示:

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

無論是在小模型 ResNet-50 上還是大模型 ResNeXt-101 上,它的性能都有非常穩定的提升。

Guided Anchoring

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

Guided Anchoring 的思路是:將 sliding window anchor 變成 learnable 的東西。因此其目標就是得到 sparse anchor,同時其形狀是任意的。但是在設計 anchor 的時候有兩個原則:alignment 和 consistency。

下面幾張圖是 Guided Anchoring 的實現過程:

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

下圖是 Guided Anchoring 的 performance:

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

FishNet

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

FishNet 這個工作的論文被 NIPS 2018 收錄了。它的想法是:對於圖像分類來說,需要的是深層的、低解析度的特徵,而不考慮空間上的信息;但是對於 segmentation 和 detection 來說,需要空間上的信息,因此需要的是深層的和高解析度的特徵,因此我們就將這兩種思路結合起來設計了 FishNet。具體設計大家可以參考論文。

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

FishNet 的性能如下圖所示:

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

在 detection 和 instance segmentation 中,性能也有比較大的提升。

(關於這三個工作的具體講解,請回看視頻 00:49:00-00:59:40 處)

下圖顯示了我們在比賽中的相關工作的一些細節:

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

香港中文大學陳愷:物體檢測演算法的近期發展及開源框架介紹 | 大講堂第 102 期

(關於比賽細節的詳細講解,請回看視頻 00:59:50-01:01:40)

Open-MMLab 計劃及開源物體檢測框架 mmdetection 介紹

最後我介紹一下 Open-MMlab 的這個項目。林達華老師在 MMLAB 知乎專欄(地址:https://zhuanlan.zhihu.com/p/47011261)里對這個項目進行過介紹。

目前有兩個代碼庫 :一個是 mmcv;另一個是 mmdetection。

(關於這兩個項目的具體講解,請回看視頻 01:02:10-1:04:25-處。)

分享最後,嘉賓還對各位同學們的提問進行了回答,大家可回看視頻 01:04:30 處

以上就是本期嘉賓的全部分享內容。更多公開課視頻請到雷鋒網 AI 研習社社區(http://ai.yanxishe.com/)觀看。關注微信公眾號:AI 研習社(okweiwu),可獲取最新公開課直播時間預告。雷鋒網

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

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


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

自動駕駛汽車數據不再封閉,Uber 開源新的數據可視化系統
KindEditor上傳漏洞致近百個黨政機關網站遭植入

TAG:雷鋒網 |