TextVQA: Towards Reading and Reasoning on Text in Images
저자: Amanpreet Singh, Vivek Natarajan, Meet Shah
발행년도: 2019년
인용수: 650회
논문 링크: https://arxiv.org/abs/1904.08920
arXiv ID: 1904.08920
---
TextVQA: 이미지 속 텍스트를 읽고 이해하는 AI를 향한 도전
문제 정의 (Problem Definition)
컴퓨터 비전 분야는 지난 몇 년간 이미지 분류, 객체 탐지, 시맨틱 분할 등에서 놀라운 성과를 보여왔다. 그러나 우리가 일상에서 마주하는 이미지들을 자세히 살펴보면, 단순히 객체를 인식하는 것만으로는 충분하지 않은 경우가 많다. 거리의 표지판, 제품의 라벨, 책의 표지, 레스토랑 메뉴판 등 텍스트 정보가 이미지 이해의 핵심이 되는 상황이 무수히 많기 때문이다.
기존의 Visual Question Answering (VQA) 연구들은 주로 이미지 내의 시각적 요소들 - 객체의 종류, 색상, 위치, 개수 등에 초점을 맞췄다. "What color is the car?"나 "How many people are there?" 같은 질문들이 대표적이다. 하지만 "What does the sign say?"나 "What is the brand name on the bottle?" 같은 질문에 답하려면 이미지 속 텍스트를 정확히 읽고 이해해야 한다.
이것이 바로 TextVQA가 해결하고자 하는 핵심 문제다. 단순히 이미지를 '보는' 것을 넘어서 이미지 속 텍스트를 '읽고', 그 의미를 '이해'하여 질문에 답할 수 있는 AI 시스템을 만드는 것이다. 실제 환경에서 이 문제는 여러 도전 과제를 안고 있다. 텍스트가 다양한 폰트, 크기, 각도로 나타나고, 조명이나 반사로 인해 일부가 가려지거나 왜곡될 수 있으며, 때로는 부분적으로만 보이거나 배경과 구분이 어려울 수도 있다.
기존 방법의 한계 (Motivation)
TextVQA 이전의 접근 방식들은 크게 세 가지로 나눌 수 있다.
첫 번째는 순수한 VQA 모델이다. BUTD (Bottom-Up and Top-Down Attention)나 Pythia 같은 모델들은 이미지 특징과 질문을 멀티모달 융합하여 답을 생성한다. 하지만 이들은 이미지 속 텍스트를 명시적으로 인식하는 메커니즘이 없다. CNN 피처만으로는 텍스트의 정확한 내용을 추출하기 어렵고, 결과적으로 텍스트 관련 질문에 거의 답하지 못했다.
두 번째는 OCR 후처리 방식이다. 먼저 별도의 OCR 엔진으로 텍스트를 추출한 뒤, 이를 VQA 모델의 추가 입력으로 사용하는 방법이다. 하지만 이 접근법은 OCR 결과와 시각적 컨텍스트를 효과적으로 연결하지 못했다. 예를 들어 "빨간색 간판에 뭐라고 쓰여있어?"라는 질문에 답하려면 OCR로 읽은 여러 텍스트 중에서 빨간색 간판에 있는 것을 찾아야 하는데, 기존 방법들은 이런 연결을 제대로 학습하지 못했다.
세 번째는 엔드투엔드 학습 시도다. 일부 연구들은 텍스트 인식과 이해를 하나의 네트워크에서 동시에 학습하려 했다. 하지만 텍스트 인식 자체가 매우 어려운 과제인데다, 이를 VQA와 함께 학습하는 것은 최적화가 쉽지 않았다. 또한 대규모의 텍스트-VQA 학습 데이터가 없어서 제대로 된 평가조차 어려웠다.
> 흥미롭게도, 저자들은 이런 한계점들을 지적하면서도 정작 자신들도 두 번째 방식(OCR 후처리)을 채택했다. 이는 현실적인 타협이었을 것이다. 엔드투엔드 학습이 이상적이지만, 당시 기술로는 충분한 성능을 내기 어려웠을 것으로 보인다.
제안 방법의 핵심 아이디어 (Key Idea)
TextVQA의 핵심 기여는 사실 모델 아키텍처보다는 문제 정의와 벤치마크 구축에 있다. 저자들은 "이미지 속 텍스트를 읽고 추론하는 능력"을 체계적으로 평가할 수 있는 대규모 데이터셋을 만들었다. 28,408장의 이미지와 45,336개의 질문-답변 쌍으로 구성된 이 데이터셋은 텍스트 읽기가 필수적인 질문들로 채워져 있다.
모델 측면에서의 핵심 아이디어는 OCR 토큰을 답변 후보로 직접 사용하는 것이다. 기존 VQA 모델들은 사전에 정의된 답변 세트(예: 3,000개의 자주 나오는 답)에서 선택하는 분류 문제로 접근했다. 하지만 텍스트 관련 답변은 매우 다양하고 예측 불가능하다. 따라서 TextVQA는 이미지에서 OCR로 추출한 텍스트들을 동적인 답변 후보로 추가하는 방식을 제안했다.
이는 간단해 보이지만 실용적인 접근이다. "What does the stop sign say?"라는 질문에 대해, OCR이 "STOP", "ALTO", "ONE WAY" 등을 검출했다면, 이들을 모두 답변 후보에 포함시켜 모델이 문맥에 맞는 것을 선택하도록 한다. 물론 이 방식은 OCR이 정답을 제대로 검출했을 때만 작동한다는 한계가 있다.
> 개인적으로 이 접근법은 엔지니어링적으로는 실용적이지만, 연구적으로는 다소 아쉽다. OCR에 대한 의존도가 너무 높고, 진정한 "읽기와 추론"보다는 "선택"에 가깝기 때문이다.
아키텍처 설명 (Architecture)
TextVQA의 LoRRA (Look, Read, Reason, and Answer) 모델은 다음과 같은 파이프라인으로 구성된다.
# Pseudo-code for LoRRA architecture
def LoRRA(image, question):
# 1. Visual Feature Extraction
visual_features = FasterRCNN(image) # [N, 2048]
# 2. OCR Token Extraction
ocr_tokens = OCR_Engine(image) # ["STOP", "ONE WAY", ...]
ocr_embeddings = FastText(ocr_tokens) # [M, 300]
# 3. Question Encoding
question_features = GRU(question) # [1024]
# 4. Multimodal Fusion
# Visual-Question Attention
visual_attended = attention(visual_features, question_features)
# OCR-Question Attention
ocr_attended = attention(ocr_embeddings, question_features)
# 5. Answer Prediction
features = concat([visual_attended, ocr_attended, question_features])
# Dynamic vocabulary = fixed_vocab + ocr_tokens
answer_scores = MLP(features) # scores for all candidates
return argmax(answer_scores)
첫 단계에서는 Faster R-CNN으로 이미지의 객체 영역들을 추출한다. 각 영역은 2048차원의 특징 벡터로 표현된다. 동시에 별도의 OCR 엔진(Rosetta)을 사용해 이미지에서 텍스트를 추출한다.
두 번째로, 추출된 OCR 토큰들을 FastText로 임베딩한다. 이는 OCR의 철자 오류에 어느 정도 강건하게 만들어준다. 예를 들어 "STOP"이 "ST0P"으로 잘못 인식되어도 유사한 임베딩을 가질 수 있다.
세 번째는 멀티모달 융합이다. 질문을 기준으로 시각적 특징과 OCR 특징에 각각 어텐션을 적용한다. 이를 통해 질문과 관련된 이미지 영역과 텍스트에 집중할 수 있다.
마지막으로 동적 어휘(dynamic vocabulary)를 구성한다. 기존의 고정된 답변 세트에 현재 이미지에서 검출된 OCR 토큰들을 추가하여, 이 중에서 답을 선택한다.
> 이 구조에서 아쉬운 점은 OCR 토큰의 위치 정보를 제대로 활용하지 못한다는 것이다. 텍스트가 이미지의 어느 위치에 있는지는 매우 중요한 정보인데, 단순히 텍스트 내용만 사용하고 있다.
접근 방법의 특징 및 설계 의도 (Design Choices)
LoRRA 모델의 주요 설계 선택들을 살펴보면 저자들의 의도를 더 잘 이해할 수 있다.
동적 어휘 사용은 가장 중요한 설계 선택이다. 일반적인 VQA에서는 학습 데이터에서 자주 나타나는 답변들로 고정된 어휘를 만든다. 하지만 텍스트는 무한히 다양할 수 있어서 이 방식이 통하지 않는다. 대신 각 이미지마다 OCR 결과를 답변 후보에 추가하는 방식으로 이 문제를 해결했다. 단, 이는 OCR이 실패하면 정답을 낼 수 없다는 근본적 한계를 안고 있다.
복사 메커니즘(Copy Mechanism)의 도입도 흥미롭다. 모델은 고정 어휘에서 답을 생성할지, OCR 토큰을 복사할지 선택할 수 있다. 이는 "빨간색"처럼 일반적인 답변과 "SAMSUNG"처럼 텍스트를 읽어야 하는 답변을 모두 처리할 수 있게 한다.
멀티모달 어텐션은 시각 정보와 텍스트 정보를 효과적으로 연결하려는 시도다. 하지만 실제 구현을 보면 두 모달리티가 충분히 상호작용하지 못하고 있다. 시각적 어텐션과 OCR 어텐션이 별도로 계산되고 단순 연결되는 수준이다.
> 저자들은 이런 설계 선택들에 대한 ablation study를 제공하지만, 정작 가장 중요한 "OCR 품질이 전체 성능에 미치는 영향"은 제대로 분석하지 않았다. OCR이 완벽하다면 얼마나 성능이 올라갈까? 이런 분석이 있었다면 모델의 진짜 병목이 어디인지 알 수 있었을 것이다.
실험 결과 분석
TextVQA 데이터셋에서의 실험 결과는 이 문제의 어려움을 잘 보여준다. 인간의 정확도가 85.02%인 반면, 당시 최고 성능 모델인 LoRRA는 26.56%에 그쳤다. 이는 거의 60%의 성능 격차로, 해결해야 할 과제가 많음을 시사한다.
주목할 만한 것은 OCR 토큰 없이는 성능이 17.23%로 떨어진다는 점이다. 이는 순수한 시각적 특징만으로는 텍스트를 읽기 어렵다는 것을 확인시켜준다. 반면 OCR 토큰만 사용했을 때도 성능이 제한적인데, 이는 단순히 텍스트를 검출하는 것과 맥락에 맞게 선택하는 것이 다른 문제임을 보여준다.
오류 분석을 보면 몇 가지 패턴이 드러난다. OCR이 텍스트를 아예 검출하지 못한 경우가 35%, 검출은 했지만 잘못 읽은 경우가 20%, 여러 텍스트 중 잘못된 것을 선택한 경우가 25%를 차지했다. 이는 OCR 성능 향상과 더불어 문맥 이해 능력도 크게 개선되어야 함을 의미한다.
> 실험 설계에서 아쉬운 점은 다른 OCR 엔진들과의 비교가 없다는 것이다. Rosetta 외에 Google Vision API, Tesseract 등 다른 OCR을 사용했을 때의 성능 변화를 보여줬다면, OCR 의존성을 더 명확히 파악할 수 있었을 것이다.
총평: 개인적 해석과 후속 연구 방향
TextVQA는 문제 정의와 벤치마크 구축 측면에서 중요한 기여를 했다. 이미지 속 텍스트 이해라는, 실용적이면서도 도전적인 문제를 학계에 제시하고 이를 평가할 수 있는 환경을 만들었다. 이후 많은 연구들이 이 벤치마크를 기반으로 발전했다는 점에서 그 가치는 충분하다.
하지만 제안된 모델 자체는 한계가 명확하다. OCR에 대한 과도한 의존, 텍스트의 공간적 정보 미활용, 제한적인 멀티모달 융합 등이 주요 약점이다. 특히 "읽기"를 OCR에 완전히 위임하고 "추론"만 담당하는 구조는, 진정한 의미의 end-to-end 텍스트 이해와는 거리가 있다.
실무 적용 관점에서 보면, 이 접근법은 OCR 품질이 보장되는 환경(예: 깨끗한 문서 이미지)에서는 유용할 수 있다. 하지만 실제 환경의 복잡한 이미지들(흐릿한 간판, 휘어진 텍스트, 장식적 폰트 등)에서는 성능이 크게 떨어질 것으로 예상된다.
만약 이 연구를 발전시킨다면, 다음과 같은 방향을 고려해볼 수 있을 것이다. 첫째, 텍스트 검출과 인식을 모델 내부에 통합하여 진정한 end-to-end 학습을 시도해볼 수 있다. 최근의 Vision Transformer 같은 아키텍처는 이런 통합에 더 적합할 수 있다. 둘째, 텍스트의 공간적 위치와 시각적 맥락을 명시적으로 모델링해야 한다. 텍스트가 어느 객체에 속하는지, 주변에 무엇이 있는지는 중요한 단서가 된다. 셋째, 약한 지도 학습(weak supervision)을 활용해 OCR 라벨 없이도 텍스트 읽기를 학습할 수 있는 방법을 탐구할 필요가 있다.
최근 GPT-4V 같은 대규모 비전-언어 모델들이 이미지 속 텍스트를 자연스럽게 읽고 이해하는 것을 보면, TextVQA가 제시한 문제는 어느 정도 해결되고 있는 것으로 보인다. 하지만 이런 거대 모델들이 어떻게 텍스트 읽기 능력을 획득했는지는 여전히 명확하지 않다. TextVQA가 시작한 이 여정은 아직 끝나지 않았다.