SOLOv2論文簡讀

論文:SOLOv2: Dynamic, Faster and Stronger
代碼:https://github.com/WXinlong/SOLO

摘要

主要提出了作者在SOLOv2中實現的優秀的實例分割方法,旨在創建一個簡單、直接、快速的實例分割框架:

  1. 通過提出動態學習對象分割器的mask head,使mask head依賴于位置。具體來說,將mask branch分解為mask kernel branch和mask feature branch,分別負責學習卷積核和卷積特征 – mask learning
  2. 提出Matrix NMS顯著減少了由于mask的NMS導致的推斷時間開銷。 – Matrix NMS
  3. SOLOv2 可以用于目標檢測和全景分割

介紹

SOLOv2首先引入了一個動態方案,它允許按位置動態分割對象。具體來說,mask learn 可以分為兩部分:convolution kernel learning 和 feature learning。

文章提出的Matrix NMS有很好的性能優勢,文章表示Matrix NMS在準確性和速度上均勝過現有的NMS和同類產品。

通過這些改進,SOLOv2的AP性能比SOLOv1高出1.9%,速度也提高了33%。
文章給出了在單個V100 GPU卡上的評估結果,在MS COCO數據集上,Res-50-FPN SOLOv2在18 FPS時可實現38.8%的mask AP。

Related Work

1、Dynamic Convolutions(動態卷積)

  • 在傳統的卷積層中,學習到的卷積核是固定的,并且獨立于輸入。
  • 空間變換網絡[Spatial Transform Networks]預測全局參數變換以扭曲特征圖,從而使網絡能夠自適應地變換以輸入為條件的特征圖。
  • 提出了動態濾波器[Dynamic filter]來主動預測卷積濾波器的參數。 它以特定于樣本的方式將動態生成的濾鏡應用于圖像。
  • 變形卷積網絡[Deformable Convolutional Networks]通過預測每個圖像位置的偏移量來動態學習采樣位置。

2、Non-Maximum Suppression

  • Soft-NMS根據鄰居與較高得分的預測的重疊程度來降低其置信度得分。與傳統的NMS相比,檢測精度有所提高,但由于順序操作,推理速度較慢。
  • Adaptive NMS將動態抑制閾值應用于每個實例,該閾值是針對人群中的行人檢測量身定制的。
  • Fast NMS能夠并行決定要保留的預測或丟棄的預測。但是它以性能下降為代價加快了速度。
  • ++Matrix NMS同時解決了硬去除和順序操作的問題。在簡單的PyTorch實施中,Matrix NMS能夠在不到1 ms的時間內處理500個掩模,并且比Fast NMS的效率高出0.4%。++

SOLOv1

SOLOv1框架的核心思想是按位置分割對象。將輸入圖片劃分為S X S的網格。如果一個對象的中心落在一個網格單元格中,該網格單元格負責預測語義類別以及分配每個像素的位置信息。主要包括兩個分支:category branch and mask branch。

  • Category branch:預測語義類別,掩碼分支對對象實例進行分段。具體地說,類分支輸出S×S×C形張量,其中C為對象類的個數。
  • Mask branch

SOLOv2

1、Dynamic Instance Segmentation

SOLOv2 的網格,多層次的預測,coordConv和損失函數都是繼承于SOLOv1,提出了一套動態方案
動態方案:將原始的mask branch解耦為mask kernel branch以及mask feature branch,分別用于預測卷積核和卷積特征。

image

如圖2所示,在SOLOv1中,mask branch如2(a)所示,由于參數量較多,預測結果存在冗余信息,因此進行解耦如圖2(b)所示,本文考慮到都是從預測結果層面出發。對此作者想到為什么不從卷積核角度出發,由此得到2(c),上面為mask kernal分支,下面為mask特征分支。

2、Mask Kernel Branch

