天天看點

卷積神經網絡在圖像分割中的進化史:從R-CNN到Mask R-CNN本文目标2014年:R-CNN - 将CNN用于對象檢測的起源2015年:Fast R-CNN - 加速并簡化R-CNN2016年:Faster R-CNN - 加快區域建議2017年:Mask R-CNN - 擴充Faster R-CNN用于像素級分割未來展望

本文來自AI新媒體量子位(QbitAI)

卷積神經網絡(CNN)不僅能用來對圖像進行分類,還在圖像分割任務重有着廣泛的應用。

Dhruv Parthasarathy就職于Athelas,一家專注于深度學習技術的醫療健康公司。他在Medium上釋出了一篇部落格文章,介紹了在具體的圖像分割任務中如何應用卷積神經網絡,來得到更好的效果。

以下内容編譯自Parthasarathy文章:

自從深度學習鼻祖Geoff Hinton與他的研究所學生Alex Krizhevsky和Ilya Sutskever在2012年ImageNet大規模視覺識别挑戰賽中獲得冠軍,卷積神經網絡(CNN)已經成為了圖像分類的黃金标準。從那時起,卷積神經網絡一直在改進,現在已經在辨識ImageNet資料集的1000類日常對象上超過人類了。

卷積神經網絡在圖像分割中的進化史:從R-CNN到Mask R-CNN本文目标2014年:R-CNN - 将CNN用于對象檢測的起源2015年:Fast R-CNN - 加速并簡化R-CNN2016年:Faster R-CNN - 加快區域建議2017年:Mask R-CNN - 擴充Faster R-CNN用于像素級分割未來展望

圖1:CNN在ImageNet挑戰中超過人類,圖中y軸是ImageNet辨識的錯誤率。

雖然網絡分類結果令人感到欣喜,但在人類真實生活中的視覺了解要遠比圖像分類複雜多樣。

卷積神經網絡在圖像分割中的進化史:從R-CNN到Mask R-CNN本文目标2014年:R-CNN - 将CNN用于對象檢測的起源2015年:Fast R-CNN - 加速并簡化R-CNN2016年:Faster R-CNN - 加快區域建議2017年:Mask R-CNN - 擴充Faster R-CNN用于像素級分割未來展望

圖2:ImageNet分類挑戰中所使用的圖像執行個體:圖像邊緣完好,且隻有一個對象。

在分類任務中,一張圖像通常隻具有單個焦點對象,任務是說出這個對象的類别。但是在實際的世界中,我們會看到往往不止一個物體對象,這是一項更複雜的任務。

卷積神經網絡在圖像分割中的進化史:從R-CNN到Mask R-CNN本文目标2014年:R-CNN - 将CNN用于對象檢測的起源2015年:Fast R-CNN - 加速并簡化R-CNN2016年:Faster R-CNN - 加快區域建議2017年:Mask R-CNN - 擴充Faster R-CNN用于像素級分割未來展望

圖3:現實生活中的情景通常由許多不同且重疊的對象、背景和動作組成。

在一個複雜的情景中,通常有多個互相重疊的對象和不同的背景,我們不僅要對這些不同的對象分類,而且也要識别對象間的邊界、差異和彼此的關系。

卷積神經網絡在圖像分割中的進化史:從R-CNN到Mask R-CNN本文目标2014年:R-CNN - 将CNN用于對象檢測的起源2015年:Fast R-CNN - 加速并簡化R-CNN2016年:Faster R-CNN - 加快區域建議2017年:Mask R-CNN - 擴充Faster R-CNN用于像素級分割未來展望

圖4:在圖像分割中,其任務目标是對圖像中的不同對象進行分類,并确定對象邊界。

卷積神經網絡可以幫助我們處理這個複雜的任務嗎?對于更複雜的圖像,我們可以使用卷積神經網絡來區分圖像中的不同對象及其邊界嗎?Ross Girshick和他的同僚們用最近幾年的研究工作,給出了一個肯定的答案。

這篇文章将會介紹一些用于對象檢測和圖像分割的主流技術,并了解其網絡狀态的演化過程。

