Ross、何愷明等人提出PointRend:渲染思路做影像分割,顯著提升Mask R-CNN效能

杜佳豪發表於2019-12-20
Ross、何愷明等人提出PointRend:渲染思路做影像分割,顯著提升Mask R-CNN效能
例項分割是計算機視覺任務中一個重要的任務。傳統的示例分割方法輸入影像,並對影像的每個畫素點進行預測,推斷畫素點所屬的例項標籤,並區分屬於不同例項的畫素點。然而,現有的方法可能會對光滑的畫素點區分邊界進行過度計算,導致本應當具有清晰、連續邊界的例項邊緣畫素點被分錯。為了解決這一問題,何愷明等提出了一種新的例項分割的方法,用來最佳化解決這個問題。


提到何愷明,讀者們都不會陌生。近年來,他在語義分割和例項分割領域做了很多開創性的工作,用來提升分割效果。例如,在例項分割方面提出全景分割的方法,在語義分割上則提出了效果驚人的 TensorMask。最近,Alexander Kirillov(一作)、吳育昕何愷明等又從計算機渲染的角度出發,提出了一個名為 PointRend 的方法,更好地提升影像分割過程中的平滑性和分割細節效果。


這一方法是否會對現有的網路架構帶來很大影響?研究者表示,這一方法可作為已有的影像分割架構的一個模組來使用。他們在 Mask R- CNN 和 DeepLabV3 等模型上進行了測試,效能提升明顯,而且算力佔用很小。

Ross、何愷明等人提出PointRend:渲染思路做影像分割,顯著提升Mask R-CNN效能

這篇論文的作者包括我們熟悉的何愷明吳育昕,他們多次在一些研究中合作。此外還有與何愷明在 TensorMask 等論文中合作的 Ross Girshick。


論文地址:https://arxiv.org/pdf/1912.08193.pdf


這篇論文的具體方法和效果如何?機器之心對其進行了編譯整理。


引言


影像分割任務涉及到了將從規則的網格中取樣的畫素對映到同一網格上的(一個或一組)標籤圖(label map)。對於語義分割任務來說,標籤圖表示對每個畫素的預測類別。而在例項分割任務中,每個被檢測物件需要預測二元前景背景圖。這些任務所使用的方法基本上都是基於卷積神經網路(CNN)構建的。


用於影像分割任務的 CNN 通常基於規則網格執行:輸入的是影像畫素的規則網格,隱藏表徵則是基於規則網格的特徵向量,而輸出則是基於規則網格的標籤圖。規則網格很方便,但在計算方面對影像分割而言未必完美。這些網路預測的標籤圖應當是基本平滑的,即鄰近的畫素通常使用同一個標籤,因為高頻區域限制在物件之間的稀疏邊界。


規則網格可能對平滑區域過取樣,同時卻對物件邊界的欠取樣。這樣一來,在平滑區域進行過度計算,使得預測結果的輪廓變得模糊(見圖 1 左上)。這樣一來,影像分割方法通常基於低解析度規則網格來預測標籤,如在語義分割任務中輸入的 1/8,或例項分割中的 28×28,以此作為欠取樣和過取樣之間的妥協。

Ross、何愷明等人提出PointRend:渲染思路做影像分割,顯著提升Mask R-CNN效能

圖 1:使用 PointRend 執行例項分割和使用傳統方法的對比。傳統方法(左)分割的時候影像解析度低,分割效果差。


數十年來,計算機圖形學領域研究了很多類似的取樣問題。例如,渲染器將模型(如 3D 網格)對映到點陣影像,即畫素的規則網格。儘管輸出是基於規則網格的,但計算並不按照網格來均勻分配。常見的圖形學策略是,對影像平面中被自適應選擇點的不規則子集計算出畫素值。例如,[48] 中的典型細分(subdivision)技術獲得了類四叉樹取樣模式,從而高效渲染出抗鋸齒(anti-aliased,即邊緣柔化)的高解析度影像。


遵循類似的思路,何愷明等研究者在研究中將影像分割視為渲染問題,並利用計算機圖形學中的經典思想來高效地「渲染」高質量標籤圖(見圖 1 左下)。研究者將這種思想實現為一個新型神經網路模組——PointRend,該網路使用細分策略來自適應地選擇一組非均勻點,進而計算標籤。PointRend 可被納入到常用的例項分割元架構(如 Mask R-CNN [19])和語義分割元架構(如 FCN [35])。其細分策略利用比直接密集計算少一個數量級的浮點運算,高效地計算高解析度分割圖。


