Multi modal tasks I (Visual data & Text)

Multi-modal tasks I (Visual data & Text)


✅ Multi-modal learning Overview

  • 큰 의미에서 Mult-modal learning이라는 것은 다양한 데이터 타입, 데이터 형태, 다양한 특성을 갖는 데이터를 사용하는 학습법을 의미한다.
  • 서로 다른 데이터를 이용해서 학습을 하는 것이다.

1️⃣ Multi-modal learning의 어려움

📌 데이터 표현 방법이 매우 다양하다.

image.png

📌 feature spaces간 Unbalance하다.

image.png

  • 우리가 Text로 아보카도 모양의 의자를 찾아 달라고 할 때
  • 이런 shape를 가지는 의자의 형태는 Image데이터에 대해서 많이 존재 한다.
  • 1:N 매칭이다. 그 반대도 마찬가지이다.

📌 특정 modality에 편향된 Model이 만들어 질 수 있다.

image.png

  • 모든 modality를 공평하게 참조를 해서 더 좋은 학습 결과를 출력이 목표이다.
  • 하지만 그게 아니라 modality를 더 많이 써서 정보를 더 많이 주는 것이 방해가 될 때가 있다.
  • 모델을 학습하는 방법의 한계 때문이다. 학습 과정에서 쉬운 데이터를 더 많이 쓰는 방향으로 학습이 이뤄지기 때문이다.



✍ 이제 Text 데이터에 대한 특징들을 살펴 보자. 자세한 내용 그 전 포스팅 활용


✅ Text embedding

image.png


1️⃣ Word2vec: Skip-Gram model

image.png



✅ Joint embedding

1️⃣ Image tagging

image.png

  • 주어진 이미지의 태그를 생성하고 태그 키워드로 이미지를 검색 할 수도 있다.


💡 구현 방법

image.png

  • 미리 학습된 unimodal model들을 합쳐준다.


image.png

  • Text하고 Image가 주어 졌을 때 같은 embedding 공간에 mapping을 해준다.
  • embedding간의 거리를 줄이는 방향으로 학습이 진행된다.


image.png

  • 흥미롭게도 학습 된 임베딩은 시각적 데이터와 텍스트 데이터 간의 유사 관계를 유지한다.
  • 위 예시 처럼 개 이미지 embedding에 Text embedding인 dog를 빼고 cat를 추가하면 오른쪽 그림이 결과로 나온다.



2️⃣ Image & food recipe retrieval

image.png

  • 이미지를 넣어 줬을 때 해당 이미지의 레시피를 출력으로 가진다.
  • 반대로 레시피를 넣으면 이미지가 출력이 가능하다.


💡 구현 방법

image.png

  • 위의 Image tagging은 word를 사용했지만 레시피는 순서가 있고 Text이다.
  • ingredients-encoder를 통해서 하나의 fixed vector를 만들고 마찬가지로 instructions-encoder로 vector를 만든다. 두 vector를 concatenation을 해 Text를 대표하는 embedding vector가 된다.
  • image는 CNN backbone Network를 통해서 하나의 feature map을 만든다.
  • 이 대표하는 두 vector는 같은 차원을 가지고 있어야 한다. cosine similarity을 이용하여 연관성을 가지게 한다.
  • 또한 semantic regularization을 사용하여 보완한다.



✅ Cross modal translation

1️⃣ Image captioning

image.png

  • 이미지가 주어지면 이미지를 잘 설명하는 text description 생성
  • image-to-sentence


💡 구현 방법

Encoder: ImageNet으로 미리 학습된 CNN model

image.png

Decoder: LSTM module

image.png


2️⃣ Show, attend, and tell

image.png

  • Convolutional Feature map을 뽑기 위해서 CNN에 넣어 준다.
  • 여기서 다른 점은 fixed dimensional vector로 하나로 출력하는 것이 아니라 14x14의 공간정보를 유지하고 있는 feature map 형태로 출력을 한다.
  • 그 다음 이 feature map을 RNN에 넣어준다. RNN은 반복해서 하나의 word를 생성할 때 마다 이 14x14의 feature map을 참조하여 예측을 하여 단어를 생성한다.


📌 Soft Attention

image.png

CNN을 거쳐 나온 Feature map을 RNN에 넣고 RNN을 통해서 Attention을 구하게 된다. 구한 Attention과 원래의 Feature map을 가중치 합을 통해서 결과를 도출해 낸다.



📌 전체적인 설계 과정

image.png

1. 이미지를 넣으면 공간정보가 남은 Feature를 뽑게 된다.
2. 그 다음 그 Feature map을 LSTM에 입력으로 넣어준다.
3. 그러면 어느 부분을 Attention할지 spartial attention인 s1을 출력하게 된다.
4. s1과 Feature map을 내적하여 가중치 합을 계산하여 z1을 만든다.



image.png

5. z1을 다음 LSTM step에 condition으로 넣어주게 되고 그 다음 Start word token인 y1을 넣어주게 된다.



image.png

6. 그렇게 참조하여 만들어진 값은 "A"가 될 것이다. h1에서 다음은 어디를 참조할 것인지(s2)를 같이 출력하게 된다.



image.png

7. 위에서 출력한 s2와 Feature를 내적하여 z2를 만들어주고 condition으로 넣어주고 예측한 단어인 "A"(y2)을 넣어서 다음 단어를 예측하게 한다. 8. 이 과정을 반복하여 문장을 완성한다.



3️⃣ Text-to-image by generative model

image.png

  • Text가 주어졌을 때 우리가 상상하는 이미지는 단 하나의 unique한 영상을 가지진 않는다.
  • 1:N mapping 관계이고 이런 관계에서 꼭 필요한 것이 generative model이다.


💡 구현 방법

image.png

Generator Network

  • 먼저 Text를 Fixed dimension vector를 만든다.
  • 여기에 일부 Gaussian random code를 붙여 준다. 이 코드의 역할은 outpu결과가 똑같은 input이 들어갔을 때 항상 똑같은 output이 나오는 것을 방지해 준다. 다양한 output이 나오게 해준다.

Discriminator Network

  • 이미지는 encoder를 거친다.
  • 그 다음 문장에서 썼던 정보를 같이 넣어주어서 판단할 수 있게 학습시킨다.



✅ Cross modal reasoning

1️⃣ Visual question answering

📌 Multiple streams

image.png

  • 영상이 주어지고 질문이 주어지면 답을 도출해 내는 Task이다.

📌 Joint embedding

image.png

  • Fixed dimension vector로 나온 2개의 값을 Poin-wise multiplication해서 2개의 embedding feature가 서로 상호작용을 할 수 있게 만든다.
  • 그 다음 end-to-end training을 진행한다.

'AI > 이론' 카테고리의 다른 글

Multi-modal tasks II (Visual data & Audio)  (0) 2021.03.12
Panoptic segmentation  (0) 2021.03.11
Instance segmentation  (0) 2021.03.11
Conditional generative model  (0) 2021.03.11
torch.autograd  (0) 2021.03.10
Object Detection  (0) 2021.03.10
Semantic segmentation  (0) 2021.03.09
Image classification II  (0) 2021.03.09

+ Recent posts