具體來說,我們将介紹首先解決了這個問題的R-CNN網絡,以及後來發展出來的Fast R-CNN和Faster R-CNN。另外,我們還将介紹Mask R-CNN網絡,這是Facebook Research組最近釋出的一篇文章,其擴充了這種對象檢測技術,且提供了像素級分割的技術。以下是這篇文章所引用的論文:

卷積神經網絡在圖像分割中的進化史:從R-CNN到Mask R-CNN本文目标2014年:R-CNN - 将CNN用于對象檢測的起源2015年:Fast R-CNN - 加速并簡化R-CNN2016年:Faster R-CNN - 加快區域建議2017年:Mask R-CNN - 擴充Faster R-CNN用于像素級分割未來展望

圖5:R-CNN網絡的對象檢測算法可以分析圖像并識别圖像中主要對象的位置和類别。

受到多倫多大學Hinton實驗室研究工作的啟發,加州大學伯克利分校Jitendra Malik教授上司的團隊,提出了一個在如今看來好像是不可避免的問題:

能否将Krizhevsky等人提出的網絡模型泛化應用到對象檢測上?

對象檢測技術是一項通過标出圖像中不同對象并對其進行分類的任務。在對象檢測挑戰賽PASCAL VOC上,由Ross Girshick,Jeff Donahue和Trevor Darrel組成的這個團隊,發現這個問題可以通過Krizhevsky的研究成果來進行解決。

他們寫道:

這篇論文首先說明一個事實,與基于更簡單的用方向梯度直方圖(HOG)類特征建構的系統相比,卷積神經網絡可以顯着提高PASCAL VOC上的對象檢測性能。

接下來,我們将會深入了解他們的Regions With CNNs (R-CNN)架構是如何運作的。

R-CNN的目标是分析圖像,并正确識别圖像中主要對象,通過邊界框标出對象的具體位置。

輸入:圖像

輸出:圖像中每個對象的邊界框和标簽

但是我們如何确定這些邊界框的大小和位置呢?R-CNN網絡通過以下操作完成了一個我們直覺上可以完成的任務:在圖像中提出了多個邊框,并判斷這其中的任何一個是否對應着一個具體對象。

卷積神經網絡在圖像分割中的進化史:從R-CNN到Mask R-CNN本文目标2014年:R-CNN - 将CNN用于對象檢測的起源2015年:Fast R-CNN - 加速并簡化R-CNN2016年:Faster R-CNN - 加快區域建議2017年:Mask R-CNN - 擴充Faster R-CNN用于像素級分割未來展望

圖6:通過多種尺寸的邊框進行選擇性搜尋,查找具有相同的紋理、顔色或強度的相鄰像素。

R-CNN網絡使用了選擇性搜尋的方法,來建立這些邊界框或區域建議(region proposal)。在圖6中,選擇性搜尋通過不同大小的邊框分析圖像,并且對于每個圖像塊,嘗試通過紋理、顔色或強度将相鄰像素組合在一起,以識别對象。

想深入了解選擇性搜尋,請閱讀:

<a>http://www.cs.cornell.edu/courses/cs7670/2014sp/slides/VisionSeminar14.pdf</a>

卷積神經網絡在圖像分割中的進化史:從R-CNN到Mask R-CNN本文目标2014年:R-CNN - 将CNN用于對象檢測的起源2015年:Fast R-CNN - 加速并簡化R-CNN2016年:Faster R-CNN - 加快區域建議2017年:Mask R-CNN - 擴充Faster R-CNN用于像素級分割未來展望

圖7:在建立一組區域建議後,R-CNN網絡會将每個圖像塊傳遞給一種改進版的AlexNet網絡,确定這些圖像塊是否為有效區域。

建立了區域建議後,R-CNN網絡将該區域塊變形标準的方形,并将其輸入到改進版的AlexNet網絡,具體步驟如圖7所示。AlexNet是在ImageNet 2012比賽中的最優網絡,R-CNN靈感就來源于它。

在CNN的輸出層,R-CNN網絡還應用了支援向量機(SVM)的方法,它能夠判斷該圖像是否為對象,以及是什麼對象。