PointRend 是通用模組,允許多種可能實現。抽象來看,PointRend 模組接受一或多個典型 CNN 特徵圖 f(x_i , y_i) 作為輸入,這些特徵圖基於規則網格定義,輸出基於更細粒度網格的高解析度預測結果 p(x'_i , y'_i )。PointRend 不對輸出網格上的所有點執行過度預測,而是僅對精心選擇的點執行預測。為此,PointRend 對 f 執行內插,提取所選點的逐點特徵表示,使用一個小型 point head 子網路基於這些逐點特徵預測輸出標籤。本文將展示一種簡單高效的 PointRend 實現。


研究者在 COCO [29] 和 Cityscapes [9] 基準資料集上評估 PointRend 在例項分割和語義分割任務上的效能。定性來看,PointRend 能夠高效計算物件之間的清晰邊界,見圖 2 和圖 8。

Ross、何愷明等人提出PointRend:渲染思路做影像分割,顯著提升Mask R-CNN效能

圖 2:Mask R-CNN [19] + 標準掩碼頭的結果示例(左側影像)vs Mask R-CNN + PointRend 的結果示例(右側影像)。模型使用 ResNet-50 和 FPN。

Ross、何愷明等人提出PointRend:渲染思路做影像分割,顯著提升Mask R-CNN效能

圖 8:模型在 Cityscapes 樣本上的例項分割和語義分割結果。


研究者還觀察到定量級別的效能提升,儘管這些任務基於的標準 IoU 度量指標(mask AP 和 mIoU)會偏向於物件內部畫素,對邊界改進相對不那麼敏感。但是 PointRend 依然顯著提升了 Mask RCNN 和 DeepLabV3 [5] 的效能。


方法


研究者將計算機視覺中的影像分割類比為計算機圖形學中的影像渲染。所謂渲染,即是將模型(如 3D 網格)顯示為畫素的規則網格,即影像。儘管輸出表示為規則網格,但其底層物理實體(如 3D 模型)是連續的,使用物理和幾何推理(如光線追蹤)可在影像平面的任意真值點查詢其物理佔用(physical occupancy)等屬性。


類似地,在計算機視覺中,我們可以將影像分割看作底層連續實體的佔用圖,而分割輸出(預測標籤的規則網格)基於它的「渲染」得到。該實體被編碼為網路特徵圖,可以透過內插在任意點進行評估。訓練引數化函式,並基於這些內插點的特徵表示,進而預測佔用。而這些引數化函式即等同於計算機圖形學中的物理和幾何推理。


基於這種類比,研究者提出 PointRend(Pointbased Rendering,「基於點的渲染」),用點的表徵來解決影像分割問題。PointRend 模組接受一或多個包含 C 個通道的典型 CNN 特徵圖 f ∈ R^(C×H×W),每一個特徵圖都基於規則網格定義(其粗糙程度通常是影像網格的 4-16 倍),輸出預測結果共有 K 個類別標籤 p ∈ R^(K×H'×W'),輸出基於不同解析度(大機率解析度更高)的規則網格。


PointRend 模組包含三個主要元件:


1. 點選擇策略:選擇少量真值點執行預測,避免對高解析度輸出網格中的所有畫素進行過度計算;
2. 對選中的每個點提取逐點特徵表示:使用每個選中點在 f 規則網格上的 4 個最近鄰點,利用 f 的雙線性內插計算真值點的特徵。因此,該方法能夠利用 f 的通道維度中編碼的子畫素資訊,來預測比 f 解析度高的分割;
3. point head:一個小型神經網路,用於基於逐點特徵表示預測標籤,它獨立於每個點。


PointRend 架構可應用於例項分割(如 Mask R-CNN [19])和語義分割(如 FCN [35])任務。在例項分割任務中,PointRend 應用於每個區域,透過對一組選中點執行預測,以從粗糙到細粒度的方式計算掩碼(見圖 3)。在語義分割任務中,整個影像被看作一個區域,因而我們可以在不損失通用性的情況下,在例項分割語境中描述 PointRend。


下面我們來看 PointRend 三個主要元件的細節。

Ross、何愷明等人提出PointRend:渲染思路做影像分割,顯著提升Mask R-CNN效能

圖 3:PointRend 應用於例項分割任務。


選擇點來執行推斷和訓練


該方法的核心思想是靈活和自適應地在影像平面中選擇點,進而預測分割標籤。直觀來看,這些點的位置應該較稠密地鄰近高頻區域,如物件邊界,類似於光線追蹤中的抗鋸齒問題。研究者將這一想法應用於推斷和訓練。


