이번에 리뷰할 논문은 2015년 CVPR에 게시된 Show and Tell: A Neural Image Caption Generator로, Image Caption 모델을 소개하고 있다.
Image Caption
Image Caption은 말 그대로 Image에 대한 Caption을 생성해내는 방법이다. 즉, 모델의 Input은 Image data가 되고, Output은 Text data가 된다.
본 논문에서 소개하는 Image Caption 모델은 NIC(Neural Image Caption)으로 Neural Network(CNN, RNN)를 이용하여 Image를 충분히 설명하는 Caption을 생성하는 모델이다. 지금부터 어떤 방법으로 Image Caption에 접근하는지, 설명하고 있는 모델 구조는 어떻게 되는지 살펴보도록 하자.
Image Translation
Image를 충분히 설명하고 있는 Text를 생성한다는 건 바꿔 말해 Image를 번역한다고 생각할 수 있다. 이때 Machine Translation 개념을 가져와 생각해보자. 본 논문이 나왔을 당시, 대개의 번역 모델은 Neural Network RNN 2개가 연결된 구조인 Sequence to Sequence를 사용했다. 이 모델은 어떠한 Input Sequence를 받으면 후보 Output Sequence를 출력하게 되고 그 중 Input과 가장 유사한 Output을 최종 출력으로 선택한다.
이와 마찬가지로, Image Caption을 생성하는 작업을 Image를 번역하는 작업으로 비추어 생각해본다면 해당 문제는 Image $I$와 가장 유사한 Sentence $S$를 찾는 문제로 정의할 수 있다. → $\text{Likelihood} P(S|I)$를 최대화시키자!
Model Architecture
Machine Translation에서 사용되는 Seq2Seq 모델 구조는 다음과 같다. 2개의 RNN이 연결된 Encoder-Decoder 구조로, Encoder에선 Input Data를 고정된 Vector로 변환하고 Decoder에선 변환된 Vector를 입력으로 사용해 새로운 Output Data를 생성해낸다. 당연하게도 이 모델에선 Input과 Output 모두 Text Data 이므로 RNN 계열 모델을 사용한다.
Show and Tell에서 소개하는 모델 NIC는 위 구조의 형태를 그대로 가져와 사용한다. 다른 점이 있다면, Input Data가 Text가 아닌 Image이기 때문에 RNN 대신 CNN을 사용한다는 것이다.
좀 더 자세히 살펴보면 Input Image Data가 CNN에 들어오면 feature vector를 출력하게 되고 이를 Linear하게 펼쳐 1차원 vector로 변환한다. 이렇게 1차원으로 길게 늘어뜨러진 vector를 RNN의 입력으로 사용해 Image에 해당하는 Caption을 생성하게 되는 것이다. 본 논문에선 CNN은 GoogleNet을, RNN은 LSTM을 사용해주었다.
Training
Goal
학습 목표는 명확하다. Input Image를 가장 잘 설명하는 Output Sentence를 찾는 것. 이때, Output $S$의 길이는 가변적이며, 다음과 같이 Chain Rule을 사용해 $S_0$부터 $S_n$까지의 공통된 확률값을 찾아야 한다.
Loss Function
Loss 값은 LSTM의 매 time step에서 target date의 음의 log likelihood 합으로 계산된다.
Inference
Image와 가장 유사한, 정답과 가장 비슷한 단어를 찾는 방법으로는 Beam Search를 사용한다. Beam Search는 Decoder의 매 time step에서 미리 정의한 $k$(Beam Size)개 만큼 후보 값을 출력하고, 그 후보 값에서 다시 $k$개의 후보를 출력한다. 이렇게 나온 후보 값들을 조합한 결과 중 score 값이 가장 큰 값을 최종 결과로 선택하는 방법이다.
Result
Quantity
먼저 살펴볼 것은 여러 Metric을 사용한 정량적 평가이다.
해당 표를 통해 논문에서 제시한 NIC 모델과 다른 모델 간 비교한 결과 여러 Metric에서 좋은 성능을 보였고, 특히 BLEU-4 Score의 경우 사람과 대응할 정도로 좋은 성능을 보인다는 걸 알 수 있다.
다음으로 나타난 표는 여러 방법론들의 BLEU-1 Score와 NIC의 BLEU-1 Score를 비교한 결과로, 여러 데이터셋을 가지고 실험한 결과 SOTA 모델을 월등히 앞지른 성능을 보이며 사람과 비교했을 때도 (더 좋은 성능을 보이진 못하지만) 꽤 유사한 성능을 보인다는 걸 확인할 수 있다.
Quality
정량적 평가에 국한하지 않고 사람이 직접 모델 결과를 확인하며 기준에 맞게 점수를 부여하는 정성적 평가도 진행했다고 한다.
1점에서 4점까지 기준을 두어 평가한 결과, Groud Truth에 비해 성능이 훨씬 낮다는 것을 확인할 수 있다. 그럼에도 불구하고 기존에 제안되었던 모델들보다 높은 성능을 보이는 모델이라는 점에서 충분히 의미있는 모델이라고 바라볼 수 있다.
<Human Evaluation 기준>
• 4점 : Describes without errors
• 3점 : Describes with minor error
• 2점 : Somewhat related to the image
• 1점 : Unrelated to the image
Conclusion
본 논문에선 image를 encoding하는 CNN과 image를 설명하는 문장을 생성하는 RNN을 연결한 구조인 NIC image caption 모델을 설명한다. Sequence to Sequence를 변형하여 Image Caption을 만드는 데 사용되는 걸 보니 이렇게도 사용이 되었구나 알 수 있어 많은 도움이 되었다.
다음에 리뷰할 논문은 Attention is all you need로 Attention Mechanism을 활용해 Sequence Data를 처리하는 Transformer에 대해 공부하려 한다.
'📒 Jero's Review > Paper' 카테고리의 다른 글
Three Scenarios for Continual Learning (0) | 2024.06.12 |
---|---|
Attention Is All You Need (0) | 2024.05.25 |
Sequence to Sequence Learning with Neural Network (0) | 2024.05.04 |