現在,我們已經能在邊界框中找到對象,但是還能縮小邊界框來适應對象的真實尺寸嗎?可以的,這就是建構R-CNN網絡的最後一個步驟。R-CNN網絡對區域建議進行簡單的線性回歸操作,來獲得更貼近的邊界框坐标,獲得了R-CNN網絡的最終輸出結果。回歸模型的輸入和輸出分别為:

輸入:與對象相對應的圖像子區域。

輸出:子區域中對象的新邊界框坐标。

是以,R-CNN網絡總結為以下幾個步驟:

1. 為邊界框生成一組區域建議;

2. 通過預先訓練好的AlexNet網絡來判斷邊框中的圖像是否為有效區域,最後通過支援向量機算法來确定邊框中的圖像類别;

3. 在确定邊框圖像的類别後,應用線性回歸模型,來輸出更緊密的邊框坐标。

卷積神經網絡在圖像分割中的進化史:從R-CNN到Mask R-CNN本文目标2014年:R-CNN - 将CNN用于對象檢測的起源2015年:Fast R-CNN - 加速并簡化R-CNN2016年:Faster R-CNN - 加快區域建議2017年:Mask R-CNN - 擴充Faster R-CNN用于像素級分割未來展望

圖8:Ross Girshick發明了R-CNN和Fast R-CNN,并繼續推動着Facebook Research計算機視覺技術的發展。

R-CNN網絡的性能很好,但是實際上訓練起來很慢,有以下幾個原因:

1. 單個圖像的每個區域建議都需要利用AlexNet網絡進行判斷,每次判斷大約需要2000次前向傳播。

2. 此網絡必須單獨訓練三種不同的模型:提取圖像特征的CNN網絡,判斷類别的分類器和縮小邊框的回歸模型。這樣子很難訓練這些網絡。

2015年,R-CNN網絡的第一作者Ross Girshick解決了這兩個問題,發明了新的網絡Fast R-CNN。現在我們來了解Fast R-CNN網絡的主要創新點。

在CNN的前向傳遞過程中,Girshick意識到,每個圖像的多個區域總是互相重疊,導緻我們多次運作相同的CNN計算,多達2000次。他的創新很簡單:可不可以對每個圖像隻運作一次CNN運算,然後在2000次前向傳播過程中找到一種共享這個計算結果的方法?

卷積神經網絡在圖像分割中的進化史:從R-CNN到Mask R-CNN本文目标2014年:R-CNN - 将CNN用于對象檢測的起源2015年:Fast R-CNN - 加速并簡化R-CNN2016年:Faster R-CNN - 加快區域建議2017年:Mask R-CNN - 擴充Faster R-CNN用于像素級分割未來展望

圖9:在RoIPool層中,建立每個圖像完整的前向傳播過程,并從獲得的前向傳播過程中提取每個感興趣區域的轉換特征。

這正是Fast R-CNN網絡用感興趣區域池化(RoIPool,Region of Interest Pooling)技術所做的創新。其創新點在于,RoIPool層共享了CNN網絡在圖像子區域中的前向傳播過程。在圖9中,是從CNN的特征圖譜中選擇相應的區域來擷取每個區域的CNN抽象特征。然後,通常使用最大池化操作來合并每個區域中的初級抽象特征。是以我們隻進行了原始圖像的一次前向傳播操作,而不是2000次。

卷積神經網絡在圖像分割中的進化史:從R-CNN到Mask R-CNN本文目标2014年:R-CNN - 将CNN用于對象檢測的起源2015年:Fast R-CNN - 加速并簡化R-CNN2016年:Faster R-CNN - 加快區域建議2017年:Mask R-CNN - 擴充Faster R-CNN用于像素級分割未來展望

圖10:Fast R-CNN将卷積神經網絡、分類器和縮小邊框的回歸模型整合成一個單輸入雙輸出的網絡。

Fast R-CNN的第二個創新點是在一個模型中聯合訓練卷積神經網絡、分類器和邊界框回歸模型。在R-CNN中,我們使用了卷積神經網絡來提取圖像特征,用支援向量機來分類對象和用了回歸模型來縮小邊界框,但是Fast R-CNN使用單個網絡模型來實作以上三個功能。

