시작하기 전에
해당 논문은 2024년 6월에 CVPR에서 발행된 매우 최신 논문이다.
Link
논문: https://arxiv.org/pdf/2312.02228
코드: https://github.com/MaverickRen/PixelLM
I. Introduction
PixelLM이 할 수 있는 것?
[Figure 1]의 4가지라고 한다. 예시로 Multi-target의 첫 번째 그림을 보면, 유저가 서핑 도구가 있는 이미지와 "서핑을 하려면 이미지의 어떠한 도구를 사용해야 하는가?"라는 텍스트를 입력값으로 넣으면 "sail을 사용하여 어떠한 행동을, board를 사용하여 어떠한 행동을 하면 된다."라는 텍스트 결과값과 이미지에 sail과 board를 색으로 표시해준다.
문제 정의
1) 기존 LLM
- '전체' 이미지에 대한 '텍스트' 응답만 생성할 수 있었다.
- '전체' 이미지만 인식한다는 것은 픽셀 단위로 이미지를 인식할 수 없음을 의미한다. 이로 인해 객체에 대한 마스크(위의 예시에서 sail과 board를 구별하여 색으로 표현하는 것)를 생성할 수 없다.
- '텍스트' 응답만 생성 가능하다는 것은 다양한 형식으로 출력이 불가능함을 의미하므로 그 자체로 매우 단점이다.
2) Reasoning Segmentation
- 최근 연구는 LLM을 사용하여 (기존의 "Orange"라는 단순한 설명에 비해) "The fruit high in Vitamin-C"와 같은 복잡한 설명을 생성한다. 이는 객체에 대한 마스크를 생성할 수 있어 우리가 생각하는 LMM에 더 다가갈 수 있게 해주었다.
- 그러나, 단일 객체만을 다룰 수 있다.
- 사전 학습된 segmentation model에 의존하였기 때문에, 그 model이 가지고 있는 단점을 그대로 가져갈 수밖에 없다.
- 대표적으로 LISA가 있으며, 이 논문은 LISA의 한계를 극복하고자 나왔다고 볼 수 있다. 아래에서 살펴보자.
LISA는 어떠한 모델일까?
- [Figure 2]는 LISA의 모델이며 [Figure 3]은 LISA에서 처리하는 데이터의 형식이다.
- [Figure 3]을 [Figure 1]과 비교해서 보면, LISA는 단일 객체만을 다룰 수 있음을 확인할 수 있다.
- [Figure 2]의 Decoder 부분에 SAM이라는 사전 학습 segmentation model을 사용한다. 이로 인해 상당한 계산량이 더해진다.
- 두 사진의 출처는 모두 LISA 논문이다. (링크: https://arxiv.org/pdf/2308.00692)
II. Method
PixelLM 모델
[Figure 4]와 같다. 메인 구성은 4가지로 이루어져 있다.
- 사전 학습된 CLIP-ViT 비전 인코더 \( \mathcal{I} \)
- LLM \( \mathcal{F} \)
- 경량 픽셀 디코더 \( \mathcal{D} \)
- Segmentation Codebook \( \mathcal{C_{seg}} \)
이 중 1번과 2번은 대부분의 LMM 구조에 존재하기 때문에 논문에서는 3번과 4번만 살펴본다.
※ CLIP이란?
※ CLIP이란?
추가로 논문정리를 남겨서 첨부할 계획이다. 간단하게 이미지를 넣었을 때 L개의 각각 다른 스케일의 시각적 특성을 뽑아낸다고 생각하면 된다. 아래의 Segmentation Codebook 개념과 비슷해서 이를 먼저 읽으면 이해가 쉽다.
Segmentation Codebook이 뭘까?
이는 다양한 코드 그룹들로 이루어져 있다. 각 그룹은 이미지의 시각적 특성에 대한 다른 레벨의 스케일을 나타낸다. 말이 이해하기 어렵기 때문에 아래 그림과 함께 예시로 살펴보자.
- [Figure 4]의 Segmentation Codebook의 구조를 그대로 가져왔다고 생각하자.
- 레벨은 \( l \)이라는 기호로 표현되었다. 낮은 레벨은 에지, 텍스처, 색상 등 시각적 요소를, 높은 레벨은 전체 객체, 장면 등 전반적인 의미와 맥락의 특성을 뽑아내기 위한 토큰 그룹이라고 생각하면 된다.
- 또한 토큰 그룹 안에서 몇 번째에 있는 토큰인지도 \( n \)이라는 변수를 활용하여 표시할 수 있겠다.
이제는 아래 식이 이해가 가능할 것이다.
$$ C_{seg} = \left\{ c^{l}_n\in \mathbb{R}^{d}\right\}^{N,L}_{n=1,l=1} $$
\( L \)과 \( N \)은 각각 한 그룹의 시각적 스케일과 토큰의 개수이고, 토큰(\( c \))은 d차원의 벡터로 이루어져 있다.
디코더 전까지의 과정
구체적으로는, Codebook Token이 LMM과 합쳐져 타겟 마스크 생성을 위한 사전 정보를 인코딩하는(뽑아내는) 과정을 살펴보자. 우선, 편의를 위해 N=1인 경우를 가정한다. 즉, 토큰 그룹에 토큰이 한 개 있는 상황이다. [Figure 4]를 같이 보면서 과정을 따라와야 이해할 수 있다.
- 입력 이미지 \( \mathcal{x_{img}} \)에 대해, 비전 인코더 \( \mathcal{I} \)는 L개의 각각 다른 스케일의 시각적 특성들 \( I_{img} \)를 뽑아낸다. 식으로 정리하면 아래와 같다. $$ \mathcal{I}\left ( x_{img} \right ) = I_{img} = \left\{ I^{l}_{img}\right\}^{L}_{l=1} $$
- 이를 LLM으로 전송하기 위해서는 현재 결과값의 형태를 언어 형태로 변환하는 과정이 필요하다. 정확하게는, vision-to-language projection layer를 거쳐 변환해야 한다. 여기서 포인트가 있는데, \( \mathcal{I_{img}} \) 전체를 변환하는 게 아니라 우리는 마지막 층에서 나온 결과인 \( \mathcal{I^{L}_{img}} \) 만을 변환할 것이다. 앞의 Segmentation Codebook에서 살펴봤듯이 높은 레벨에서 나온 결과는 전체 이미지에 대한 정보를 가지고 있기 때문이다. 따라서 가장 높은 레벨, 즉 마지막 층에서 나온 결과만을 입력값으로 사용해도 되는 것이다.
- 이러한 Codebook Tokens, 입력 이미지, 입력 텍스트 모두 LLM으로 들어가서 결과가 나온다. 식으로 정리하면 아래와 같다. $$ y_{res} = \mathcal{F}\left ( p_{V\rightarrow T} \left ( I^{L}_{img} \right ), x_{txt}, C_{seg} \right ) $$
하나의 예시로 만약 \( x_{txt} \) = "Segment the apple on the left"라면, \( C_{seg} \)의 L개의 토큰을 거쳐 \( y_{res} \) = "The apple is \( c^{1} \), ... \( c^{L} \)"이다. 즉, 우리가 이미지에서 찾아야 하는 apple 객체에 대해 L개의 다양한 스케일의 시각적 특성을 뽑아내는 것이다. 이러한 \( C_{seg} \)로부터의 결과는 아래의 식으로 표현이 되며 이는 이후 디코더에 입력값으로 사용된다.
$$ h = \left\{ h^{l} \right\}^{L}_{l=1} $$
N > 1인 경우는 언제 필요할까?
그럼 여기서 한 가지 궁금증이 생긴다. N > 1인 경우는?
이는 [Figure 5] 그림 하나로 설명이 가능하다. 우리가 인식해야 하는 것이 여러 타겟이 되거나 이미지의 구조가 복잡해지면 제일 아래 행에서 볼 수 있듯이 N = 1인 경우에 제대로 객체 인식이 불가능하다.
가운데 행을 보면 N > 1인 경우, token fusion이라는 메커니즘을 사용하여 객체를 정확하게 인식하는 것을 확인할 수 있다.
위의 과정에서 N > 1일 때 추가되는 부분은 \( h^{l} \)에서 \( n \)에 대한 부분이다.
$$ h^{l} = \phi \left( h^{l}_{1}, ... , h^{l}_{N} \right) $$
과정 리뷰
[Figure 4]의 예시를 보며, 과정을 쭉 돌아보자. 입력 이미지(\( x_{img} \))로는 배와 노(kayak과 paddle), 그리고 해변 등이 담겨 있다. 입력 텍스트(\( x_{txt} \))로는 "How can I get to the sea far away from the coast?"가 들어왔다.
- 입력 이미지가 CLIP-Vit 비전 인코더를 거쳐서, L개의 각각 다른 스케일의 시각적 특성(\( I_{img} \))이 추출된다.
- 이 중 마지막 층에서 나온 결과값(\(I^{L}_{img} \))을 vision-to-language projection layer를 거쳐, 언어 형태로 바꿔준다.
- Codebook Tokens, 변환된 입력 이미지, 입력 텍스트는 모두 LLM으로 들어가고, LLM은 "Sit in the kayak, propel it forward using the paddle"이라는 결과값을 내며 우리가 이미지에서 찾아야 할 kayak, paddle 각각에 대해 L개 레벨의 토큰 그룹을 바탕으로 L개의 시각적 특성을 추출한다. 이는 이후 디코더에 입력값으로 들어가고, 이미지에서 kayak, paddle을 구분하기 위한 마스크를 생성하는 데 쓰인다.
Pixel Decoder는 뭘까?
[Figure 6]은 Pixel Decoder의 모습이다. 이는 \( \left\{ Attn^{l} \right\}^{L}_{l=1} \), L개의 attention block으로 이루어져 있다. 디코더는 layer의 순서를 반대로 지나가므로 L 레벨부터 거쳐가는 것을 확인할 수 있다.
- 입력으로는 2개가 들어간다.
첫 번째는 위의 과정에서 나온 결과값 \( h = \left\{ h^{l} \right\}^{L}_{l=1} \) , 그리고 이를 token fusion 해야 하므로 \( h^{l} = \phi \left( h^{l}_{1}, ... , h^{l}_{N} \right) \).
두 번째는 위에서 구했던 이미지에 대한 다른 스케일의 시각적 특성들 집합 \( I_{img} \)이다. 이를 디코더에 입력할 수 있는 형태로 바꾸기 위해 vision-to-decoder 변환 작업을 거친 것이다. 이는 여러 Attention Layer에 레벨 별로 각각 들어간다. 이를 식으로 표현하면 아래와 같다. $$ f_{img} = \left\{ f^{l}_{img} = p_{V \rightarrow D} \left( I^{l}_{img} \right) \right\}^{L}_{l=1} $$ - 각 스케일 \( l \)에서 마스크 스코어 맵 \( m^{l} \)을 생성한다. 그리고 이는 다음 스케일 \( l-1 \)에 attention을 준다. 쉽게 말하자면, 더 global하게 이미지를 봤을 때(디코더는 높은 스케일의 layer부터 거꾸로 지나가니까) 이 부분이 객체일 가능성이 높으니 더 가중치를 줘서 객체를 확실하게 구분해내자는 의미이다. 반대로 이 부분이 객체일 가능성이 낮다면 가중치를 낮게 줘서 객체가 아님을 확실히 하는 기능도 하겠다. 식으로 표현하면 아래와 같다. $$ f^{l'}_{img} = \left\{\begin{matrix}
f^{L}_{img} & l = L \\
f^{l}_{img}\odot \left( \sigma \left( m^{l+1} \right) +1 \right) & l < L \\
\end{matrix}\right. $$ $$ m^{l} = Attn^{l} \left( h^{l}, f^{l'}_{img} \right) $$ \( \sigma \)는 sigmoid 함수이고, \( \odot \)는 element-wise multiplication이다. - 마지막 segmentation 결과를 구하는 과정에서는 가중치 요소 \( \gamma = \left[ \gamma^{l} \right]^{L}_{l=1} \) \( (\left| \gamma \right| = 1) \)가 사용된다.
$$ \hat{M} = \sum_{l=1}^{L} \gamma^{l} m^{l} $$
※ Element-wise multiplication이란?
※ Element-wise Multiplication이란?
한글로는 원소-간 곱이다. 연산은 아래와 같다.
\( \begin{bmatrix}
1 & 2 \\
3 & 4 \\
\end{bmatrix} \circ \begin{bmatrix}
5 & 6 \\
7 & 8 \\
\end{bmatrix} = \begin{bmatrix}
1\times 5 & 2\times 6 \\
3\times 7 & 4\times 8 \\
\end{bmatrix} = \begin{bmatrix}
5 & 12 \\
21 & 32 \\
\end{bmatrix} \)
보통은 Matrix Multiplication, 행렬 곱과 많이 헷갈린다. 이 연산은 아래와 같다.
\( \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} \times \begin{bmatrix} 5 & 6 \\ 7 & 8 \end{bmatrix} = \begin{bmatrix} 1\times 5 + 2\times 7 & 1\times 6 + 2\times 8 \\ 3\times 5 + 4\times 7 & 3\times 6 + 4\times 8 \end{bmatrix} = \begin{bmatrix} 19 & 22 \\ 43 & 50 \end{bmatrix} \)
Target Refinement Loss
PixelLM이 여러 타겟을 인식할 수 있다는 장점이 있지만, 타겟의 숫자가 커지면서 모델이 혼란을 겪거나 마스크가 중복되는 경우가 생긴다. 이 문제를 보완하기 위해서 Overall Loss를 구할 때 새로운 툴이 하나 추가된다.
지금까지 생성된 마스크는 다음과 같이 표현될 수 있다.
$$ \left\{ \hat{M}_{k} \in \mathbb{R}^{H \times W} \right\}^{K}_{k=1} $$
\( K \)는 타겟의 총 개수이고, \( H \)와 \( W \)는 마스크의 높이, 너비를 나타낸다.
\( \hat{M}_{k_{i}} \in \mathbb{R} \)는 각 픽셀의 binary value를 나타낸다.
여러 타겟이 인식되는 구역에는 Loss에 가중치를 줘서 각각을 더 잘 인식할 수 있도록 하는 기능을 한다. 이를 식으로 보면 아래와 같다.
$$ A_{i} = \left\{\begin{matrix}
\alpha, & \sum_{k} \hat{M}_{k_{i}} \geq 2 \\
1, & \sum_{k} \hat{M}_{k_{i}} < 2 \\
\end{matrix}\right. $$
\( \alpha \)는 hyper-parameter로, 1보다 큰 값이다.
이에 따른 Target Refinement Loss는 아래와 같다.
$$ \mathcal{L}_{ref} = \frac{1}{KHW} \sum_{k} \sum_{i} A_{i} \mathcal{L}_{BCE} \left( \hat{M_{k_{i}}}, M_{k_{i}} \right) $$
여기서 \( M_{k} \)는 어디서 나오는가 궁금할 수 있는데, 이는 데이터셋에 포함된 실제 레이블로부터 얻어진다.
KHW로 나누는 이유
k와 i에 대해 sigma를 씌우기 때문에 값이 어느 정도 커진다. 어차피 Loss는 학습하면서 계속 감소하고 있다 등의 상대적인 값만 필요하기 때문에 굳이 큰 값을 가지고 있을 필요가 없다. 따라서 Loss 값에 어느 정도 정규화를 해주는 것이다.
Overall Loss
전체 Loss를 구할 때는 위에서 얘기한 Target Refinement Loss에 더해서, text generation에 대한 augo-regressive cross-entropy loss \( \mathcal{L}_{txt} \)와 DICE loss \( \mathcal{L}_{dice} \)까지 포함한다.
$$ \mathcal{L} = \mathcal{L}_{txt} + \lambda_{ref}\mathcal{L}_{ref} + \lambda_{dice}\mathcal{L}_{dice} $$
※ Cross Entropy Loss란?
※ Dice Loss란?
※ Cross Entropy Loss란?
$$ H(P, Q) = -\sum_{x} P(x)logQ(x) $$
- 분류 문제에서 주로 사용되는 손실 함수 계산법이다.
- P(x)는 실제 데이터의 확률 분포, Q(x)는 모델이 예측하는 확률 분포이다.
- P는 one-hot encoding된 vector를 사용한다.
- Q는 softmax layer를 거친 후의 값이므로 클래스별 확률 값을 모두 합치면 1이다.
추가적인 개념이 나왔다.
※ One-hot encoding이란?
이는 단어 집합의 크기를 벡터 차원으로 하고, 해당되는 단어가 있으면 1, 그렇지 않으면 0으로 표현하는 방식이다. 예를 들어, cat, dog, mouse, bird, rabbit 순으로 구성된 단어 집합이 있다면 아래 그림과 같이 표현할 수 있는 것이다.

※ Dice loss란?
$$ DSC(A, B) = \frac{2\times \left| A\cap B \right|}{\left| A \right| + \left| B \right|} $$
$$ Dice Loss = 1 - DSC(A, B) $$
- 분류 문제에 주로 사용되는 손실 함수 계산법이다.
- A와 B는 두 개의 샘플 집합을 나타낸다.
- DSC는 0에서 1 사이의 값을 가지며, 1에 가까울수록 두 집합이 유사함을, 0에 가까울수록 두 집합이 다름을 의미한다.
- Loss 값이므로 당연히 딥러닝에서는 이를 최소화하는 게 목표이며, Dice Loss가 작을수록 segmentation 결과가 더 정확함을 의미한다.
- 예를 들어, 의료 영상에서 종양과 같은 관심 영역이 전체 영상에서 차지하는 비율이 매우 작을 때 Dice Loss는 이러한 클래스 불균형 문제를 잘 처리할 수 있다.
- 출처 : https://velog.io/@hsbc/dice-loss-%EC%82%AC%EC%9A%A9
III. Experiment
마지막으로 평가 방식을 어떻게 설정했는지, 결과는 어땠는지를 살펴보자.
MUSE Dataset
결과를 평가하기 위한 데이터셋이 필요한데 두 가지 문제가 있다.
- 이미지와 텍스트 쌍에서 텍스트가 디테일하지 않은 경우가 많았다.
- 질문-대답 쌍이 부족했다.
이에 따라 MUSE Dataset을 직접 생성해서 데이터셋으로 사용했다.
이는 RefCOCO와 ReasonSeg 데이터셋의 한계를 보완하기 위해 만들어졌으며, LVIS 데이터셋을 기반으로 생성되었다.
Dataset 생성 방법
처음에는 LLAVA로 이미지 캡셔닝을 하고, GPT-4로 여러 이미지 구역에 대한 질문을 생성하는 데, 즉 데이터셋을 생성하는 데 사용했다. 하지만 질문-답변 쌍이 캡션을 설명하는 것에만 한정되어 있어 데이터의 다양성이 채워지지 않았다.
이에 따라 GPT-4V를 사용해서 다양한 형태의 답변 생성을 성공했다.
Evaluation
- 예측 마스크와 ground-truth 마스크를 마스크 IoU(Intersection over Union) 점수를 사용하여 이분 매칭 방식으로 매칭했다. 이는 DETR과 유사한 방식이다. 할당되지 않은 예측 마스크나 ground-truth 마스크는 빈 마스크로 간주했다.
- 예측 마스크의 위치를 생성된 텍스트에서 해당 ground-truth 객체 설명으로 교체했다. 이는 예시로 이해하면 더 쉽다. “Sit in the kayak (a red kayak parked on the beach), propel it forward using the paddle (a double-bladed paddle on the kayak)”. 여기서 괄호 안의 내용이 ground-truth 객체 설명이다.
- 이렇게 수정된 텍스트를 GPT-3.5에 입력하여 각 예측에 대해 1에서 10까지 점수를 부여했다. 높은 점수는 더 높은 품질을 나타내며, 할당되지 않은 예측은 0점을 받는다.
- 각 예측의 최종 점수는 GPT 점수와 IoU 점수의 곱으로 계산되었다. 이를 바탕으로 gIoU와 cIoU 방법을 계산했다.
※ IoU, gIoU, cIoU란?
※ DETR이란?
※ IoU란?
이는 Intersection over Union으로, Object Detection 분야에서 예측 Bounding Box와 Ground Truth(실제 물체가 있는 Box)가 일치하는 정도를 0과 1 사이의 값으로 나타낸 값이다. 앞으로는 이 두 Box를 Bbox, GT라고 하자.

위의 그림에서 Bbox와 GT 각각이 A, B라고 하면, IoU는 아래와 같이 표현할 수 있다.
$$ IoU = \frac{\left| A\cap B \right|}{\left| A\cup B \right|} $$
우선, Object Detection 분야에서 왜 IoU가 사용되어야 하는지를 먼저 알아보자.
(앞으로 나올 그림들에서 초록색 박스가 GT, 파란색 박스가 Bbox이다)
Mean Absolute Error(MAE), L1 Loss는 Error 절댓값들의 평균으로 아래와 같이 계산한다.
$$ MAE = \frac{1}{N} \sum^{N}_{i} \left| y_{i} - \hat{y}_{i} \right| $$
Mean Square Error(MSE), L2 Loss는 Error 제곱값들의 평균으로 아래와 같이 계산한다.
$$ MSE = \frac{1}{N} \sum^{N}_{i} \left( y_{i} - \hat{y}_{i} \right)^{2} $$

(a)를 보면, 두 박스의 왼쪽 하단 거리와 오른쪽 상단 거리가 동일할 때 MSE는 일정하지만 box의 겹침 정도를 나타내는 IoU 값은 변한다. (b)도 마찬가지로, 중심 사이의 거리와 높이, 너비 차이가 동일할 때 MAE는 일정하지만 IoU 값을 변한다.
따라서 Object Detection 분야에서는 1-IoU를 Loss로 활용한다.

그럼 gIoU는?
위 그림의 3번째 사진을 보면, IoU만으로는 두 박스가 겹치지 않는 상황에서 어느 정도의 오차로 교집합이 생기지 않은 것인지 알 수 없다는 문제가 발생한다. 따라서 generated-IoU, gIoU가 등장했다.
Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression 논문에서 제안한 방법이다.
Bbox와 GT를 모두 포함하는 최소 크기인 Cbox를 활용하는 것이다.

\( C\ \left( A \cup B \right) \)는 C에서 A와 B 영역의 합집합을 뺀 영역을 말한다. (차집합)
따라서 1-gIoU를 Loss로 활용한다.
학습 횟수가 반복됨에 따른 gIoU Loss의 Bbox 예측 과정을 보면, Bbox가 GT와 많이 겹치기 위해 Bbox 영역이 넓어지고, 겹친 다음에는 IoU를 높이기 위해 Bbox 영역을 줄이는 방식으로 수행된다.
그렇다면 cIoU는? (+dIoU)
gIoU는 박스가 겹치지 않는 상황에 대한 vanishing gradient 문제는 개선했지만, 수렴 속도가 느리며 horizontal과 vertical의 정보를 표현하지 못해 부정확하게 박스를 예측한다는 문제가 발생했다. 따라서 dIoU(distance-IoU), cIoU(complete-IoU)가 등장했다.
Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression 논문에서 제안한 방법이다.
학습 횟수가 반복됨에 따라 dIoU Loss의 Bbox 예측 과정을 보면, 중심 좌표를 비교하여 Bbox가 GT 쪽으로 이동하는 것을 확인할 수 있다.

Loss를 구하는 방법은 아래와 같다.
$$ \mathcal{L}_{dIoU} = 1 - IoU + \frac{\rho^{2} \left( b, b^{gt} \right)}{c^{2}} $$
\( \rho \)는 Euclidean distance, \( b \)는 Bbox, \( b^{gt} \)는 GT의 중심 좌표, \( c \)는 Bbox와 GT를 포함하는 최소 박스인 C 박스의 대각 길이다.
cIoU는 dIoU를 제시한 동일한 논문에서 제안한 방법이다.
dIoU에서 aspect ratio를 추가로 고려한 방법이다. 식을 비교해보면 차이를 금방 알 수 있다.
$$ \mathcal{L}_{cIoU} = 1 - IoU + \frac{\rho^{2} \left( b, b^{gt} \right)}{c^{2}} + \alpha v $$
\( v \)는 두 box의 종횡비(가로와 세로의 비율)의 일치성을 측정하는 역할이고,
\( \alpha \)는 Bbox와 GT의 종횡비 차이가 cIoU 값에 미치는 영향을 조절하는 역할을 한다. \( \alpha \) 값이 클수록 종횡비 차이의 영향이 커져서 Bbox의 종횡비가 GT의 종횡비와 더 유사한 것을 선호하도록 한다.
※ DETR이란?
추가로 논문정리를 남겨서 첨부할 계획이다.
결과
이제는 실제 결과를 확인해보자.
혹시 궁금할 수 있으니 설명하자면, SEEM은 가장 결과값이 좋은 image segmentation 모델이다. \( LISA_{rec} \)는 LISA가 여러 객체를 인식할 수 없는 한계를 극복할 수 있도록 타겟 객체들을 텍스트 형태로 규정한 뒤에 각각을 구별해내라고 한 모델이다. \( LISA_{aug} \)는 \( LISA_{rec} \)에서 추가적으로 MUSE Dataset에 대해서도 training시킨 모델이다.
MUSE 데이터셋에 대한 결과
TFLOPs는 초당 부동소수점 연산이며, 아래 적혀있듯이 + 표시는 token fusion 방법과 target refinement loss을 사용하지 않은 모델을 의미한다.
PixelLM이 LISA와 비교했을 때 SAM 디코더를 사용하지 않았고, TFLOPs가 더 작은 것을 보아 연산량이 매우 적어 효율적이고, 테스트 결과값이 모두 높은 것을 보아 multi-target reasoning segmentation 능력에서 더 좋은 결과를 보여줬다.
Referring Segmentation에 대한 결과
Multi-Referring Segmentation은 이미지에서 여러 객체를 구분해내는 능력으로, 이는 [Figure 1] 중앙 하단 그림을 보면 더 정확히 이해할 수 있다. 역시 LISA와 비교했을 때 좋은 결과를 보여줬다.
Referring Segmentation 전체를 살펴보면, 단일 객체 구별인 refCOCO에서는 LISA가 더 좋은 결과를 보이긴 하나 PixelLM의 결과도 다른 method들에 비해 좋고, 여러 객체 구별인 refCOCO+, refCOCOg에서는 LISA보다, 그리고 다른 method들보다도 좋은 결과를 보여주고 있다.
Ablation Study
추가적으로 몇 개 더 실험을 해봤다고 한다.
(a)와 (b)를 보면, 토큰 그룹의 수(L, 여기서는 scale)나 토큰 그룹당 토큰의 수(N)를 키울수록 성능이 향상되다가 어느 순간부터 성능이 떨어지는 것을 확인할 수 있다. 즉, 가장 좋은 결과값이 나오는 적절한 값이 있다. 또 (a)로부터 더 거대한 CLIP-H를 사용하면 성능이 향상된다는 것도 확인할 수 있다.
(c)를 보면, token fusion 방법과 target refinement loss는 무조건 사용하는 게 결과값이 더 좋게 나오는 것을 확인할 수 있다.
(d)를 보면, 앞에서 데이터 생성에 GPT-4를 사용했을 때 한계점이 많아서 GPT-4V로 변경했다는 얘기가 있었는데 이를 실제 결과값으로 확인할 수 있다. 당연히 데이터 생성 수를 증가시킴에 따라서도 결과값은 더 좋아졌다.