Mask kernel 分支位于prediction head內,與語義類別分支一起。prediction head 在 FPN 輸出的特征圖金字塔上工作。Head內的兩分支由4個卷積組成用于特征提取,最后一個卷積用于預測。Head 的權重在不同的特征圖層級上共享。 作者通過給第一個卷積添加歸一化的坐標,即連接兩個附加的輸入通道,將空間功能添加到內核分支。
對每個網格來說, kernel分支預測D維輸出來表示預測的卷積核權值,其中D為參數的數量。當為了生成具有E個輸入通道的1 × 1卷積的權重,D = E,當 3 × 3卷積D = 9E。這些生成的權重取決于位置,即網格單元。 如果將輸入圖像劃分為S × S 個網格,則輸出空間將為 S × S × D。注意到這里不需要激活函數。
這里輸入為 H × W × E的特征 F,其中 E是輸入特征的通道數;輸出為卷積核 S × S × D,其中S是劃分的網格數目,D 是卷積核的通道數。對應關系如下:1 × 1 × E 的卷積核,則 D = E ,3 × 3 × E的卷積核,則 D = 9E。

3、Mask Feature Branch

由于Mask Feature和Mask Kernel是解耦并分別預測的,因此有兩種構造Mask Feature Branch的方法:

  1. predict the mask features for each FPN levels:可以把它和Kernel分支一起放到head中,這意味著我們可以預測每個FPN級別的掩碼特征
  2. predict a unified mask feature representation for all FPN levels:為所有FPN級別預測一個統一的掩碼特征表示

文中采用的是第二種方法。

作者采用了特征金字塔融合來學習統一的高分辨率掩碼特征表示。將FPN P2 至 P5層分別依次經過 【3 × 3 conv,group norm,ReLU和 2x bilinear upsampling,這樣FPN特征P2至P5 被合并到了一個相同的輸出(原圖的1/4),然后再做逐點相加(element-wise summation),最后一層做【1x1卷積,group norm 和ReLU】操作。如圖3所示。應該注意的是,在進行卷積和雙線性上采樣之前,將歸一化的像素坐標輸入到最深的FPN級別(以1/32比例)。 提供的準確位置信息對于啟用位置敏感度和預測實例感知功能非常重要。
image

Forming Instance Mask

對于每個單元格(i,j),首先得到掩碼核
Gi,j,:∈RDG_{i,j,:} \in R^D Gi,j,:?RD
然后將G_{i,j}與F卷積得到實例掩碼。總的來說,每個預測級別最多有S^2掩碼。最后,使用Matrix NMS 得到最終的實例分割結果。

Learning and Inference

Loss 函數和 SOLOv1 一樣,如公式2所示:

L=Lcate+λLmaskL = L_{cate}+λL_{mask} L=Lcate?+λLmask?

Matrix NMS

其啟發自soft-NMS,soft-NMS 是每次選擇置信度最高的候選mask(或框)降低與其存在重疊的候選mask(或框)的置信度。這種過程像傳統的Greedy NMS一樣是順序的,無法并行實現。作者反其道而行之,既然是降低每個mask的置信度,那就想辦法按照一定規則對所有mask挨個降低置信度。

某一候選mj置信度被降低,和兩方面因素有關:其衰減因子受以下因素影響:

  • The penalty of each prediction mi on mj (si > sj) 各預測mi對mj (si > sj)的罰值;
  • The probability of mi being suppressed. mi被抑制的概率

對第一個來說, 可以通f(ioui,j)f(iou_{i, j})f(ioui,j?)輕松計算mj上每個預測mi的懲罰值

第二個比較麻煩,概率通常與IoUs呈正相關。所以在這里作者直接用the most overlapped prediction on mi預測來近似概率:
image

為此,最終的衰變因子變成公式4:

image

更新后的分數由 sj=sj?decayjs_j=s_j \cdot decay_jsj?=sj??decayj?計算得出
考慮兩個最簡單的遞減函數,表示為線性函數:
image

Gaussian:
image

Implementation

Matrix NMS的所有操作都可以一次性實現,不需要遞歸。

  1. 對按分數降序排列的前N個預值計算一個N×N的兩兩IoU矩陣。對于二進制掩碼,IoU矩陣可以通過矩陣運算有效地實現;
  2. 計算得到了IoU矩陣上的最大列數重疊的IoU;
  3. 計算所有較高得分預測的衰減因子,通過逐列最小值選取各預測的衰減因子作為最有效的衰減因子(Eqn. (4));
  4. 最后,通過衰減因子對分數進行更新。