推斷:用於推斷的點選擇策略受到計算機圖形學中自適應細分(adaptive subdivision)這一經典技術的啟發。該技術透過計算與其近鄰的值顯著不同的位置,來高效渲染高解析度影像(如透過光線追蹤);其他位置的值則透過內插已經計算好的輸出值來獲得(從粗糙網格開始)。


訓練:在訓練過程中,PointRend 還需要選擇點來構建訓練 point head 所需的逐點特徵。原則上,點選擇策略類似於推斷過程中使用的細分策略。但是,細分策略使用的順序步驟對於利用反向傳播訓練神經網路不那麼友好。因此,訓練過程使用基於隨機取樣的非迭代策略。


逐點表示和 Point Head


PointRend 透過結合細粒度和粗細度預測特徵這兩種特徵型別,來構建所選點的逐點特徵。


實驗:例項分割


表 1 對比了 PointRend 和 Mask R-CNN 中預設 4x 卷積 head 的效能。PointRend 在 COCO 和 Cityscapes 資料集上的效能均超過 Mask R-CNN 預設 head。

Ross、何愷明等人提出PointRend:渲染思路做影像分割,顯著提升Mask R-CNN效能

表 1:PointRend vs Mask R-CNN 預設 4×卷積掩碼 head 的效能對比。


細分推斷策略使用的浮點數和記憶體是預設 4×卷積 head 的 1/30 不到,但它讓 PointRend 能夠獲得高解析度預測結果(224×224),見下表 2。PointRend 忽略物件中粗粒度預測就已足夠的區域,從而在計算量大幅減少的情況下輸出與 Mask R-CNN 框架一樣的高解析度結果。

Ross、何愷明等人提出PointRend:渲染思路做影像分割,顯著提升Mask R-CNN效能

表 2:224×224 輸出解析度掩碼的浮點數(乘加)和啟用計數。


下表 3 展示了在不同輸出解析度和每個細分步驟不同選擇點數量的情況下,PointRend 的細分推斷效能。

Ross、何愷明等人提出PointRend:渲染思路做影像分割,顯著提升Mask R-CNN效能

表 3:細分推斷引數。


預測更高解析度的掩碼能夠改進結果。儘管 AP 飽和,但當輸出解析度從低到高(比如從 56×56 到 224×224)時,視覺上的提升仍然很明顯,參見圖 7。

Ross、何愷明等人提出PointRend:渲染思路做影像分割,顯著提升Mask R-CNN效能

圖 7:PointRend 的抗鋸齒效果。


表 4 展示了 PointRend 在訓練過程中使用不同點選擇策略時的效能。

Ross、何愷明等人提出PointRend:渲染思路做影像分割,顯著提升Mask R-CNN效能

表 4:訓練時不同點選擇策略的效能,每個邊界框中有 142 個點。


下表 5 展示了 PointRend 和基線的對比情況,PointRend 效能超過基線模型,且基線模型的訓練時間比 PointRend 長,模型規模也比 PointRend 大。

Ross、何愷明等人提出PointRend:渲染思路做影像分割,顯著提升Mask R-CNN效能

表 5:基線模型和 PointRend 效能對比。基線模型比 PointRend 大,且其訓練時間是 PointRend 的 3 倍。


實驗:語義分割


下表 6 展示了 DeepLabV3 和 DeeplabV3 + PointRend 的對比情況。

Ross、何愷明等人提出PointRend:渲染思路做影像分割,顯著提升Mask R-CNN效能

表 6:DeeplabV3 + PointRend 在 Cityscapes 語義分割任務上的效能超過基線 DeepLabV3。


在 res_4 階段使用空洞卷積可以將推斷時的輸出解析度提升二倍,參見 [5]。與之對比,PointRend 具備更高的 mIoU。定性提升也非常明顯,參見圖 8。

Ross、何愷明等人提出PointRend:渲染思路做影像分割,顯著提升Mask R-CNN效能

圖 8:模型在 Cityscapes 樣本上的例項分割和語義分割結果。


透過自適應地取樣點,PointRend 對 32k 個點執行預測,並達到了 1024×2048 的解析度(即 2M 點),參見圖 9。

Ross、何愷明等人提出PointRend:渲染思路做影像分割,顯著提升Mask R-CNN效能

圖 9:PointRend 在語義分割任務中的推斷。


下表 7 展示了,在 8 倍和 4 倍輸出步幅變化的情況下,SemanticFPN+PointRend 的效能較 SemanticFPN 有所提升。

Ross、何愷明等人提出PointRend:渲染思路做影像分割,顯著提升Mask R-CNN效能

表 7:在 Cityscapes 語義分割任務中,SemanticFPN+PointRend 的效能超過基線 SemanticFPN。

相關文章