CVPR:零樣本通用分割框架
本文經計算機視覺研究院公眾號授權轉載,轉載請聯系出處。
論文地址:https://arxiv.org/pdf/2306.11087.pdf
01 概要簡介
這種零樣本分割能力依賴于語義空間中的類間關系,將從可見類別中學習到的視覺知識轉移到不可見類別中。因此,希望很好地橋接語義視覺空間,并將語義關系應用于視覺特征學習。
研究者引入了一個生成模型來合成不可見類別的特征,該模型連接了語義和視覺空間,并解決了缺乏不可見訓練數據的問題。此外,為了緩解語義空間和視覺空間之間的領域差距。首先,通過學習primitives增強vanilla generator,每個都包含與類別相關的細粒度屬性,并通過選擇性地組裝這些指令來合成看不見的特征。其次,提出將視覺特征分為語義相關部分和語義無關部分,語義相關部分包含有用的視覺分類線索,但與語義表示不太相關。然后,與語義相關的視覺特征的類間關系需要與語義空間中的那些類間關系對齊,從而將語義知識轉移到視覺特征學習中。該方法在零樣本全景分割、姿態分割和語義分割方面取得了令人印象深刻的先進性能。
02 背景分析
圖像分割旨在將具有不同語義的像素分組,例如類別或實例。深度學習方法憑借CNNs和Transformer強大的學習能力,極大地提高了圖像分割的性能。然而,由于深度學習方法是數據驅動的,對大規模標記訓練樣本的強烈需求帶來了巨大的挑戰,這是勞動密集型和耗時的。為了解決這個問題,提出了零樣本學習(ZSL)來對無訓練樣本的新對象進行分類。最近,ZSL被擴展到零樣本語義分割(ZSS)和零樣本實例分割(ZSI)等分割任務。在此,研究者進一步介紹了零樣本全景分割(ZSP),旨在借助語義知識構建一個通用的零樣本全景/語義/實例分割框架,如下圖所示。
然而,目前基于生成模型的方法通常是以每像素級生成的形式,在更復雜的場景中不夠魯棒。最近,一些工作提出將分割解耦為類不可知的掩碼預測和對象級分類。研究者遵循這一策略,并將像素級生成退化為更穩健的對象級生成。
此外,先前的生成作品通常學習從語義嵌入到視覺特征的直接映射。這樣的生成器沒有考慮特征粒度的視覺語義差距,即圖像包含比語言豐富得多的信息。從粗粒度信息到細粒度信息的直接映射導致低質量的合成特征。為了解決這個問題,研究者提出利用具有非常細粒度語義屬性的豐富原語來組成視覺表示。這些指令的不同集合構造不同的類表示,其中集合由指令和語義嵌入之間的相關性決定。極大地增強了生成器的表達多樣性和有效性,特別是在豐富的細粒度屬性方面,使不同類別的合成特征更加可靠和具有鑒別性。
03 新框架介紹
下圖說明了提出的方法的總體架構,具有協作關系對齊和特征去糾纏學習(PADing)的原始生成。主干預測了一組類不可知掩碼及其相應的類嵌入。Primitive生成器被訓練為從語義嵌入中合成類嵌入。真實的和合成的類嵌入被分解為語義相關和語義無關的特征。對語義相關特征進行關系對齊學習。使用合成的不可見類嵌入,用可見類別的真實類嵌入和不可見類別的合成類嵌入來重新訓練分類器。訓練過程在下算法1中進行了演示。
- 算法1
Primitive Cross-Modal Generation
由于缺乏看不見的樣本,分類器無法使用看不見類的特征進行優化。因此,在可見類上訓練的分類器傾向于為所有對象/材料分配可見組的標簽,這被稱為偏差問題。為了解決這個問題,以前的方法提出利用生成模型來合成看不見類的虛假視覺特征。然而,以往的零樣本分割工作通常采用生成矩匹配網絡(Generative Moment Matching Network,GMMN)或GAN,它們由多個線性層組成,作為特征生成器。
這樣的生成器雖然取得了良好的性能,但沒有考慮特征粒度的視覺語義差異。眾所周知,圖像通常比語言包含更豐富的信息。視覺信息提供對象的細粒度屬性,而文本信息通常提供抽象和高級屬性。這種差異導致視覺特征和語義特征之間的不一致。為了應對這一挑戰,提出了一種Primitive Cross Modal Generator,該生成器使用大量可學習的Primitiv屬性來構建視覺表示。
如上圖所示,使用Transformer架構構建Primitive Generator。
Semantic-Visual Relationship Alignment
眾所周知,類別之間的關系自然是不同的。例如,有三個對象:蘋果、橙子和奶牛。顯然,蘋果和桔子的關系比蘋果和奶牛的關系更密切。語義空間中的類關系是強大的先驗知識,而特定于類別的特征生成并沒有明確地利用這些關系。如下圖所示,用語義嵌入建立了這樣的關系,并探索將這些知識轉移到視覺空間,根據類關系進行語義視覺對齊。通過考慮這種關系,對看不見的類別的特征生成有更多的限制,以拉或推他們與看到的類別的距離。
04 實驗及分析
為了驗證新提出方法的有效性,在COCO數據上針對全景分割、實例分割、語義分割上進行了對比實驗,見表1、2、3。實驗結果表明,本文方法PADing取得先進的性能。
Installation:
The code is tested under CUDA 11.2, Pytorch 1.9.0 and Detectron2 0.6.
- Install Detectron2 following the manual
- Run
sh make.sh
underPADing/modeling/pixel_decoder/ops
(Note: 1-2 steps you can also follow the installation process of Mask2Former) - Install other required packages:
pip install -r requirements.txt
- Prepare the dataset following
datasets/README.md
Training
Firstly, download the pretrained weights here or you can train vanilla mask2former backbone using seen classes and convert it using the following command:
python train_net_pretrain.py --config-file configs/panoptic-segmentation/pretrain.yaml --num-gpus 8
python tools/preprocess_pretrained_weight.py --task_name panoptic --input_file panoptic_pretrain/model_final.pth
Then train PADing and finetune the last class embedding layer of the trained mask2former model:
CUDA_VISIBLE_DEVICES=0 python train_net.py --config-file configs/panoptic-segmentati