為了使用,只需要threshing和選擇 top-k 得分掩碼作為最終的預測。

圖4顯示了Pytorch風格的 Matrix NMS 偽代碼:
image

Experiments

Main Results

image

SOLOv2 Visualization

The outputs of mask feature branch.作者使用的模型具有64個輸出通道(即,在mask prediction之前的最后一層特征圖的通道 E = 64。
這里有兩種主要模式:首先,最重要的是,mask features是position-aware。它顯示了水平和垂直掃描圖像中對象的明顯行為。另一個明顯的模式是某些特征圖負責激活所有前景對象,例如在白框中的那個。
image

與Mask R-CNN分割結果的比較:

image

最終的輸出如圖8所示。不同的物體有不同的顏色,SOLOv2方法在不同的場景中顯示了良好的效果,值得指出的是,邊界處的細節被很好地分割,特別是對于大型對象。
image

Ablation Experiments

在表1中,將SOLOv2與MS COCO test-dev上最先進的實例分割方法進行了比較。

image

參考:http://blog.csdn.net/john_bh/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/536100.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536100.shtml
英文地址,請注明出處:http://en.pswp.cn/news/536100.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Angular6_PWA

Angular6_PWA Angular正式發布了V6.0,我們已經可以利用對應的@angular/cli V6.0來直接開發PWA應用了。 第一步:安裝@angular/cli V6.0 如果你機器上有老版本,請先卸載。 打開你的終端,執行: npm install -g @angular/cli 或 cnpm install -g @angular/cli 安裝成功…

Ubuntu18.04 關于使用vnc的踩坑

由于種種原因,手上多了一臺可使用的桌面版Ubuntu,正好用來測試代碼,方便調試。因為只能遠程,所以需要配置遠程連接。因此就打算使用vnc進行遠程連接,誰料一路坎坷,特此記錄。 安裝 設置桌面共享 需要注意…

App_Shell模型

App_Shell模型 App Shell 架構是構建 Progressive Web App 的一種方式,這種應用能可靠且即時地加載到您的用戶屏幕上,與本機應用相似。 App shell是支持用戶界面所需的最小的 HTML、CSS 和 JavaScript,如果離線緩存,可確保在用戶重復訪問時提供即時、可靠的良好性能。這意…

Angular6_服務端渲染SSR

Angular6_服務端渲染 在使用服務端渲染之前,需要安裝最新版本的Angular。 npm install -g @angular/cli 或 cnpm install -g @angular/cli github項目 創建項目 ng new PWCat --routing 為項目添加universalng g universal --client-project=PWCat 或

Jenkins自定義主題教程

Jenkins自定義主題 由于Jenkins自帶的樣式比較丑陋,所以有很多第三方的樣式庫,這里針對jenkins-material-theme樣式庫做一個安裝教程。 下載樣式庫 下載連接 Select your color 選擇一個你喜歡的主題顏色。Choose your company logo 上傳你自定義的…

IndexedDB_Web 離線數據庫

IndexedDB_Web 離線數據庫 本文會從頭剖析一下 IndexedDB 在前端里面的應用的發展。 indexedDB 目前在前端慢慢得到普及和應用。它正朝著前端離線數據庫技術的步伐前進。以前一開始是 manifest、localStorage、cookie 再到 webSQL,現在 indexedDB 逐漸被各大瀏覽器認…

Angular 單元測試講解

Angular_單元測試 測試分類 按開發階段劃分按是否運行劃分按是否查看源代碼劃分其他ATDD,TDD,BDD,DDD ATDDTDDBDDDDDAngular單元測試 Karma的介紹jasmine介紹單元測試的好處使用jasmine和karma創建一個Angular項目Karma配置Test.ts文件測試體驗測試Form測試服務service常用斷言…

基于 Docker 的微服務架構

基于 Docker 的微服務架構-分布式企業級實踐前言Microservice 和 Docker服務發現模式客戶端發現模式Netflix-Eureka 服務端發現模式ConsulEtcdZookeeper 服務注冊自注冊模式 Self-registration pattern第三方注冊模式 Third party registration pattern小結一 服務間的 IPC 機制…

funcode游戲實訓,java及C/C++,網上整理

軟件,常見錯誤都有。 所有資源可到公眾號獲取(源碼也是),不再直接分享

Docker 容器部署 Consul 集群

Docker 容器部署 Consul 集群 Consul 介紹 Consul 提供了分布式系統的服務發現和配置的解決方案。基于go語言實現。并且在git上開放了源碼consul-git。consul還包括了分布式一致協議的實現,健康檢查和管理UI。Consul和zk相比較起來,更加輕量級&#xf…

swing皮膚包 substance

分享一下swing皮膚包substance 資源可到公眾號獲取

基于Android的聊天軟件,Socket即時通信,實現用戶在線聊天

基于Android的聊天軟件,Socket即時通信,單聊,聊天室,可自行擴展功能,完善細節。 【實例功能】 1.運行程序,登錄界面, 注冊賬號功能 2.進入主界面,有通訊錄, 個人信息。 3.點擊好友會話框&#…

用Docker搭建Elasticsearch集群

用Docker搭建Elasticsearch集群 對于用Docker搭建分布式Elasticsearhc集群的一個介紹,以及一些實施中遇到問題的總結 搜索服務簡述 結合業務的場景,在目前的商品體系需要構建搜索服務,主要是為了提供用戶更豐富的檢索場景以及高速&#xf…

Go實現簡單的RESTful_API

Go實現簡單的RESTful_API 何為RESTful API A RESTful API is an application program interface (API) that uses HTTP requests to GET, PUT, POST and DELETE data. A RESTful API – also referred to as a RESTful web service – is based on representational state t…

Docker使用Dockerfile構建簡單鏡像

Docker使用Dockerfile構建簡單鏡像 首先確保系統已經安裝docker 構建鏡像 安裝基礎鏡像 sudo docker pull ubuntu 查看鏡像是否已經拉取成功 REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu …

Weave Scope安裝

Weave Scope安裝 首先確保已經安裝docker 實時了解Docker容器狀態 查看容器基礎設施的概況,或者專注于一個特殊的微服務。從而輕松發現并糾正問題,確保你的容器化應用的穩定與性能。 內部細節與深度鏈接 查看容器的指標、標簽和元數據。 在一個可擴展…

MYSQL導入數據出現ERROR 1049 (42000): Unknown database 'n??;'

MYSQL導入數據出現ERROR 1049 (42000): Unknown database ‘n??;’ 背景 我需要將一個csv表中的數據導入數據庫創建好的表中,產生的問題如下: 原因尋找 因為我并沒有使用’n??;的數據庫,所以很好奇這個錯怎么來的,嘗試如下…

Win10忘記ubuntu子系統密碼

Win10忘記ubuntu子系統密碼 目前新版win10已經支持ubuntu子系統,如果忘記子系統密碼怎么辦? linux單用戶模式 在ubuntu中如果忘記密碼,可以在啟動的時候,在grub內更改用戶為root進入,這樣就可以使用最高權限的單用戶…

藍橋杯練習系統,入門訓練,Java版

藍橋杯練習系統,入門訓練,Java版序列求和圓的面積Fibonacci數列希望大家提建議我加以修改序列求和 import java.util.*; public class Main {public static void main(String[] args) {Scanner cinnew Scanner(System.in);long ncin.nextLong();System.…

SVG入門理解

SVG入門SVG 元素簡單的形狀rectcircleellipselinetextpath SVG 樣式分層和繪圖順序透明度 SVG入門 當我們用SVG生成和操作一些炫酷的效果時,D3是最佳選擇。使用div和其他原生HTML元素繪圖也是可以的,但是太笨重,而且會受到不同瀏覽器的限制&#xff0c…