꺼내먹는지식 준

Multi modal learning 본문

AI/CV

Multi modal learning

알 수 없는 사용자 2022. 3. 17. 03:30

서로 다른 데이터로 동시에 학습 

 

Overview of multi-model learning 

다양한 특성 갖는 데이터 사용 해서 학습 

 

데이터의 표현 방법이 다르다. 

 

2D, 3D, embedding vector 

modality에서 오는 정보의 양도 unbalance 

one to many matching 

 

model로 학습 할 때, 여러 모달리트를 공평하게 참조해서 좋은 학습 결과를 출력하는 것이 어렵다. 

많은 정보를 주는 것이 오히려 방해가 될 수도 (학습 방법의 한계)

트레이닝이 잘 안되어서 쉬운 모달리티에 의존하고 어려운건 무시해버리기도 한다. 

예를 들면 어떤 행동 이미지와 사운드가 주어질 때, 

보통의 행동은 이미지만으로도 판별이 가능하고, 가끔 소리지르거나 노래부르는 행동 때 사운드 정보가 필요하면 

모델은 보통 이미지만으로도 가능한데..? 이러고 소리를 아예 참고하지 않을 수도 있다.

 

그러나 별개로 이 방법론은 참 중요하고, 많은 잠재력이 있다. 

 

 

 

Matching 

 

Visual data & Text

 

1) text embedding 

 

word level unit의 embedding (Dense vector)

dense embedding은 일반화 능력이 있다. (man woman , king queen)

 

word2vec skip-gram model 

$x_k$의 하나하나가 word 

주변의 n개의 word 를 학습하는 방법을 통해 학습 

 

Matching을 위한 joint embedding 

Image tagging 

img $\rightarrow$ tag 

tag $\rightarrow$ img

 

구현법 pretrained 된 uni modal model들을 합친다. 

text를 하나의 d dimension fixed feature vector 로 표현, image도 d dimension fixed feature vector 로 표현

똑같은 vector 크기를 맞춰준 것이 굉장히 중요 

호환성을 위해 joint embedding space를 학습 

simliarity 가 유지된다던지, 비슷한 것 꺼리는 가까운 distance, 다른 것 끼리는 먼 distance .. 

 

Joint embedding space 학습 방법 

같은 embedding space에 mapping을 하고, 각 embedding 간의 distance 를 줄이는 방향으로 학습 

text하고 image는 maching 되지 않은 pair이다. 

matching 여부에 따라 두개의 distance를 결정짓는 penalty 를 주는 방법으로 학습 

이러한 방식으로 학습된 공간은 visual-semantic embedding space로 학습이 된다. 

이런 식으로 distance 기반으로 학습하는 것을 metric learning 이라 한다. 

 

학습 후 재밌는 property 가 생긴다. 

놀랍게도, 학습된 임배딩은 visual과 text 데이터의 관계의 anology 가 학습 된다. 

 

Image Food recipe retrieval  $\rightarrow$ 해당 논문은 추후 직접 구현해보자. 

질의 이미지로 이미지를 넣어줬을 때, 이 이미지를 어떻게 만들었는지 알려주는 recipe 와 연결을 해준다.

물론 반대로 이미지를 넣어줬을 때 joint embedding을 학습하는 것도 가능하다. 

TEXT

Recipe 학습 

  • ingrid ients-encoder에는 재료를 input으로 
  • instructions-encoder에는 조리법을 input으로 하여 정보를 넣은 후, 
  • 같은 크기의 dimension을 맞춰 내보낸 후 concat하여 fixed dimensional vector로 만든다. 

Image

  • CNN backbone network로 사진 학습 
  • TEXT와 동일한 최종 output의 dimension을 맞춰준다. 

