코딩하는 해맑은 거북이
[컴퓨터비전] Multi-modal 본문
본 게시물의 내용은 '부스트캠프 AI Tech - CV (오태현)' 강의를 듣고 작성하였다.
해당 글은 아래의 3가지를 다룬다.
📌 Multi-modal learning
📌 Multi-modal learning - Visual data & Text
📌 Multi-modal learning - Visual data & Audio
📌 Multi-modal learning
Multi-modal learning은 다양한 타입, 형태, 특성을 가지는 서로 다른 데이터를 사용하는 학습법을 의미한다.
EX) 오감 중 1개만 사용하는 것을 Unimodal, 2개 이상 사용하는 것을 Multi-modal이라 한다.
- Multi-modal learning의 어려운점
- 서로 다른 modality의 데이터들은 표현 방식이 다르다.
- modality의 데이터들은 다른 modality의 데이터와 1:N matching으로 unbalance 하다.
- 여러 modality의 데이터를 모델에 학습시키지만, 해당 데이터들이 균형있게 잘 학습하는 것은 연구가 더 필요하다.
이러한 어려움에도 불구하고, Multi-modal learning은 중요한 문제이고, 기존의 문제를 해결할 수 있는 단서를 제공하기도 한다.
- Multi-modal learning의 방법
- 서로 다른 modality인 2개의 데이터 타입을 공통된 공간으로 보내서 매칭하는 matching 방법
- 하나의 modality 데이터를 다른 데이터로 변환해주는 Translating 방법
- 특정 modality의 모델을 더욱 잘 학습하기 위해 다른 modality를 참조해서 함께 사용하는 Referencing 방법
📌 Multi-modal learning - Visual data & Text
🔷 Text embedding
Text data를 사용할 때는 일반적으로 word(단어)를 Embedding vector 형태로 표현한다.
Word를 Embedding vector로 표현했을 때 특징으로는
(1) 비슷한 단어들은 공간 상에 가깝고 비슷한 곳에 위치한다.
(2) 관계가 비슷한 단어 쌍들은 비슷한 벡터를 가진다. (woman-man : queen-king)
- Word2vec - skip-gram model
수행하는 방법은 Word2vec의 skip-gram model을 사용해서 중심 단어와 주변 단어와의 분포를 학습하여 각 단어를 특정 길이의 벡터로 임베딩해준다.
아래 그림에서 보면, 각 row에 있는 것들이 word embedding vector W이다.
🔷 Joint embedding
Matching을 하기 위한 Embedding vector를 학습하는 방법
- Image tagging
주어진 이미지에 대해 tag를 생성하거나, 주어진 tag에 대해 이미지를 생성하는 방법
text data와 image data에 각각 pre-trained된 unimodal model의 고정된 크기의 feature vector를 만들어 합쳐서 만든다.
각 데이터에 대해 차원을 똑같이 맞춰주고, 두 feature vector간 관계를 잘 mapping할 수 있는 embedding space를 만들도록 학습하는 Joint Embedding을 해준다.
text와 image data의 embedding space에 mapping한 후, embedding간의 거리를 줄이는 방식(pull)으로 학습하고, matching되지 않는 pair는 거리를 크게 하는 방식(push)으로 학습한다.
→ 이러한 push, pull operation을 통해서 학습하는 것을 Matric learning이라 한다.
- Image & food recipe retrieval
image와 food recipe를 연결해주는 형태로 만들 수 있다.
Query image로 질의 이미지를 넣어줬을 때, True ingrs로 실제 레시피를 연결시켜준다.
반대로 레시피(Retrieved ingrs)를 넣어줬을때, image를 검색해주는 것(Retrieved image)도 가능하다.
Recipe는 순서가 있고 텍스트로 되어있어서, RNN 계열의 뉴럴네트워크를 통해서 1개의 fixed vector로 만들어야 한다.
또한, instruction의 순서도 1개의 fixed vector로 만들어야 한다.
이러한 2개의 vector을 concatenate해서 하나의 fixed dimension한 벡터를 만들어준다.
Image는 CNN backbone network를 통해서 하나의 feature vector로 만들어주고, 똑같은 dimension한 벡터를 만들어준다. recipe와 image를 통해 만들어진 2개의 dimension한 벡터를 cosine similarity loss를 사용해서 이미지와 레시피가 연관이 되도록 학습을 한다. 그리고 성능을 높이기 위해 cosine loss로 해결이 안되는 부분에 대해 가이드를 주는 sementic regularization loss(high-level semantics)도 사용할 수 있다.
🔷 Cross modal translation
- Image captioning
이미지를 잘 설명하는 text description을 생성해내는 방법
image에서 sentence로 변환하는 문제라고 볼 수 있고, 이미지는 CNN, sentence는 RNN을 사용한다.
그래서 CNN과 RNN을 잘 합치는 것이 중요한데, 이를 합치는 방식은 Show and tell 이라 한다.
image를 fixed vector로 바꿔주기 위한 encoder로 ImageNet에서 pre-trained된 CNN 모델을 사용한다.
LSTM에 시작토큰을 넣어줘서 엔드토큰이 나올때까지 반복한다!
이미지에 각 부분에 주목해서 텍스트를 만들어내는 방법인 Show, attend, and tell 도 있다.
input image를 CNN 모델에 넣어주는데 14x14로 공간정보를 유지하고 있는 feature map 형태로 출력한다.
해당 feature map을 RNN에 넣어주고 Attention 매커니즘을 사용해서 이미지의 각 부분에 알맞은 텍스트를 생성한다.
- Text-to-image by generative model
텍스트가 주어졌을 때, 이미지를 생성하는 위와 반대의 방법은 아래와 같이 동작한다.
*Generator Network
- 텍스트를 fixed dimensional feature vector로 embedding 한다.
- feature vector에 random gaussian noise vector를 concatenate한다.
- concatenate한 vector는 decoder를 거쳐 새로은 이미지가 생성되게 한다.
*Disciminator Network
- Generator가 생성한 이미지를 encoder를 거쳐 feature vector로 생성한다.
- 앞서 생성한 text feature vector와 Image feature vector를 concatenate한다.
- concatenate한 vector를 다시 encoding하고, 이 정보가 실제 데이터와 유사한지 검사한다.
🔷 Cross modal reasoning
- Visual question answering
영상과 질문이 주어지면, 답을 도출하는 형태의 태스크이다.
해당 태스크에서는 Image stream(CNN)과 Question stream(RNN)이 존재하고, 이들에서 나온 각각의 fixed dimension한 vector를 Point-wise multiplication을 해서 2개의 embedding feature가 서로 interaction하도록 만든다.
또한, 이는 end-to-end 학습을 수행하고 최종 출력 softmax를 거친 classification이다.
📌 Multi-modal learning - Visual data & Audio
🔷 Sound representation
Sound data는 기본적으로 Waveform의 1D signal로 주어진다.
하지만, 뉴럴네트워크나 머신러닝에서 사용할 때는 Spectrogram, MFCC 등의 Acoustic feature 형태로 변환해야한다.
- Short-time Fourir transform (STFT)
Fourir transform은 Waveform에서 Spectrogram에서 변환시키기 위한 방법이다.
Fourir transform의 방법 중 시간에 따른 변화를 확인하기 위해 Short-time Fourir transform(STFT)를 사용한다.
일정 시간 구간 내에 있는 주파수 성분을 얻고, 이를 sliding window 방식으로 매 시간 간격마다 수행한다.
🔷 Joint embedding
- SoundNet
현재 사운드가 어떤 장소에서 발생하는지 장면을 출력하는 방법이다.
unlabeled video의 RGB Frames를 pre-trained된 Visual Recognition Networks를 사용해서 Object Distribution과 Scene Distribution을 만들어낸다. 그리고 비티오는 항상 오디오를 동반하고 있는 경우가 많다.
해당 오디오를 Raw Waveform에 넣어서 CNN에 넣어주고, 마지막에 2개의 head로 분류해준다.
첫번째 head는 Scene Distribution을 따라하도록 하고(장소를 recognition할 수 있도록), 두번째 head는 Object recognition을 할 수 있도록 서로 KL해주어서 학습을 한다.
즉, 사운드 브랜치쪽이 학습되고 visual은 고정되어 있으므로 teacher-student learning 기법을 사용한다.
SoundNet은 다른 target task에 응용할 수 있는데, 이때는 사운드 브랜치쪽의 pool5 feature를 뽑아서 학습한다.
🔷 Cross modal translation
- Speech2Face
음성으로부터 그사람의 얼굴을 상상해내는 네트워크이고, Module networks 구조를 활용한다.
Face Recognition 모델을 사용해서 얼굴에 대한 face feature를 생성하고, Face decoder를 미리 학습한다.
voice feature가 face feature를 따라하도록 teacher-student learning 방식으로 학습한다.
annotation이 필요없으므로 face와 sound가 들어있는 video를 입력으로 주면 되기 때문에, self-supervised learning이라고 할 수 있다.
- Image-to-speech synthesis
이미지에 대한 speech를 만드는 방법이고, Module networks 구조를 활용한다.
이미지를 CNN을 통해 14x14 feature map을 만들고, attention을 사용한다. 즉, image-to-Unit Model로 학습하는 image captioning 방법이지만, 여기서는 sub-word unit이라는 자연어가 아닌 중간형태로 출력해준다.
해당 unit에서 음성을 보관하는 Unit-to-Speech Model을 Tacotron2 모델로 따로 학습한다.
🔷 Cross modal reasoning
- Sound source localization
입력으로 사람의 소리와 이미지를 주어졌을 때, 이 소리가 이미지 어디에서 나는지 localization score를 출력하는 방법이다.
이미지는 CNN를 통해 공간정보를 유지하는 feature와 오디오는 CNN으로 fixed dimension한 vector를 출력한다.
attention을 통해 위에서 얻을 2개의 출력을 내적해서 값을 얻는다.
이렇게 얻은 Localization Score를 Ground truth(Supervised loss)와 비교한다.
하지만, Video는 Sound를 pair로 가지고 다니므로 이를 이용하면 Unsupervised learning으로 학습할 수도 있다.
Localization score를 visual net의 출력인 feature map과 다시 한 번 곱하고 채널 단위로 합하여 attended visual feature vector를 만든다. 이러한 feature vector를 audio net의 출력인 feature vector와 비교하여 두 vector가 비슷해지도록 학습한다.
- Looking to listen at the cocktail party
여러가지 소리들이 합성된 영상에서 각 소리들을 추출해내는 방법이다.
Input video를 통해 영상에 등장한 N개의 face에 대한 feature vector를 뽑는다. (N Detected Faces)
Input audio를 통해 wave를 spectrogram으로 만들어준다. (STFT for spectrogram)
위에서 나온 2개의 값을 concatenate해주고, 각각에 대해 spectrogram을 분리해주고 이를 다시 waveform으로 바꿔준다.
여기서 문제는 각 사람의 speech를 따로 분리한 clean spectogram인 ground truth가 필요하다는 것이다.
그런데, 이미 합성된 영상에서 speech를 분리해내는 것은 거의 불가능에 가깝다.
그래서 실제로 학습할 때는 서로 다른 video에서 각각의 clean spectogram을 뽑아놓고 모델의 input으로는 그들을 합성한 video를 준다. 해당 video는 단순히 옆으로 이어붙일 수 있고, sound는 더하기 연산으로 할 수 있다.
- Lip movements generation
영상에서 음성에 따른 입술의 모양을 넣어준다면, 다른 얼굴을 참조해서 face animation을 만드는 방법이다.
- 이외 cf) 테슬라의 Autopilot도 Multi-modal learning이다.
'AI' 카테고리의 다른 글
[논문리뷰] PGGAN (Progressive Growing GAN) (0) | 2023.04.26 |
---|---|
[컴퓨터비전] 3D Understanding (0) | 2023.04.06 |
[컴퓨터비전] Conditional Generative Model (0) | 2023.04.05 |
[컴퓨터비전] Instance/Panoptic Segmentation, Landmark Localization (0) | 2023.04.03 |
[컴퓨터비전] Visualizing CNN (0) | 2023.04.03 |