네이버 부스트캠프 학습 정리/5주차

[CV basic] Multi-modal

AI쟁이J 2023. 4. 9. 19:34

Multi - modal

인간의 지각 능력 (시각, 청각, 후각, 촉각 등)의 여러 지각 능력에서 각 다른 지각의 특성을 갖는 데이터들을 함께 이용해서 학습한 모델을 의미한다.

Text data를 사용해 Image를 분류할 수 있는 모델이나, 반대로 Image data를 사용해 그 image를 설명하는 text를 생성하는 모델 등이 해당된다.

하지만 이런 멀티 모달은 학습하기 어려운 특징이 있다. 각 데이터의 유형마다 가지고 있는 정보가 다르기 때문에 정보의 양 뿐만 아니라 feature space 역시 다 다르기 때문에 유형마다의 차이가 크기에 합쳐서 표현할 방법이 필요하다.

 

멀티 모달의 여러 유형마다 데이터의 난이도, 편향등이 다르기 때문에 같은 비율의 데이터를 사용해 학습을 진행하는 경우

결과로 한 쪽의 모달에 편향된 결과가 되어 poor training이 될 수 있다.

 

Visual & Text data

Text embedding

자연어 처리를 위한 방법론. 각 단어의 토큰화를 통해 생성된 각각의 단어를 토큰이라고 명칭한다.

먼저 각 단어에 대한 one - hot encoding을 진행한다. 모든 데이터를 0과 1로 처리하는 컴퓨터의 특성상 자연어의 기본 단위인 언어를 수치형 데이터로 표현한다.

하지만 이를 단어 간의 유사도를 표현할 수는 없다. 따라서 word embedding을 수행해야 한다.

 

Word2Vec

데이터에 등장하는 모든 단어들을 학습 후 단어들 간의 관계를 파악해 차원으로 나타내는 방법론이다. 분포 가설에 맞춰 예를 들어 '강아지' 라는 단어가 '귀엽다' '예쁘다' 같은 단어와 자주 등장하는 경우 이 빈도를 반영한 dense vector로 이 단어들에 대한 벡터화를 진행하면 '강아지' '귀엽다' '예쁘다' 세 단어의 벡터값은 유사하게 나온다. 이런 방법을 통해 의미적으로 가까운 관계를 표현할 수 있다.

text embedding 후 word2vec를 사용한 관계도 매핑 과정

 

Joint embedding - matching

text data를 관계도를 표현할 수 있는 vector로 표현 후 이를 image data와 합쳐야 한다.

이 역시 embedding vector를 학습해서 진행한다.

위 그림에서 Text data / Image data는 각각 Word counts, Feature map 등의 처리를 거쳐 Gaussian model과 Replicated softmax등의 함수를 거쳐 이미지 차원과 텍스트 차원의 유사도를 포함한 Joint embedding을 진행한다.

유사한 텍스트와 이미지는 가깝게, 유사도가 떨어지는 텍스트와 이미지는 서로 먼 공간에 매핑한다.

 

이런 작업을 통해 dog 이미지에서 dog 이라는 text를 빼고 cat이라는 text를 더하는 경우 Nearest images에 고양이 사진들을 학습하는 등 Image tagging이 가능하다.

 

Translating

이미지에 대한 텍스트가 상황까지 설명할 수 있는 심화된 기법.

주로 CNN을 통한 image 처리와 RNN을 통한 text 처리가 합쳐져 구성된다. 대표적인 모델로는 Show and tell이 있다.

 

Show and tell

Encoder : CNN

Decoder : LSTM

의 구조로 이루어진 모델.

CNN의 input image가 FC layer를 거치며 선형적 linear 결과값으로 나오기 때문에 이미지의 특징점을 잡을 수 있기 때문에CNN의 최종 output이 아닌 FC layer를 거친 Last hidden layer를 decoder의 input으로 넣어 LSTM을 통해 문장의 구조를 학습한다.

 

주어진 이미지 I에 대응하는 정확한 묘사 text (S)의 확률을 최대화하는 parameter theta를 구하는 것이 학습의 목표이다.

 여기서 이미지를 설명하는 답에 대한 확률은 고정된 수식이 아닌 Chain Rule에 따라 \(S_{0}, ...., S_{t-1}\)까지의 확률을 결합확률로 나타낸다. (이미지 I 에 대해 0번째 단어가 S0일 확률) x (이미지 I와 S0에 대해 1번째 단어가 S1일 확률) .... 