그 후, 

  • Cosine simliarity loss를 통해 image와 recipe가 연관이 되면 similarity 가 높게, 낮으면 낮게 loss를 사용해서 학습한다. 
  • Semantic regularization loss High-level semantics으로 cosine simliarity loss로 해결되지 않는 부분을 해결  (전체 정보중에서 일부 정보라도 catch했으면 좋겠다는 느낌에서 넣은 loss) 

 

 

Visual data & Text 

Cross modal - Image captioning 

이미지가 주어지면 제일 잘 설명하는 text description 생성 

이미지를 sentence로 변환하는 문제 

이미지를 input으로 다루기 좋은 CNN 

sentence 출력 RNN 

CNN $\rightarrow$ feature map $\rightarrow$ FC Layers $\rightarrow$ RNN 

 

이 방법론은 show and tell이라고 한다. 

 

굉장히 간단한 구조 

ImageNet 으로 학습된 featuremap LSTM 에 들어가고 LSTM 에서는 시작 token ~ 출력

 

Show, attend, and tell 

Attention 이 추가 된 것  

fixed dimensional vector 하나로만 출력을 하는 것이 아니라, 

  • 공간정보를 유지하고 있는 14 X 14 featured map 으로 출력하고 RNN 에 넣어준다. 
  • RNN은 반복해서 하나의 워드를 생성할 때 마다 14 X 14를 다시 referencing을 해서 
  • 그 때 어떤 단어를 출력하고 어디를 reference하는지 예측하며 생성 

좀 더 자세히 살펴보자. 

referencing 할 때 어디를 attend 해야 할지가 골자 

사람들의 시선 경로를 recoding 해보면, 얼굴을 다음의 이미지 같이 특징 점들을 먼저 훑게 된다. 

이걸 머신러닝 기법으로 만들어준 것이 바로 attention 매커니즘이다. \

간단하게 작성해보면 feature map을 RNN 에 넣어서 attention 되는 곳을 파악하고, feature map과 attention 된 것(probability로 이해를 하자)을 inner product(weighted sum)를 통해서 (활성이 된 곳일 수록 높은 값) z라는 벡터를 만든다. 

https://comlini8-8.tistory.com/37

 

Computer vision 분야에서의 Self-Attention

https://towardsdatascience.com/self-attention-in-computer-vision-2782727021f6 Self-Attention In Computer Vision Using the attention mechanism as the building block in computer vision models towardsd..

comlini8-8.tistory.com

Show atten and tell 기법이 잘은 이해가 안되는데, 이건 attention에 대한 이해가 부족해서이다. 

내용을 간략하게 정리해보면, 

feature map 을 lstm에 넣어서 s1 이라는 soft attention map 을 얻고 그걸 feature 에 적용한 후 h1 에 출력 단어와 같이 입력으로 넣어서 다음 soft attention map 을 출력하고 동시에 출력 단어도 뽑아낸다. 이러한 과정을 반복한다. 

 

반대로 

text to image by generative model 

텍스트가 주어졌을 때 상상할 수 있는 것은 다양하다. 

one to many mapping! 

$\rightarrow$ generative model 이 필요하다! 

텍스트 전체를 fixed dimensional vector 로 생성 

fixed dimensional vector에 일부를 gaussian random을 붙여준다. 

똑같은 input에 똑같은 output이 나오지 않도록 

 

condition 정보, input 정보, sentence 정보가 generate 에 들어간다. 

 

decoder를 거쳐서 image 형태로 생성 

 

discriminator 는 이미지가 생성 된게 input으로 들어오면 encoder 부분을 통과하여 low dimension 한 spatial 한 정보를 뽑아내고  그 후 sentence 정보를 더해서 입력 사진이 true 인지 가짜인지를 학습 이를 통해 conditional gan 학습 

다른 modality를 참조하여 결론을 도출하는 reasoning task의 하나 

visual question answering 

영상이 주어지고, 질문이 주어지면 답을 도출

image stream: pretrained 된 neural net을 사용해서 마찬가지로 fixed dimensional vector 로 출력 

question stream: text sequence RNN encoding $\rightarrow$ fixed dimensional vector

 