圖10是Fast R-CNN網絡的過程示意圖。Fast R-CNN在CNN輸出層用softmax函數代替了SVM分類器,來輸出對象類别。同時在CNN輸出層,還加入了用來輸出邊界框坐标的線性回歸層。這樣單個網絡就可以輸出所需資訊。

整個模型的輸入和輸出分别為:

輸入:帶多個區域建議的圖像。

輸出:具有更緊密邊界框的每個區域的對象類别。

即使Fast R-CNN的性能有了很大的改善,但是仍然存在一個短闆——區域建議生成方式(region proposer)。在上面已經提到,為了檢測圖像中對象位置,第一步是要産生一系列随機多尺度的邊界框或是待測試的感興趣區域。在Fast R-CNN中,通過選擇性搜尋方法建立這些區域,這是一個相當緩慢的過程,被認為是整個流程的短闆。

卷積神經網絡在圖像分割中的進化史:從R-CNN到Mask R-CNN本文目标2014年:R-CNN - 将CNN用于對象檢測的起源2015年:Fast R-CNN - 加速并簡化R-CNN2016年:Faster R-CNN - 加快區域建議2017年:Mask R-CNN - 擴充Faster R-CNN用于像素級分割未來展望

圖11:微軟研究院首席研究員孫劍是Faster R-CNN網絡團隊的上司者。

在2015年中期,由任少卿,何恺明,Ross Girshick和孫劍組成的一個微軟研究院團隊發現了一種叫做“Faster R-CNN”的網絡結構,幾乎把邊框生成過程的運算量降為0。

Faster R-CNN的創新點在于,區域建議取決于通過CNN裡的第一個卷積層前進傳播過程中的圖像特征。那為什麼不對單獨運作選擇性搜尋算法的方式進行改變,重複利用多個區域建議中相同的CNN結果呢?

卷積神經網絡在圖像分割中的進化史:從R-CNN到Mask R-CNN本文目标2014年:R-CNN - 将CNN用于對象檢測的起源2015年:Fast R-CNN - 加速并簡化R-CNN2016年:Faster R-CNN - 加快區域建議2017年:Mask R-CNN - 擴充Faster R-CNN用于像素級分割未來展望

圖12:在Faster R-CNN中,單個CNN網絡用來實作區域建議和對象分類。

這正是Faster R-CNN團隊所取得的成果。圖12中解釋了該如何使用單個CNN網絡來實作區域建議和對象分類。這樣,隻需要訓練一個CNN網絡,我們幾乎不花費計算量獲得了所需的區域建議。作者在文章中寫道:

我們觀察到,Fast R- CNN網絡裡區域檢測器所使用的卷積特征圖譜,也可用于生成區域建議,進而把區域建議的運算量幾乎降為0。

該模型的輸入和輸出分别為:

輸入:圖像(不需要帶有區域建議)。

輸出:圖像中對象的類别和邊界框坐标。

接下來我們來看下Faster R-CNN如何從CNN特征中生成這些區域建議。Faster R-CNN在CNN特征的頂部添加了一個完全卷積網絡(FCN),建立了所謂的區域建議網絡(Region Proposal Network)。

卷積神經網絡在圖像分割中的進化史:從R-CNN到Mask R-CNN本文目标2014年:R-CNN - 将CNN用于對象檢測的起源2015年:Fast R-CNN - 加速并簡化R-CNN2016年:Faster R-CNN - 加快區域建議2017年:Mask R-CNN - 擴充Faster R-CNN用于像素級分割未來展望

圖13:區域建議網絡在CNN特征圖譜上依次滑動一個視窗。在每個視窗位置上,網絡在每個錨點上輸出一個分值和一個邊界框。是以,一共有4k個邊界框坐标,其中k是錨點的數量。

區域建議網絡通過在CNN特征圖譜上依次滑動視窗,并在每個視窗中輸出k個可能的邊界框和分值,來評估這些邊界框包含對象的可能性。這k個邊框代表了什麼?

