PaperReview

[pix2seq] Pix2seq: A Language Modeling Framework for Object Detection

Black940514 2026. 1. 10. 19:00

저자: Ting Chen
발행년도: 2022년
인용수: None회
https://arxiv.org/abs/2109.10852


Pix2Seq가 “왜” 객체 검출을 시퀀스 생성으로 바꿨는지


1. 문제 정의 (Problem Definition)

객체 검출과 인스턴스 세그멘테이션은 늘 “구조화된 출력”을 요구했다. 박스 좌표, 클래스, 마스크처럼 결과가 여러 조각으로 나뉘었다. 그런데 대부분의 비전 모델은 입력은 이미지지만 출력은 고정 형태의 텐서로 강제했다. 이 불일치가 파이프라인을 복잡하게 만들었다고 봤다.

기존 검출기는 “어디에 무엇이 몇 개 있나”를 동시에 풀어야 했다. 하지만 학습 목표는 분류, 박스 회귀, 매칭, NMS처럼 여러 손실로 쪼개졌다. 각 컴포넌트가 따로 최적화되면서 전체 목적과 어긋나는 경우가 잦았다. 문제는 예측을 ‘집합(set)’으로 내야 하는데 학습은 ‘격자(grid)’나 ‘앵커(anchor)’에 묶였다는 점이었다.

현실 데이터에서는 더 까다로웠다. 작은 물체, 가림(occlusion), 긴 꼬리 분포, 도메인 변화가 동시에 나타났다. 이런 상황에서 앵커 설계나 NMS 임계값 같은 휴리스틱이 성능을 좌우했다. 결국 “모델이 어려운 문제를 푸는 게 아니라, 사람이 규칙을 튜닝하는” 흐름이 반복됐다고 정리했다.


2. 기존 방법의 한계 (Motivation)

대표적으로 2-stage 계열은 RPN으로 후보를 만들고 RoI에서 정교화했다. 정확도는 좋았지만 파이프라인이 길었다. 후보 생성, RoIAlign, 후처리까지 단계가 많았다. 각 단계가 실패하면 뒤가 복구하기 어려웠다.

1-stage 계열은 앵커 기반으로 격자마다 박스를 예측했다. 속도는 좋아졌지만 앵커 크기, 비율, 할당 규칙이 핵심 변수가 됐다. 데이터 분포가 바뀌면 앵커 튜닝이 다시 필요했다. “검출을 규칙 설계 문제로 만들었다”는 한계가 남았다.

DETR류는 집합 예측과 Hungarian matching으로 큰 전환을 제시했다. 다만 학습 수렴이 느리고, 해상도와 어텐션 비용이 부담이 됐다. 무엇보다 여전히 “검출 전용 헤드”라는 인상이 강했다. 저자들은 더 나아가서, 아예 비전 문제를 언어처럼 생성하는 틀로 통일하고 싶어 했다고 봤다.


3. 제안 방법의 핵심 아이디어 (Key Idea)

저자들의 핵심은 한 문장으로 정리됐다. “객체 검출을 좌표와 라벨의 토큰 시퀀스를 생성하는 문제로 바꿨다”고 제시했다.

직관은 간단했다. 사람이 이미지에서 물체를 설명할 때도 “고양이 하나, 위치는 여기, 또 하나는 저기”처럼 순서대로 말한다. Pix2Seq는 이 과정을 모델이 따라 하게 만들었다. 즉, 박스를 회귀하는 대신 토큰을 한 글자씩 쓰듯이 좌표를 찍어 나갔다.

기존 방식이 “출력 텐서를 채우는 문제”였다면, Pix2Seq는 “문장을 완성하는 문제”로 바꿨다. 그래서 분류와 회귀를 따로 두지 않고, 하나의 생성 손실로 학습을 정리했다. 이 차이가 구조 단순화의 핵심이었다.


4. 아키텍처 설명 (Architecture)

 

 

전체 파이프라인은 이미지 인코더와 텍스트 디코더 형태를 취했다. 입력 이미지는 CNN이나 ViT 계열 백본으로 특징 맵을 만들었다. 그 다음 Transformer 디코더가 이 특징에 cross-attention을 걸었다. 디코더는 이전에 생성한 토큰을 보고 다음 토큰을 예측했다.

출력 시퀀스는 대략 다음 순서를 가졌다. [START] → (class, x1, y1, x2, y2) → (class, x1, y1, x2, y2) → … → [END] 형태였다. 여기서 좌표는 연속값 회귀가 아니라, 일정 해상도로 양자화된 좌표 토큰으로 만들었다. 그래서 모든 예측이 “다음 토큰 분류”로 통일됐다.

 