두개의 fixed dimensional vector 를 point-wise multiplication (하나의 joint embedding space격)

그 후 넘겨주고 end-to-end training을 한다. 

 

Visual data & Audio 

sound data 표현 법 

신호처리 관련은 전에 naver blog에 정리한 이력이 있어서 url을 남긴다. 

https://blog.naver.com/ha_junv

 

까먹을때 빨리 기억나려고 작성하는 블로그 : 네이버 블로그

자기소개가 없습니다.

blog.naver.com

 

Sound Tagging 

sound 를 통해 현재 sound가 어디에서 일어나고 있는 건지 파악해서 현재의 이미지를 인식

 

SoundNet 2016 

오디오의 표현을 어떻게 학습할지 방법론 제시 

비디오만 잔뜩 주어진 데이터셋을 가지고, labeling을 사용하지 않고 기존의 pretrained 된 visual recognition model사용 

video의 frame 을 넣는다. imageNet CNN은 object가 뭐가 들어있나 분포 출력

PlaceCNN 지금 비디오가 어떤 장면에서 촬영되는지 scence 분포 출력 

video는 주로 audio 를 동반 

audio 를 raw wave form 으로 추출해서 CNN 구조에다가 넣어준다.  (1D) 마지막 단에서 두개로 분리 

첫번째 것은 Scene 분포, 즉 place recognition 할 수 있도록 따라하도록 함 (KL divergence minimize)

두번째 것은 object recognition 을 할 수 있도록 따라하도록 함 (KL divergence minimize)

학습할 때는 sound branch쪽이 학습되고 

visual branch 쪽은 fix 

Teacher Student 학습법 (Visual Knowledege to Sound)

Spectrogram을 안쓰고 wave form을 썼다. (spectrogram이 더 좋은지 아마 몰랐을 것)

 

학습된 네트워크를 우리가 원하는 target task 에 응용할 수도 있다. 

이때는 pool5 의 feature를 사용 

 

 

Speech2Face

voice 를 듣고 얼굴을 상상해내는 model 

spectogram이 input으로 들어가고 fixed dimensional vector가 들어오면 face decoder로 넘어가서 얼굴을 construct한다. 

VGG의 face recognition model 사용 

얼굴 이미지가 들어오면 fixed dimensional vector로 표현 

face decoder미리 학습 (face feature가 들어오면 정면의 무표정 이미지 reconstruct)

 

학습

인터뷰 비디오를 보면 그사람의 얼굴과 음성이 한번에 들어있다.

이것을 이용해서 face recognition network에 input으로 넣어서 face feature을 먼저 뽑는다. 

그 후 학습하고 싶어하는 speech to face model을 통과시켜서 fixed dimensional vector를 뽑는다. 

face feature 과 voice feature가 호환되도록 학습 (metric learning)

 

Speech feature에서 face feature를 따라하도록 teacher student 네트워크 형태로 학습 진행 

translation application이지만 joint embedding learning 을 응용 한 것 

face decoder는 face feature에 호환이 되도록 미리 학습이 되었기 때문에 추가적인 학습 없이 voice encoder에서 출력되는 feature 가 face feature하고 호환이 되면 face decoder에 바로 넣어서 face reconstruction  

 

--> self supervised learning 기법 

 

image to speech

이미지 넣으면 스피치 출력 

사람의 소리와 이미지를 input으로 주면 localize를 하는 것 

3D image와 결합해서 소리가 나는 위치를 localize해주면 어떨까? 

image frame, audio 가 input으로 제공 

출력은 localization score

 

'AI > CV' 카테고리의 다른 글

YOLO v3  (0) 2022.03.19
3D Understanding  (0) 2022.03.17
Conditional generative model  (0) 2022.03.16
Instance segmentation, Panoptic segmentation  (0) 2022.03.14
Object Detection 개괄 from selective search to SSD  (0) 2022.03.13
Comments