卷積神經網絡在圖像分割中的進化史:從R-CNN到Mask R-CNN本文目标2014年:R-CNN - 将CNN用于對象檢測的起源2015年:Fast R-CNN - 加速并簡化R-CNN2016年:Faster R-CNN - 加快區域建議2017年:Mask R-CNN - 擴充Faster R-CNN用于像素級分割未來展望

圖14:一般來說,帶有人物形象的邊框往往是豎長的矩形。我們可以使用這種常理,通過建立這樣次元的位置,來指導生成區域建議網絡。

直覺上,我們知道圖像中的對象應該符合某些常見的縱橫比和大小。例如,我們想要建立一些适合人類形狀的矩形框。這樣當遇到非常窄的邊界框時可以排除是人類對象的可能性。以這種方式,我們建立大小為k的通用長寬比,稱為錨點盒(anchor box)。對于每個這樣的錨點盒,我們對應輸出一個邊界框坐标和每個位置的分值。

考慮到這些錨點盒,這個區域建議網絡的輸入和輸出分别為:

輸入:CNN特征圖譜。

輸出:每個錨點的邊界框。該邊界框中的圖像作為對象的可能性用輸出分值表示。

然後,我們隻将每個可能是目标對象的邊界框傳遞到Fast R-CNN中,以實作對象分類和縮緊邊界框。

卷積神經網絡在圖像分割中的進化史:從R-CNN到Mask R-CNN本文目标2014年:R-CNN - 将CNN用于對象檢測的起源2015年:Fast R-CNN - 加速并簡化R-CNN2016年:Faster R-CNN - 加快區域建議2017年:Mask R-CNN - 擴充Faster R-CNN用于像素級分割未來展望

圖15:具體的圖像分割目标是在像素級場景中識别不同對象的類别。

到目前為止,我們已經了解到如何能夠以許多有趣的方式使用CNN特征,來有效地用邊界框定位圖像中的不同對象。

我們可以進一步擴充這些技術,定位到每個對象的精确像素,而不是僅限于邊框嗎?這個問題就是經典的圖像分割問題。何恺明和Girshick等研究人員,在Facebook人工智能研究部門裡使用了一種被稱為Mask R-CNN的網絡結構來探索這個問題。

卷積神經網絡在圖像分割中的進化史:從R-CNN到Mask R-CNN本文目标2014年:R-CNN - 将CNN用于對象檢測的起源2015年:Fast R-CNN - 加速并簡化R-CNN2016年:Faster R-CNN - 加快區域建議2017年:Mask R-CNN - 擴充Faster R-CNN用于像素級分割未來展望

圖16:Facebook 人工智能研究部門的研究員何恺明是Mask R-CNN網絡的主要作者,也是Fast R-CNN的共同作者。

和Fast R-CNN、Faster R-CNN很相似,Mask R-CNN的基本思想是簡單直覺的:Faster R-CNN在物體檢測上效果很好,那麼我們能否将其擴充并應用到像素級分割?

卷積神經網絡在圖像分割中的進化史:從R-CNN到Mask R-CNN本文目标2014年:R-CNN - 将CNN用于對象檢測的起源2015年:Fast R-CNN - 加速并簡化R-CNN2016年:Faster R-CNN - 加快區域建議2017年:Mask R-CNN - 擴充Faster R-CNN用于像素級分割未來展望

圖17:在Mask R-CNN中,Faster R-CNN的CNN特征頂部添加了一個完全卷積網絡(Fully Convolutional Network),用來生成掩碼(分割輸出)。特别注意網絡的掩碼輸出是怎麼與Faster R-CNN網絡的對象分類器和邊界框回歸網絡實作并行的。

Mask R-CNN通過向Faster R-CNN網絡添加一個分支來輸出一個二進制掩碼,來說明給定像素是否為對象的一部分。在圖17中的白色分支僅僅是CNN特征圖譜上的完全卷積網絡。

輸入:CNN特征圖。

輸出:在像素屬于對象的所有位置上都具有1s的矩陣,其他位置為0s,這種規則被稱為二進制掩碼。

但Mask R-CNN網絡的作者不得不進行一次小小的調整,使這個訓練按預期往前推進。

