ZegFormer : Decoupling Zero-Shot Semantic Segmentation
https://arxiv.org/pdf/2112.07910

Inspired by the observation that humans often perform segment-level semantic labeling, we propose to decouple the ZS3 into two sub-tasks: 1) a class agnostic grouping task to group the pixels into segments. 2) a zero-shot classification task on segments.
zero-shot segmentation
these works(ZS3Net, CaGNet) formulate zero-shot semantic segmentation as a pixel-level zero-shot classification problem.
Although these studies have reported promising results, two main issues still need to be addressed

직관적인 관찰에 따르면, 우리가 의미 분할을 위한 이미지를 주어졌을 때, 사람들은 먼저 픽셀을 세그먼트로 그룹화한 다음, 세그먼트 수준에서 의미적 레이블을 지정하는 과정을 수행한다. 예를 들어, 어린아이는 객체의 이름을 몰라도 픽셀을 쉽게 그룹화할 수 있다. 따라서 본 논문은 인간과 유사한 제로샷 의미 분할 절차가 두 가지 하위 작업으로 분리되어야 한다고 주장합니다:
하지만 pixel-level zero-shot classification problem는 text embedding이 주로 objects/segments를 설명하는 데 사용되므로 ZS3 문제에 적합하지 않을 수 있다. 이에 대한 다양한 해결책들이 제안되었으나, 새로운 클래스가 등장할 때마다 모델을 재학습해야 하는 한계가 있다.
이 문제를 해결하기 위해, 우리는 ZS3를 pixels-level class-agnostic(비의존적)learning과 segment-level zero-shot learning으로 분리한 새로운 방식을 제안하고, ZegFormer를 구현했다. 이 모델은 복잡한 학습 과정 없이 새로운 클래스에 유연하게 적용될 수 있다.
여러 연구들은 클래스-비의존적 분할 모델이 학습된 클래스로부터 보지 못한 클래스까지 잘 전이될 수 있음을 보여준다.
최근 엔터티 분할(Entity Segmentation, ES) 이라는 새로운 클래스-비의존적 분할 과제가 제안되었으며, 이를 통해 물체(thing)와 배경(stuff) 클래스 모두에 대한 세그먼트를 예측할 수 있다. 그러나 ES는 인스턴스 인식(instance-aware) 작업으로, 의미 분할(semantic segmentation)과는 다르다. 또한, ES는 보지 못한 클래스에 대한 세부 클래스 이름을 예측하지 않는다.
우리의 연구는 이러한 발견들에서 영감을 받았지만, 우리는 새로운 클래스의 의미 분할에 초점을 맞추며, 보지 못한 클래스의 세부 클래스 이름도 예측한다. 우리의 방법은 더 간단하고 유연하며, 견고한 성능을 보인다.
S as the category set of the annotated dataset D,
the seen classes, and E as those appearing in the testing process, we have three types of settings for semantic segmentation
• fully-supervised semantic segmentation: ,
• zero-shot semantic segmentation (ZS3):
• generalized ZS3 (GZS3) problem: .
이전 연구들은 ZS3을 as a pixel-level zero-shot classification problem으로 정의한다. 여기서 학습된 클래스 𝑆 의 픽셀 수준 의미 레이블을 보지 못한 클래스 𝑈의 픽셀로 일반화하는 모델을 사용하는 것
The class-agnostic task has a strong generalization to unseen categories, as demonstrated in [43,45].
Open World Entity Segmentation(https://arxiv.org/pdf/2107.14228)
따라서, 우리의 방식은 𝑆에서 𝑈로 지식을 전이할 때 픽셀 수준 제로샷 분류보다 더 효율적입니다.
그림 2는 제안된 ZegFormer 모델의 파이프라인을 보여준다. 먼저 segment level embedding을 생성하고, 이를 두 개의 병렬 레이어를 통해 class-agnostic grouping와 segment-level zero-shot classification를 수행한다. 또한, pre-trained image encoder를 사용하여 segment classification를 수행한다. 두 세그먼트 수준의 분류 점수를 최종적으로 결합하여 결과를 도출한다.
ZegFormer의 pipeline

1. N queries와 feature maps을 transformer decoder에 입력하여 N segment embeddings을 생성
2. 각 segment embedding을 mask projection layer와 semantic projection layer에 입력하여 mask embedding과 semantic embedding을 얻는다.
3. Mask embedding은 pixel decoder의 출력과 곱해져 class-agnostic binary mask를 생성하고, semantic embedding은 text embeddings을 통해 분류된다.
4. Text embeddings은 class names을 prompt template에 넣고 vision-language model의 text encoder에 입력하여 생성된다.
5. 학습 중에는 학습된 클래스만을 사용해 segment-level classification head를 학습하며, 추론 시에는 학습된 클래스와 보지 못한 클래스 모두의 text embeddings을 사용해 segment-level classification을 수행한다.
6. semantic segment embeddings과 image embeddings을 사용해 두 가지 segment-level classification scores를 얻을 수 있다. 이 두 classification scores를 결합하여 segments의 최종 class prediction을 도출한다.
1.1 predicts a set of binary masks and assigns a single class to each mask. Each prediction is supervised with a per-pixel binary mask loss and a classification loss.학습과 추론을 위해, class names 집합 내의 각 class name을 프롬프트 템플릿에 넣는다.(예: "A photo of a {class name} in the scene") 그런 다음 이를 text encoder에 전달한다. 이렇게 하면 |C| text embeddings을 얻을 수 있으며, 이를 로 나타낸다. 여기서 C는 학습 중에는 S에 해당하고, 추론 중에는 가 된다. (학습된 클래스 𝑆, 보지 못한 클래스 𝑈) 우리의 파이프라인에서 "no object" 카테고리도 필요하다. 이는 세그먼트와 실제 값 간의 IoU가 낮을 때 해당된다. "no object" 카테고리는 단일 class name으로 표현하는 것이 부적절하므로, 추가적인 학습 가능한 embedding 을 추가한다.
segment query에 대해 seen classes들과 "no object"에 대한 예측 확률 분포는 다음과 같이 계산된다.
위에서 설명한 단계들은 이미 ZS3를 위한 standalone approach를 형성할 수 있지만, pre-trained vision-language model(예: CLIP [46])의 image encoder를 사용하여 세그먼트의 분류 정확도를 향상시키는 것도 가능하다. 이는 decoupling formulation의 유연성 덕분이다. 이 모듈에서는 세그먼트에 적합한 sub-image를 생성한다. 이 과정은 mask prediction 가 주어진 쿼리 q와 입력 이미지 I를 이용해, sub-image 를 생성하는 것으로 공식화할 수 있다. 여기서 f는 전처리 함수(예: 마스크된 이미지 또는 에 따라 잘린 이미지)이다. Sec. 4.5에서는 이에 대한 ablation studies를 제공합니다. 우리는 를 pre-trained image encoder에 전달하여 image embedding 를 얻습니다. Eq. 1과 유사하게, 우리는 확률 분포를 계산할 수 있으며, 이는 로 표기된다.
ZegFormer의 학습 과정에서는 S에 속하는 픽셀 레이블만 사용된다. 학습 손실을 계산하기 위해 이분 매칭(bipartite matching) 이 예측된 마스크와 ground-truth masks 사이에서 수행된다. 각 세그먼트 쿼리에 대한 분류 손실은 다음과 같이 계산된다:
여기서 는 해당 segment가 ground-truth mask와 일치하는 경우 S에 속하며, 일치하는 ground-truth segment가 없는 경우에는 "no object"로 설정된다. ground-truth segment 와 일치하는 세그먼트에 대해서는 mask 손실 가 있습니다. 구체적으로, 우리는 dice 손실과 focal 손실의 조합을 사용한다.
annotated in an open-vocabulary setting with more than 3,000 categories.

SPNet-FPN(픽셀 수준 제로샷 분류 기준선)이 보지 못한 클래스의 수가 많을 때 매우 불안정하다는 것을 확인할 수 있다. 또한 847개 클래스 이름이 COCO-Stuff의 171개 클래스 이름보다 더 풍부한 정보를 제공한다는 것을 알 수 있다. 예를 들어, 두 번째 행의 노란색 상자에서 세그먼트에 대해 예측된 "garage"가 COCO-Stuff에서는 "house"로 레이블링되었다.