圖像語義分割是在圖像中識別問題對象及其類別的問題(如人和汽車)。它與目標檢測不同之處在於,輸出是表示每個對象的形狀的掩碼,而不僅僅是一個邊界框。
而它與語義分割的不同之處在於,研究目標不僅僅是使用標籤(或背景)對每個像素進行分類,而且還要區分同一類別的各個實例。因此,標籤空間是沒有大小限制的(例如,假設有兩個人和一輛車,可能會標記「人-1」,「人-2」和「車-1」)。
這個問題在諸如無人駕車、機器人、照片編輯等領域有許多實際應用。雷鋒網了解到,谷歌研究院近日與UCLA合作,提出了一種新的語義實例分割方法:首先計算兩個像素屬於同一對象的可能性,然後將相似的像素分組在一起。其中,相似性度量是基於深度,完全卷積的嵌入模型,而分組方法是基於選擇所有與一組「種籽點」足夠相似的點,這個選擇模型是一個深度的、完全卷積的評分模型。
據雷鋒網了解,這個問題的常見解決方法是:首先使用一些機制來預測對象的邊界框(例如,通過運行類別對象檢測器,或者通過使用類別不可知框方法,如EdgeBoxes),然後在每個提出的框中運行分割和分類。最近還出現了一種「無盒」方法,即嘗試直接預測每個對象的掩碼。然而,這種方法要求整個對象實例符合在進行預測的單元的接收域中。 這對於許多細長結構的,可能跨越圖像的像素來說是有些困難的。
谷歌及UCLA則採取了一種不同的方法,通過計算兩個像素屬於同一個對象實例的可能性,並使用這種可能性將相似像素分組在一起來實現實例分割。研究者明確了「正確」段是什麼,即整個對象的空間範圍。這避免了模稜兩可的情況諸如是否將對象(例如,人的襯衫和褲子)的部分視為單獨的片段,這種片段對無監督方法的評估是一種困擾。
團隊建議使用深度嵌入模型來學習相似性度量。 這類似於其他方法,例如FaceNet ,其學習了兩個邊界框屬於同一個實例(人)的可能性,除了學習如何預測像素的相似性,同時要考慮到它們原本的上下文。
谷歌及UCLA團隊使用計算(在嵌入空間中)到一組K「種籽點」的距離; 這可以用張量乘法實現。要找到這些種籽點,需要學習一個單獨的模型,預測一個像素做為好種籽的可能性; 我們稱之為每個像素的「種籽」得分。這類似於先前方法中使用的「中心」分數,除了不需要識別對象中心; 相反,種籽分數是在這種情況下相對於其他像素的「典型性」的度量。在實踐中只需要取得前100名種籽,就可以獲得對圖像中幾乎所有對象的良好覆蓋。
谷歌及UCLA團隊從預先訓練語義分割的模型開始,然後通過添加兩種不同類型的輸出「端」來修改它來執行實例分割。 第一個輸出端產生每個像素的嵌入矢量。理想情況下,類似的向量更可能屬於同一對象實例。 在第二個端,該模型預測了以每個像素為中心的掩碼的類別標籤,以及可以使該像素創造掩碼的良好的「種籽」的置信度分數。該團隊勾畫了圖1中的整體模型,並給出了下面的細節。
圖1:給定一個圖像,使用該模型預測每個像素(網絡的頂端)的嵌入矢量以及每個像素如果被選為種籽(網絡的底端)將產生的掩模的類別分數。從類別分數得出種籽分數,並使用它們來選擇圖像中的哪個種籽點進行抽樣。每個種籽點基於嵌入向量生成掩碼; 然後將每個掩碼與類別標籤和置信度得分相關聯。在這個圖中,粉紅色對應於「牛」類別,藍色對應於「背景」類別。
首先學習一個嵌入空間,使相對來說同一個對象實例的像素更相近,並且對應於不同對象(包括背景)的像素很遠。網絡的嵌入端將卷積特徵提取器的特徵圖作為輸入。 它輸出一個[h, w, d]張量(如下圖所示),其中h是圖像高度,w是圖像寬度,d是嵌入空間維度(該實驗中使用64維嵌入)。
給定嵌入向量,則可以計算像素p和q之間的相似度如下:
可以看到,對於在嵌入空間中接近的像素對,有σ(p, q)= 2/(1 + e0) = 1,對於在嵌入空間中的像素對,有σ(p, q) = 2/(1 + e∞) = 0。
通過最小化以下的損失來訓練網絡:
其中S是選定的像素集合,yp是像素p的實例標籤,ωpq是p和q之間相似性的損失的權重。權重ωpq被設置為與實例p和q所屬的大小成反比的值,所以損失不會偏向更大的示例。 通過歸一化權重,使Σp,q ωpq = 1。
在訓練中,可以通過對圖像中的每個對象實例隨機抽取K個點來選擇像素集S。 對於每對點,計算目標標籤,如果它們來自相同的實例,則為1,否則為0,如圖2所示。然後將|S|2集合點的橫斷面損失最小化。 整體程序與度量學習中[27]中使用的N對損失密切相關。
圖2:通過對每個實例中的K個像素的嵌入向量進行採樣來計算嵌入損耗,得到總共的NK嵌入向量,其中N是圖像中的實例數。然後計算每一對嵌入矢量σ(ep; eq)之間的相似度,如公式1。屬於同一個實例的一對嵌入向量的度量的返回相似度為1,屬於不同實例的一對嵌入向量,相似度則為0。因此,可以根據嵌入矢量是否屬於同一個實例,將地面實數值設置為0和1,為嵌入矢量之間的相似性增加了交叉熵損失
圖3說明了少量示例圖像的嵌入學習。 隨機地將64d向量投影到RGB空間,然後可以看到生成的假彩色圖像。可以看到,根據需要,相同類的實例(例如,兩個人或兩個摩託車)被映射到嵌入空間的不同部分。
一旦有了一個嵌入空間,並因此有一個成對的相似性度量,可以以下列方式創建一組掩碼。選擇「種籽」像素p,然後通過找到與p有相似度並且大於閾值τ的所有其他像素q來「種植」種籽:m(p, τ) = {q: σ (p,q)≥ τ}。理想中,掩碼中的所有像素屬於與種子p相同的對象。通過改變τ,可以檢測不同大小的對象。 在試驗中使用τ∈{0.25, 0.5, 0.75} .(還使用圖像的多種尺寸表示作為輸入)
有效的實現方法如下。 首先,計算一個大小為[h, w, d]的張量A(其中h是圖像的高度,w是寬度,d是嵌入維數),表示每個像素的嵌入矢量。 接下來,計算張量B[k, d],表示K個種籽點的嵌入向量。可以計算A中每個向量到B中每個向量的距離,使用 A2+ B2-2A⊙B。然後,可以通過對該距離矩陣進行閾值來選擇與每個種籽足夠相似的所有像素。
圖4:可視化每個像素的相似度和每個圖像中隨機選擇的種籽像素。隨機選擇的種籽像素由圖像中的紅色標記顯示。每個像素和種籽像素之間的相似度是基於公式 1並顯示在每張圖片中。 可以對相似度值進行閾值生成二進位掩碼。像素越亮,相似度越高
圖5:採樣種籽像素的可視化。該團隊的方法將利用考察的距離度量和掩碼分類分數來採樣高質量的種籽像素,
因此具有高回調和精度的實例段
但是仍然需要一種選擇種籽的機制。 谷歌團隊建議學習一個「種籽」熱圖Sp,它可以展示,從p生長的掩模將是一個好掩碼(一個與一些地面真值掩碼重疊多於IoU閾值)的可能性。 下面將討論如何計算種籽分數。
一旦有了種籽熱圖,則可以根據其模式(峰值)挑選種籽點。 不過,谷歌及UCLA團隊希望被選擇的種籽點具有空間多樣性,以確保對正確的掩碼集有較高的覆蓋。
因此,還需要計算每個點和所有先前選擇的點之間的距離(在嵌入空間中),並選擇一個遠離已經選擇的點的點(類似於由Kmeans ++初始化使用的啟發式[1])。 更準確地說,在算法的步驟t中,被選擇種籽點如下:
其中
選擇具有高種籽分數的種籽像素可以保證高精度,並且選擇多樣的種籽點還可以保證高召回。 請注意,採樣的策略與非最大抑制算法不同。在NMS中,在x-y圖像坐標空間附近的點被抑制,而在該算法中鼓勵嵌入空間的多樣性。
一旦選擇了一個種籽,將選擇最合適的閾值τ,然後可以將它轉換成掩碼,mt = m(pt, τ),如上所述。 最後,將一個置信區間st和一個類標籤ct附加到掩碼。 為此,谷歌及UCLA團隊利用語義分割模型將預測的類標籤與每個像素相關聯。
網絡的掩碼分類端從卷積特徵提取器輸入一個特徵圖,並輸出一個[h, w, C+1]張量,如圖1所示。其中C是類別的數量,標籤0表示背景。與語義分割相反,像素本身被分類,在這裡,如果被選擇為種籽,將對每個像素生成的掩碼進行分類。 例如,假設像素落在一個實例為馬中。語義分割將在該像素上產生「馬」類別的高分。 然而,如果給定像素不是一個好的生成馬掩碼的種籽點,則該方法可能會反過來預測背景。下面圖6展示出了掩碼分類熱圖。 可以看到,物體內的大部分像素都是良好的種籽,但邊界附近的像素(例如,牛的腿部)並不是那麼好。
圖6:掩碼分類評分的可視化。每個被選作種籽點的像素處的顏色標識可以識別掩碼的標籤。更有可能生成背景掩碼的像素為白色。較深的顏色對應於將產生質量差的前景掩碼的像素。較亮的顏色對應於產生高質量掩碼的像素
訓練模型來模擬下面這種行為。 對於每個圖像,為每個對象實例選擇K = 10個隨機點,並在每個圖像周圍增加一個掩碼。對於給定的相似性閾值τ,令m(p, τ)為從像素p生成的掩碼。 如果提出的掩碼與一個地面真相掩模重疊超過一些固定的IoU閾值,則認為這是一個「好的」提案; 然後,從地面真值掩碼中複製標籤並將其分配給像素p。如果生成的掩碼與任何地面真相掩模沒有充分重疊,則認為這是一個「壞」提案,並將背景標籤分配給像素p。然後,將分配的標籤轉換為單熱形式,並每個對象實例的每個K個選擇點使用softmax交叉熵損失訓練。 分類模型是完全卷積的,但只需要評估NK點的損失,其中N是實例的數量。 因此,最後整體損失函數有如下:
其中Cpc是從種籽像素p生成的掩碼屬於類c的概率。
為了處理不同大小的對象,為每個值的τ訓練使用不同的類別分類模型; 在該實驗中,谷歌及UCLA團隊使用τ= {0.25,0.5,0.75,0.9}。 具體來說,令Cτpc表示當使用相似度閾值τ時,像素p是實例類別c的良好種子的概率。
像素p的「隨機性」定義如下:
(請注意,max是基於對象類別上計算的,而不是在背景類別上計算)。因此可以得出,種籽張量是從分類張量計算出來的。
為了理解為什麼這是合理的,假設像素p處的背景分數非常高,如0.95。 然後將最大值與Cpc的和對約束進行比較,這意味著這不是生成掩碼的有效像素。 但是如果最大值是0.6,這意味著這是一個很好的種子像素,因為它將成長為概率為0.6的前景類的一個實例。
一旦根據Sp選擇了最好的種籽,則可以找到相應的最佳閾值 ,並通過計算標記c。
相應的置信度分數為
谷歌及UCLA團隊對COCO的語義分割進行預先訓練,這是標準的與PASCAL VOC進行競爭的方法,然後「切斷」最後一層。Deeplab v2模型是完全卷積的,它在大小為[2h, 2w, 3]的圖運行輸出一個[h/4, w/4, 2048]的尺寸特徵圖,它的輸入是嵌入模型和分類/種子模型。
可以通過定義損失來共同訓練兩個產出的「端」,並將其反饋到共享的「體」
其中Le是嵌入損失,Lcl是分類損失,λ是平衡係數。在該實驗中,最初將λ設置為0,給嵌入模型時間學習正確的嵌入。 一旦有一個合理的相似性度量,就可以開始學習掩碼分類損失了。然後逐漸將λ增加到最大值0.2(這是根據驗證集的經驗選擇)。 這兩個損失都被反向傳播到同一個特徵提取器中。然而,由於對Pascal VOC進行訓練,而Pascal VOC是一個小數據集,所以將共享特徵的學習速度設置為小於兩個輸出端的學習速度,所以原始特徵(在COCO上學習)並沒有太大變化。
為了處理多個尺度的對象,可以計算4個尺度(0.25, 0.5, 1.0, 2.0)的圖像金字塔,然後通過特徵提取器運行。然後再將這些特徵圖重新縮放到相同的大小,並進行平均。最後,如上所述,將結果饋送到兩個不同的端。
實驗結果
該團隊使用PASCAL VOC 2012培訓課程進行了培訓,並對PASCAL VOC 2012驗證集進行了評估。
在訓練模型之後,根據所有測試數據計算每個類別的精確回憶曲線。這需要一個真實和虛假的定義。該團隊遵循標準實驗,並且一個預測的掩碼需要與IoU有交集並且在一個閾值β(例如50%)之上才是真正的正,除非已經檢測到真實掩碼,在這種情況下,檢測是虛假的正。
提供三個IoU{0.5, 0.6, 0.7}閾值的結果,這與之前的工作類似。然後,計算PR曲線下的面積,稱為「平均精度」或APτ分數 [9].。最後,平均這個類別以獲得平均精度或分數。
還可以將該方法的質量評估為「不可知類別」區域提案生成器。在這種情況下,主要有兩種衡量質量的方法。第一個是繪製召回(在固定的IoU)與建議數量。第二個是為固定數量的提案繪製召回率與IoU閾值,該曲線下方的區域稱為「平均召回」或AR 。
訓練期間使用以下數據增強組件:
隨機旋轉:將以在[-10, 10]範圍內以任意角度旋轉訓練圖像。
隨機調整大小:在訓練階段按照任意比例調整輸入圖像的大小,取值範圍為[0.7, 1.5]。
隨機裁剪:在訓練階段隨機裁剪圖像。在每一步,隨機裁剪100個窗口。隨機地將一幅圖像加權到具有更多對象實例的裁剪窗口。
隨機翻轉:隨機水平地翻轉訓練圖像。
谷歌及UCLA團隊首先嘗試了不同的α值(當選擇下一個種籽時,它會隨著種籽的多樣性而變化)以找到最佳的種籽採樣策略。表2展示出不同α值的結果。該團隊還嘗試了從2到256的各種大小的嵌入,64是最好的(在驗證集中)。進一步分析表3中不同數量的掩碼提案(採樣種籽點數)的模型的性能。只有當提出10個地區時,該模型達到了59.7的mAPτ性能。在表3中,還顯示不同數量的掩碼提案的類別不可知平均召回。
圖7顯示了一些定性結果,表1顯示了定量結果。在性能方面,該實驗結果在0.5 IoU閾值排名第四,在0.6 IoU閾值排名第二,在0.7 IoU閾值排名第三。所以谷歌團隊的方法即使不是最先進的技術但也是很有競爭力的。
關於個別類別的表現,可以看到在大型物品(如火車,狗和摩託車)上表現非常出色,但是在自行車類別方面做得很差。 (有些例子見圖6)其他方法也是如此。
谷歌及UCLA團隊提出了一種新的語義實例分割問題的方法,並在PASCAL VOC數據集上獲得了有希望的初步結果。將來,該團隊想評估在COCO和Cityscapes上的方法。同時該團隊還想設計一種以可微的方式進行區域增長的方法,以便能夠進行端到端的培訓。
圖7:實例分割結果示例
表1:在PASCAL VOC 2012驗證集上,每個類別實例級分割比較使用度量超過20類別,分別為0.5,0.6和0.7 IoU。所有數字均為百分比
表2:採樣種籽點的最佳性能參數為0.3。該表比較了不同α值的mAPτ性能
表3:用給定的數量的採樣種籽點分析模型的性能
via arxiv,雷鋒網(公眾號:雷鋒網)
雷鋒網版權文章,未經授權禁止轉載。詳情見轉載須知。