卷積神經網絡在圖像分割中的進化史:從R-CNN到Mask R-CNN本文目标2014年:R-CNN - 将CNN用于對象檢測的起源2015年:Fast R-CNN - 加速并簡化R-CNN2016年:Faster R-CNN - 加快區域建議2017年:Mask R-CNN - 擴充Faster R-CNN用于像素級分割未來展望

圖18:圖像舍棄RoIPool技術,通過RoIAlign技術傳遞,使得由RoIPool選擇的特征圖譜區域更精準地對應原始圖像的區域。這是很有必要的,因為與用邊界框确定坐标相比,像素級分割需要更精細的像素對齊。

Mask R-CNN作者發現,在最初的Faster R-CNN網絡結構中, RoIPool所選擇的特征圖譜區域與原始圖像的區域略微不對齊。由于圖像分割需要像素級特異性,與邊框确定過程不同,這自然就導緻了不準确。

作者通過調整RoIPool方法,實作更準确的對齊,巧妙地解決了這個問題,這個調整後的方法叫做RoIAlign方法。

卷積神經網絡在圖像分割中的進化史:從R-CNN到Mask R-CNN本文目标2014年:R-CNN - 将CNN用于對象檢測的起源2015年:Fast R-CNN - 加速并簡化R-CNN2016年:Faster R-CNN - 加快區域建議2017年:Mask R-CNN - 擴充Faster R-CNN用于像素級分割未來展望

圖19:我們該如何準确地将原始圖像的感興趣區域映射到特征圖譜上?

假設我們有一個尺寸大小為128x128的圖像和大小為25x25的特征圖譜。如果我們想要在特征圖譜中表示原始圖像中左上角15x15像素的區域,該如何從特征圖中選擇這些像素?

我們知道原始圖像中的每個像素對應于特征圖譜中的25/128個像素。要從原始圖像中選擇15像素,我們就在特征圖譜中選擇15*(25/128)=2.93個像素。

在RoIPool中,我們會舍棄小數點後的部分,隻選擇2個像素,導緻輕微的錯位。然而,在RoIAlign中,我們避免了這樣的舍棄。相反,我們使用雙線性插值來精确地得到這2.93像素中的資訊。這樣子在很大程度上避免了RoIPool方法造成的像素錯位。

Mask R-CNN在生成這些掩碼後,将它們與Faster R-CNN輸出層的對象類别和邊界框組合起來,産生了奇妙的精确分割。

卷積神經網絡在圖像分割中的進化史:從R-CNN到Mask R-CNN本文目标2014年:R-CNN - 将CNN用于對象檢測的起源2015年:Fast R-CNN - 加速并簡化R-CNN2016年:Faster R-CNN - 加快區域建議2017年:Mask R-CNN - 擴充Faster R-CNN用于像素級分割未來展望

圖20:Mask R-CNN能夠對圖像中的對象進行分割和分類。

在過去短短的3年時間裡,我們看到了對圖像分割問題的研究,是如何從Krizhevsky等人的R-CNN,經過不斷發展,最後得到Mask R-CNN的奇妙分割效果。

單獨來看,Mask R-CNN所呈現的結果似乎是無法達到的巨大飛躍。然而,我希望大家通過這篇文章可以認識到,這些成果,實際上由多年來辛勤工作和團隊合作帶來的直覺、漸進式提升累積而來。R-CNN、Fast R-CNN、Faster R-CNN和最終的Mask R-CNN,每個想法并不一定都是跨越式的進步,但是疊加這些進步後,最終的Mask R-CNN卻帶來了非常顯著的奇妙效果,使目前的計算機視覺技術向人類的視覺能力更靠近了一些。

讓我感到特别興奮的是,從R-CNN網絡進化到Mask R-CNN網絡,一共隻用了三年時間。随着更多的資金、更多的關注和更多的支援,計算機視覺在三年後會有怎樣的進展呢?讓我們拭目以待。

如果想更深入了解CNN在圖像分割中的進展,極其背後的原理,别忘了我們在文章開頭提到的這四篇論文:

以及文中提到的選擇性搜尋:

本文作者:王小新 

原文釋出時間:2017-04-30

繼續閱讀