Show and Tell : A Neural Image Caption Generator - 논문리뷰

govlKH·2023년 9월 24일
0

논문리뷰

목록 보기
29/45

Show and Tell : A Neural Image Caption Generator

Image Caption Generate?
이미지의 형태를 text로 문장을 생성하는 기술!

Show and Tell : A Neural Image Caption Generator

쉽게 말하자면 CNN net을 통해 이미지 특징을 추출 후 RNN을 거쳐 문장을 생성하는 것!

본 논문엣는 이미지 캡셔닝을 이미지를 번역하는 것으로 보았습니다.


전반적 설명

즉, 기존의 기계번역 task를 이미지 번역 task로 비슷하게 보았습니다.
여기서 input image를 I, output text를 S라고 했을 때, likelihood(가능도) P(S|I)를 maximize하는 문제로 정의하였습니다.

기존 기계 번역에서는 input Sourse가 들어왔을 때, output Target으로 번역하는 P(T|S)를 maximize하는 방법을 사용하였습니다. 여기서 input Source sentence를 인코더로 압축하여 고정된 크기의 context vector로 만든 후 디코더로 보내 문장을 생성하는 방향으로 흘러갔습니다.

=> 이번에는 input이 image가 들어오기에 CNN net을 통해 인코더에서 이미지 특징을 추출했다고 할 수 있습니다.

인코더에서 사용하는 CNN net은 Resnet, GooglNet 등을 활용할 수 있습니다.
하나의 image에 대해 feature tensor를 뽑아서 vector형태로 바꾼 후 fixed size인 context vector를 만들어 이를 사용하겠다는 것 입니다.

BUT!! 지금은 attention, transformer가 많이 활용되기에 고정된 fixed vecotr를 뽑는 형식은 사용하지 않지만, 이 당시에는 이러한 메소드가 가장 성능이 잘 나오는 기술이었습니다.

Formulation

하나의 이미지를 설명으로 번역하는 작업에 비유할 수 있습니다.
아래의 Θ는 네트워크 파라미터가 있을 때, I가 주어졌을 때 log likelihood를 maximize하는 방향으로 파라미터를 업데이트 하여 최적의 파라미터를 찾습니다.

이는 기존 machine translation의 목적함수와 비슷하지만 input이 I로 image로 바뀌었다는 것만 차이가 있습니다.

이렇게 optimal parameters를 찾고 이를 기반으로 연쇄적으로 sentence를 찾아갑니다.

NIC : Neural Image Caption Architecture

하나의 image가 들어왔을 떄, 이를 CNN net을 거쳐 context vector로 변형합니다. 이를 LSTM에 초기값으로 넣고 매번 생성된 단어들을 새로운 input으로 넣어가며 lstm을 거쳐 text generate하는 과정입니다.

본 논문에서는 LSTM을 활용한 Seq2Seq와 유사한 아키텍쳐를 사용합니다.

하지만 2015년도 attention mechanism 이 나온 뒤에는 transformer를 활용하여 입력 시퀀스 전체에서 정보를 추출하는 방향으로 발전하였습니다.

Generation Results

아래는 대표적인 성과지표 BLUE를 통해 평가한 결과입니다. NIC의 성능이 굉장히 우수하게 나왔습니다. 사람에 필적할 정도로 score가 나옴을 볼 수 있습니다.

하지만 본 논문에서는 사람에 필적할 정도는 아니라고 이야기 하고 있습니다. 실제로 위와 같이 BLUE score는 좋은 성능을 보이지만, 이 metric 자체가 불안정합니다. 또한 실제로 사람이 점수로 평가해 보았을 때는 실제 정답 GT에 비하면 점수가 매우 낮음을 볼 수 있습니다.

후속 연구 : Neural Image Caption Generation with Visual Attention

(Seq2Seq with Attention)
위에서 언급한 고정된 크기를 극복한 Attention mechanism을 활용한 우수한 방법이 후속으로 진행되었습니다. 즉, 디코더는 인코더의 모든 출력을 참고하는 것 입니다.

이를 사용한다면 explainable하게 사용 가능하다는 장점도 존재합니다.


참고 : https://www.youtube.com/watch?v=yfsFW-mfOEY

profile
수학과 대학원생. 한 걸음씩 꾸준히

0개의 댓글