이 구조가 맞았던 이유는 명확했다. 검출의 어려움은 “개수 가변”과 “순서 없음”이었다. 시퀀스로 바꾸면 [END] 토큰이 개수 문제를 해결했다. 순서 문제는 학습 시 정렬 규칙을 주거나, 일정한 순서로 나열해 모호성을 줄였다. 결국 모델은 “한 번에 다 맞히기”가 아니라 “하나씩 써 내려가기”로 부담을 나눴다.

간단한 pseudo-code는 아래처럼 요약됐다:

# image -> tokens
feat = image_encoder(image)

tokens = [BOS]
while True:
    logits = transformer_decoder(tokens, feat)  # next-token distribution
    next_tok = argmax(logits[-1])
    tokens.append(next_tok)
    if next_tok == EOS or len(tokens) > max_len:
        break

detections = parse(tokens)  # group into (class, box coords)

5. 접근 방법의 특징 및 설계 의도 (Design Choices)

가장 큰 선택은 좌표를 토큰화(discretization) 했다는 점이었다. 좌표를 연속 회귀로 두면 손실이 다시 분리됐다. 반면 토큰화하면 CE loss 하나로 끝났다. 실무적으로도 mixed loss 밸런싱이 줄었다. 대신 해상도(quantization bins)를 잘못 잡으면 정밀도가 손해를 볼 수 있었다.

또 다른 선택은 “집합”을 직접 다루지 않고 “순서”를 도입한 점이었다. 검출은 원래 순서가 없지만, 생성 모델은 순서를 필요로 했다. 저자들은 이 충돌을 정렬 규칙으로 완화했다. 예를 들어 좌상단부터 정렬하는 식의 규칙이 들어가면, 같은 집합도 표현이 안정됐다. 순서가 학습을 돕는 인덕티브 바이어스로 작동했다고 해석했다.

Transformer 디코더를 쓴 이유도 자연스러웠다. 디코더는 이미 생성된 토큰 간 의존성을 학습한다. 그래서 “첫 번째 박스를 만들고 나면, 두 번째 박스는 겹치지 않게” 같은 관계를 내부적으로 반영할 수 있다. NMS 같은 후처리를 모델 내부의 문맥 처리로 흡수하려는 의도가 읽혔다.


6. 실험 결과 요약 (선택)

이 논문에서 확인한 가설은 “통일된 생성 프레임이 성능을 해치지 않는다”였다. 즉, 검출을 생성으로 바꿔도 정확도가 유지되거나 좋아질 수 있음을 보였다. 특히 후처리 의존도를 줄이고, 구성요소를 단순화해도 경쟁력이 있다는 점이 중요했다.

Ablation 관점에서는 좌표 토큰화와 시퀀스 포맷이 성능과 안정성에 영향을 줬다는 메시지가 강했다. 토큰 해상도를 높이면 정밀도는 좋아지지만 시퀀스 길이가 늘어 비용이 증가했다. 또한 정렬 규칙이 없으면 학습이 흔들릴 수 있음을 시사했다. 즉, “생성으로 바꿨다고 끝이 아니라, 표현 설계가 성능의 핵심”이라고 정리됐다.


7. 개인적인 해석 및 실무 관점 코멘트

실무에서 Pix2Seq가 유용했던 지점은 “문제 통일”이었다. 검출, 키포인트, 세그멘테이션 같은 작업을 모두 토큰 생성으로 가져가면, 헤드가 늘어나는 복잡도가 줄었다. 멀티태스크에서 특히 관리 포인트가 줄어드는 장점이 있었다. 하나의 디코더가 여러 출력 형식을 다루게 만드는 발상이 생산성을 올릴 수 있다고 봤다.

다만 비용과 데이터 측면의 부담도 있었다. Transformer 디코더는 시퀀스가 길어질수록 느려졌다. 고해상도 좌표 토큰, 많은 객체 수는 곧 긴 디코딩을 의미했다. 또한 생성 모델 특성상 학습 데이터가 충분하지 않으면 불안정해질 가능성도 있었다.

후속 아이디어로는 두 가지가 떠올랐다. 첫째, 토큰 길이를 줄이기 위해 박스를 더 압축적으로 부호화하는 방식이 가능했다. 둘째, 도메인 변화가 큰 환경에서는 좌표 토큰의 분포가 달라질 수 있었다. 그래서 적응(adaptation)을 위한 프롬프트 토큰이나 조건부 디코딩을 붙이면 실무성이 더 좋아질 수 있다고 봤다.

Pix2Seq는 “검출기를 더 잘 만드는” 접근이 아니었다.
비전 출력 자체를 생성 문제로 재정의해서, 복잡한 파이프라인을
모델 한 덩어리의 학습 문제로 바꾸는 관점 전환을 제시했다.