SOLOv2论文简读
論文:SOLOv2: Dynamic, Faster and Stronger
代碼:https://github.com/WXinlong/SOLO
摘要
主要提出了作者在SOLOv2中實現(xiàn)的優(yōu)秀的實例分割方法,旨在創(chuàng)建一個簡單、直接、快速的實例分割框架:
介紹
SOLOv2首先引入了一個動態(tài)方案,它允許按位置動態(tài)分割對象。具體來說,mask learn 可以分為兩部分:convolution kernel learning 和 feature learning。
文章提出的Matrix NMS有很好的性能優(yōu)勢,文章表示Matrix NMS在準(zhǔn)確性和速度上均勝過現(xiàn)有的NMS和同類產(chǎn)品。
通過這些改進(jìn),SOLOv2的AP性能比SOLOv1高出1.9%,速度也提高了33%。
文章給出了在單個V100 GPU卡上的評估結(jié)果,在MS COCO數(shù)據(jù)集上,Res-50-FPN SOLOv2在18 FPS時可實現(xiàn)38.8%的mask AP。
Related Work
1、Dynamic Convolutions(動態(tài)卷積)
- 在傳統(tǒng)的卷積層中,學(xué)習(xí)到的卷積核是固定的,并且獨立于輸入。
- 空間變換網(wǎng)絡(luò)[Spatial Transform Networks]預(yù)測全局參數(shù)變換以扭曲特征圖,從而使網(wǎng)絡(luò)能夠自適應(yīng)地變換以輸入為條件的特征圖。
- 提出了動態(tài)濾波器[Dynamic filter]來主動預(yù)測卷積濾波器的參數(shù)。 它以特定于樣本的方式將動態(tài)生成的濾鏡應(yīng)用于圖像。
- 變形卷積網(wǎng)絡(luò)[Deformable Convolutional Networks]通過預(yù)測每個圖像位置的偏移量來動態(tài)學(xué)習(xí)采樣位置。
2、Non-Maximum Suppression
- Soft-NMS根據(jù)鄰居與較高得分的預(yù)測的重疊程度來降低其置信度得分。與傳統(tǒng)的NMS相比,檢測精度有所提高,但由于順序操作,推理速度較慢。
- Adaptive NMS將動態(tài)抑制閾值應(yīng)用于每個實例,該閾值是針對人群中的行人檢測量身定制的。
- Fast NMS能夠并行決定要保留的預(yù)測或丟棄的預(yù)測。但是它以性能下降為代價加快了速度。
- ++Matrix NMS同時解決了硬去除和順序操作的問題。在簡單的PyTorch實施中,Matrix NMS能夠在不到1 ms的時間內(nèi)處理500個掩模,并且比Fast NMS的效率高出0.4%。++
SOLOv1
SOLOv1框架的核心思想是按位置分割對象。將輸入圖片劃分為S X S的網(wǎng)格。如果一個對象的中心落在一個網(wǎng)格單元格中,該網(wǎng)格單元格負(fù)責(zé)預(yù)測語義類別以及分配每個像素的位置信息。主要包括兩個分支:category branch and mask branch。
- Category branch:預(yù)測語義類別,掩碼分支對對象實例進(jìn)行分段。具體地說,類分支輸出S×S×C形張量,其中C為對象類的個數(shù)。
- Mask branch
SOLOv2
1、Dynamic Instance Segmentation
SOLOv2 的網(wǎng)格,多層次的預(yù)測,coordConv和損失函數(shù)都是繼承于SOLOv1,提出了一套動態(tài)方案
動態(tài)方案:將原始的mask branch解耦為mask kernel branch以及mask feature branch,分別用于預(yù)測卷積核和卷積特征。
如圖2所示,在SOLOv1中,mask branch如2(a)所示,由于參數(shù)量較多,預(yù)測結(jié)果存在冗余信息,因此進(jìn)行解耦如圖2(b)所示,本文考慮到都是從預(yù)測結(jié)果層面出發(fā)。對此作者想到為什么不從卷積核角度出發(fā),由此得到2(c),上面為mask kernal分支,下面為mask特征分支。
2、Mask Kernel Branch
Mask kernel 分支位于prediction head內(nèi),與語義類別分支一起。prediction head 在 FPN 輸出的特征圖金字塔上工作。Head內(nèi)的兩分支由4個卷積組成用于特征提取,最后一個卷積用于預(yù)測。Head 的權(quán)重在不同的特征圖層級上共享。 作者通過給第一個卷積添加歸一化的坐標(biāo),即連接兩個附加的輸入通道,將空間功能添加到內(nèi)核分支。
對每個網(wǎng)格來說, kernel分支預(yù)測D維輸出來表示預(yù)測的卷積核權(quán)值,其中D為參數(shù)的數(shù)量。當(dāng)為了生成具有E個輸入通道的1 × 1卷積的權(quán)重,D = E,當(dāng) 3 × 3卷積D = 9E。這些生成的權(quán)重取決于位置,即網(wǎng)格單元。 如果將輸入圖像劃分為S × S 個網(wǎng)格,則輸出空間將為 S × S × D。注意到這里不需要激活函數(shù)。
這里輸入為 H × W × E的特征 F,其中 E是輸入特征的通道數(shù);輸出為卷積核 S × S × D,其中S是劃分的網(wǎng)格數(shù)目,D 是卷積核的通道數(shù)。對應(yīng)關(guān)系如下:1 × 1 × E 的卷積核,則 D = E ,3 × 3 × E的卷積核,則 D = 9E。
3、Mask Feature Branch
由于Mask Feature和Mask Kernel是解耦并分別預(yù)測的,因此有兩種構(gòu)造Mask Feature Branch的方法:
文中采用的是第二種方法。
作者采用了特征金字塔融合來學(xué)習(xí)統(tǒng)一的高分辨率掩碼特征表示。將FPN P2 至 P5層分別依次經(jīng)過 【3 × 3 conv,group norm,ReLU和 2x bilinear upsampling,這樣FPN特征P2至P5 被合并到了一個相同的輸出(原圖的1/4),然后再做逐點相加(element-wise summation),最后一層做【1x1卷積,group norm 和ReLU】操作。如圖3所示。應(yīng)該注意的是,在進(jìn)行卷積和雙線性上采樣之前,將歸一化的像素坐標(biāo)輸入到最深的FPN級別(以1/32比例)。 提供的準(zhǔn)確位置信息對于啟用位置敏感度和預(yù)測實例感知功能非常重要。
Forming Instance Mask
對于每個單元格(i,j),首先得到掩碼核
Gi,j,:∈RDG_{i,j,:} \in R^D Gi,j,:?∈RD
然后將G_{i,j}與F卷積得到實例掩碼。總的來說,每個預(yù)測級別最多有S^2掩碼。最后,使用Matrix NMS 得到最終的實例分割結(jié)果。
Learning and Inference
Loss 函數(shù)和 SOLOv1 一樣,如公式2所示:
L=Lcate+λLmaskL = L_{cate}+λL_{mask} L=Lcate?+λLmask?
Matrix NMS
其啟發(fā)自soft-NMS,soft-NMS 是每次選擇置信度最高的候選mask(或框)降低與其存在重疊的候選mask(或框)的置信度。這種過程像傳統(tǒng)的Greedy NMS一樣是順序的,無法并行實現(xiàn)。作者反其道而行之,既然是降低每個mask的置信度,那就想辦法按照一定規(guī)則對所有mask挨個降低置信度。
某一候選mj置信度被降低,和兩方面因素有關(guān):其衰減因子受以下因素影響:
- The penalty of each prediction mi on mj (si > sj) 各預(yù)測mi對mj (si > sj)的罰值;
- The probability of mi being suppressed. mi被抑制的概率
對第一個來說, 可以通f(ioui,j)f(iou_{i, j})f(ioui,j?)輕松計算mj上每個預(yù)測mi的懲罰值
第二個比較麻煩,概率通常與IoUs呈正相關(guān)。所以在這里作者直接用the most overlapped prediction on mi預(yù)測來近似概率:
為此,最終的衰變因子變成公式4:
更新后的分?jǐn)?shù)由 sj=sj?decayjs_j=s_j \cdot decay_jsj?=sj??decayj?計算得出
考慮兩個最簡單的遞減函數(shù),表示為線性函數(shù):
Gaussian:
Implementation
Matrix NMS的所有操作都可以一次性實現(xiàn),不需要遞歸。
為了使用,只需要threshing和選擇 top-k 得分掩碼作為最終的預(yù)測。
圖4顯示了Pytorch風(fēng)格的 Matrix NMS 偽代碼:
Experiments
Main Results
SOLOv2 Visualization
The outputs of mask feature branch.作者使用的模型具有64個輸出通道(即,在mask prediction之前的最后一層特征圖的通道 E = 64。
這里有兩種主要模式:首先,最重要的是,mask features是position-aware。它顯示了水平和垂直掃描圖像中對象的明顯行為。另一個明顯的模式是某些特征圖負(fù)責(zé)激活所有前景對象,例如在白框中的那個。
與Mask R-CNN分割結(jié)果的比較:
最終的輸出如圖8所示。不同的物體有不同的顏色,SOLOv2方法在不同的場景中顯示了良好的效果,值得指出的是,邊界處的細(xì)節(jié)被很好地分割,特別是對于大型對象。
Ablation Experiments
在表1中,將SOLOv2與MS COCO test-dev上最先進(jìn)的實例分割方法進(jìn)行了比較。
參考:http://blog.csdn.net/john_bh/
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的SOLOv2论文简读的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Gamma阶段第八次scrum meet
- 下一篇: MIP 技术进展月报:储存功能全新上线,