이후 Decoder의 LSTM 구조로 최종 결과를 추출한다.

 

Show, attend and tell

show and tell의 후속작으로 attend 개념을 추가했다.

구성은 Show and tell과 마찬가지로 input image에 대한 CNN encoder와 LSTM으로 이루어진 decoder에서 LSTM 과정에 attention 개념을 통해 이미지의 특정 부분에 집중하는 경향을 두어 word generation의 성능을 높였다.

attention을 통해 학습 과정에서 단어 생성 과정에서 이미지의 어디에 집중해서 볼 지 학습한다. 

Encoder의 CNN을 통해 H x W x 3의 이미지를 Feature map L x D로 축소해 인코딩한다. show and tell과 달리 attention 매커니즘을 통해 이미지의 공간 정보를 활용해야 하므로 FC layer가 아닌 convolutional feature map을 사용한다. 이후 Decoder에서는 인코딩 이미지를 보고 이미지의 설명 문장을 생성한다. LSTM을 활용해 각 스텝에서 반환된 단어가 다음 스텝의 입력으로 들어가고, 스텝 별 attention을 통한 이미지의 다른 부분을 집중한다.

Cross modal reasoning

 

Image stream과 Question stream을 통해 이미지 내의 상황에 대해 문제를 내면 이에 대해 대답하는 모델도 있다.

 

Visual data & Audio

audio data를 학습하기 위해선 spectogram 형태의 변환이 필요하다.

형태 변형에는 STFT(Short-time Fourier transform) 기법을 사용한다.

음성 신호를 짧은 시간으로 쪼개서 푸리에 변환을 사용하는 기법이다. 음성 신호의 경우 정해진 경향성이 없이 랜덤한 데이터이기 때문에, 통계적 관점으로 볼 필요가 있다. 따라서 긴 단위로 음성 신호를 나누는 경우 음성의 특성들이 랜덤하게 변하기 때문에 변환이 힘들다. 따라서 짧은 시간간격 안에서 stationary 하다는 가정을 통해 STFT를 진행한다.

 

Joint embedding - matching

SoundNet

같은 video 내에서 synchronized RGB frames를 통해 audio representation을 학습한다. 학습 과정에서는 

two pre-trained ImageNet을 통해 Teacher - student 학습 방법을 사용한다.

target task를 위해 pool5 feature를 통해 train을 진행한다. 훈련 과정에서 conv filter의 output layer 대신 pool5 feature를 사용하는 경우가 semantic info가 더 많다.

 

Translation

Speech2Face

self-supervised 방식을 사용해 feature matching loss를 사용하고 voice feature가 face feature를 흉내내도록 학습한다.

pre-trained 모델을 통해 face decoder를 통해 이미지를 생성한다.

 

Image-to-speech

위 모델과 반대로 image를 통해 speech를 생성하는 모델.

CNN을 통해 만들어진 feature map을 통해 show and tell 모델로 Unit 형태로 출력한다. 이후 이 spectogram을 통해 음성 데이터를 생성한다.

 

Cross modal reasoning

Sound source localization

영상에서 소리의 위치를 추정하는 작업

visual net / audio net 두 부분에서 각 결과를 통해 Attention model을 거쳐 이미지 내의 장소에 대한 localization score를 계산하고 visual net의 feature를 합해 output을 뽑아낸다. Loss의 계산에는 supervised loss, unsupervised metric learn.loss등 다양한 방법으로 loss를 계산할 수 있다.

 

 

 

 

 

 

 

 

 

 

Reference

https://velog.io/@a01152a/%EB%85%BC%EB%AC%B8-%EC%9D%BD%EA%B8%B0-%EB%B0%8F-%EA%B5%AC%ED%98%84-Image-Captioning

 

논문 읽기 및 구현 - Show and Tell: A Neural Image Caption Generator

CVPR 2015년도에 실린 논문지인 Show and Tell: A Neural Image Caption Generator를 참고하여 Image Captioning을 구현한다.위 그림처럼 어떤 이미지를 잘 설명해주는 문장을 만드는 것을 Image Captioning이라

velog.io

https://ardino.tistory.com/59

 

Show, Attend and Tell (Encoder, Decoder, Attention)

이번에 소개할 이미지 캡셔닝 논문은 2016년에 발표된 [Show, Attend and Tell: Neural Image Caption Generation with Visual Attention] 이다.이 논문은 6.2장에서 언급한 show and tell의 후속작으로 이전 논문에 Attention

ardino.tistory.com