允中 發自 凹非寺
量子位 報導 | 公眾號 QbitAI
目標檢測與例項分割是計算機視覺領域重要的兩個任務,近年來出現了非常多優秀的演算法解決這兩個問題,且都取得了優異的效果。
但是,卻鮮有文章深入分析兩者之間的關聯,也就導致了諸如下圖所示的錯誤的出現:
上面的結果由Mask R-CNN得到,可以看到由於邊界框定位不準導致前兩張圖的 例項掩碼缺失,以及後兩張圖的 邊界框與例項掩碼不統一。
最近,來自中科院自動化所的碩士生 王紹儒提出的演算法,很好地解決了以上問題,可以同時完成目標檢測與例項分割任務,兩個任務能相互輔助,同時取得了效能的提升。
論文一作王紹儒現在也是地平線公司的一名實習生,他的論文已被 AAAI 2020收錄,相關工作已經開源。
雙流網路
這篇文章認為,目標檢測屬於 目標級別的任務,這類任務更關注物體級別的特徵,對解析度的需求不高,但需要更多的高階語義資訊。
而例項分割任務屬於 畫素級別的任務,這類任務需要給出逐畫素的輸出,對解析度的需求較高,需要更多的細節資訊。
因此作者設計瞭如圖所示的雙流網路:
上面的object stream重點完成目標檢測任務,可以是SSD, YOLO, RetinaNet等任一anchor-based的目標檢測演算法。
下面的pixel stream重點完成分割的任務,解析度很高。
兩個任務相互輔助
“物體”輔助例項分割:
目前常見的例項分割演算法分為兩類,一類是類似於Mask R-CNN的proposal-based的方法,是目標檢測演算法的直接擴充套件。
但這類方法會面臨上文提到的諸多問題,得到的例項掩碼解析度相對較低且嚴重依賴於proposal的邊界框。
另一類基於分割演算法,首先預測每個點的嵌入,然後再通過聚類得到每個例項的掩碼。
這類方法天然克服了proposal-based的缺陷,但一般無法端到端訓練,且受限於聚類演算法,效能一般有限。
仔細分析發現,聚類的難題主要源於聚類中心的缺失,換句話說,如果我們擁有每個簇的中心,我們就可以拋棄聚類演算法,進行端到端訓練。
而這個“中心”,應該是每個物體的嵌入,也就是說,它應該源於目標級別,而非畫素級別。因此,也就形成了論文裡提出的基於相關濾波的例項掩碼生成演算法:
Object stream和pixel stream分別提取目標和畫素的嵌入,屬於同一物體的畫素和與其對應的物體具有相近的嵌入,相似性的衡量採用了內積相似度。
也就是說,對於每個檢測到的物體,以其嵌入作為核心,在畫素嵌入上執行相關濾波,即可得到這一物體的掩碼。
除此之外,文中還充分利用了object stream得到的目標邊界框,對距離物體中心較遠的噪聲進行了抑制,本質上是在一定程度上克服CNN的translation-variant對例項分割任務的影響。
“掩碼”輔助目標檢測:
邊界框定位是目標檢測的一項重要任務,而現有的方法大多采用迴歸的方式得到邊界框的位置。然而我們回顧邊界框的定義,發現它本身就是通過物體的掩碼定義的。
那麼,既然我們可以得到物體的掩碼,為什麼還要依賴於迴歸演算法,多此一舉呢?
文中通過實驗發現,直接利用通過上述基於相關濾波方法得到的例項掩碼生成邊界框,精度並不太高,甚至低於迴歸方法得到的邊界框。
文章作者通過視覺化發現:大多數物體的掩碼都可以提供十分準確的邊界框,然而也存在部分物體的掩碼預測結果不太理想,使得邊界框出現了較大的偏移。
據此觀察,文章提出了一種基於貝葉斯公式的邊界框定位演算法,首先將邊界框定位定義為分類任務,將問題轉化為給定物體掩碼,座標屬於邊界框的後驗概率的預測:
然後利用貝葉斯公式,將回歸得到的邊界框作為先驗概率P(X=i),而P(M’|X=i)則由物體例項掩碼通過逐列(行)取最大、一維卷積和啟用函式得到。
整體過程如下圖所示:
此方法綜合考慮了迴歸得到的邊界框和例項掩碼的優勢,得到了更準確的邊界框。具體結果可以看下圖,可以明顯發現,由此方法得到的邊界框可以以更高的IOU和ground truth box匹配。
實驗結果:
文章在COCO資料集上進行了實驗驗證。
在例項分割任務中,此方法在單階段演算法中可以達到更優的速度與精度的平衡,以近3倍的速度取得了和TensorMask相近的精度,以相近的速度在YOLACT的基礎上取得了2.3mAP的提升。
在目標檢測任務中,此方法以極低的計算代價在不同的backbone上取得了一致的效能提升。
值得注意的是,文章中採用的是RetinaNet作為探測器,且在其基礎上擴充套件到例項分割任務中並不會帶來顯著的計算量的增加,如果採用其他更先進的目標檢測演算法,其精度與速度還能取得更進一步的提升。
傳送門
論文地址:
https://arxiv.org/abs/1912.05070
原始碼:
https://github.com/wangsr126/RDSNet
— 完 —