Multi-modal: Captioning and speaking

💡
Image 외의 Data가 Computer Vision에서 어떻게 활용되는지 알아본다.

Overview of multi-modal learning

사람은 오감 뿐만 아니라 공감각적으로 느껴지는 지각을 통해서 많은 정보를 받아들이고 있다. 이런 정보들을 통해 사람은 사고하고 행동한다. AI 역시 여러 감각을 통한 정보를 활용할 수 있도록 발전하고 있다. Multi-modal Learning에 장애물은 무엇인지 알아보고, 이를 극복하는 방법에 대해 알아보자.

먼저, 각 데이터는 표현방법이 다르다는 것이 큰 난관이다. 통상, Audio는 1D의 Wave형태로 표현되고, Image는 2D의 Vector로 표현되며, Text는 Embedding Vector로 표현된다. 다른 형태로 표현되는 데이터들을 융합하여 사용하는 것이 첫 번째 어려움이다.

각 데이터의 표현 방식이 다르다.

두 번째는, 각 데이터의 표현이 모두 1:1 대응은 아니라는 점이다. 같은 의미를 갖고 있더라도, 각 데이터 사이의 관계가 다르기 때문에 이를 정확하게 매칭하여 사용하기 어렵다.

동일한 의미이나, Text와 Image의 대응 관계에 차이가 있다.

마지막으로, 각 데이터를 모두 활용하더라도 편향의 문제가 생길 수 있다. 우리는 모델이 여러 정보를 종합적으로 판단하기를 기대하나, 모델은 비교적 해결하기 쉬운 정보를 포함한 데이터로 편향되기 쉽다.

일부 데이터에만 큰 가중치를 두는 모델이 될 수 있다.

위와 같은 어려움을 극복하는 방법으로 크게 세가지의 방법으로 구분할 수 있다. 아래에서는 이 세가지 방법을 어떻게 적용하는지 알아보자.

각 Modal의 정보를 Matching, Translating, Referencing하여 Task를 수행한다.

Multi-modal tasks (1) - Visual data & Text

먼저 Text는 Word2Vec과 같은 모델을 통해 Embedding Vector의 형태로 표현된다.

Embedding Vector는 Vector 공간 상에서 Text의 의미를 반영한다.

Joint Embedding은 앞서 살펴본 방법 중 Match에 해당한다. 이 방법을 통해 Image Tagging과 같은 Task를 수행할 수 있다.

Image와 가장 유사한 Tag를 생성하는 Task이다.

Joint Embedding은 각 Uni-modal에 해당하는 Data를 특정 Dimension의 Vector로 변환하고, 각 Vector간의 유사도를 학습하는 형태로 구성된다.

각각 Image와 Text로부터 동일한 Dimension의 Vector를 생성하고, Vector간의 유사도를 학습한다.

이와 같은 방법을 발전시키면, 음식의 Recipe와 같은 Text를 Generation하는 등으로 응용할 수 있다. Text의 부분을 문장 생성의 Module로 구현하면, 위와 같은 응용이 가능하다.

Cross Modal Translation은 Translating으로 구분할 수 있으며, Image Captioning과 같은 Task에 사용될 수 있다.

Image를 설명하는 Sentence를 생성해내는 Task이다.

이는 CNN을 통해 Image의 정보를 이해하고, 이 값을 RNN에 넘겨주어 Sentence를 생성하는 형태로 구현할 수 있다. Convolution Filter를 통해 생성된 Feature Map을 RNN의 Input으로 활용하면서, 각 단어를 생성하는 것이다. 이때, 각 Feature Map의 Attention을 적용하여, Image의 어떤 정보를 통해 어떤 단어를 생성해나가는 지 확인할 수 있도록 구현한 것이 Show, Attend, and Tell이다.

Show, Attend, and Tell의 예시

반대로, Text로부터 Image를 생성하는 Task를 수행할 수 있다. 이는 Text의 정보를 Vector형태로 처리한 뒤, Decoder를 통해 Image를 생성해내는 형태로 구현된다.

Text의 의미와 가장 유사한 Image를 생성해내는 Task이다.

Cross Modal Translation은 Referencing으로 구분할 수 있으며, Visual Question Answering과 같은 Task에 적용될 수 있다. Image의 정보를 CNN을 통해 이해하고, 특정 Dimension의 Vector로 출력한다. Question으로 주어진 Text를 RNN을 통해 이해하고 동일한 Dimension의 Vector로 구성한다. 이 두 Vector를 연산하여 특정 정보를 추출하고, 정답을 생성해내는 식으로 구현한다.

Text로 주어진 Question을 파악하고, Image 내에서 해당 Answer를 도출하는 Task이다.

Multi-modal tasks (2) - Visual data & Audio

Audio 데이터는 1D 시그널이지만, 근래에는 Spectogram과 같은 형태로 변환하여 사용한다. 변환을 통해 각 시간 축에서 파장의 변화를 확인할 수 있다.

Spetogram의 예시

마찬가지로 Joint Embedding을 통해, 소리와 유사한 Image를 판별하는 Task를 수행할 수 있다. SoundNet은 Image에서 Object와 Scene을 구분하고, Audio에서는 2개의 Head를 통해 각 Vector의 KL div를 판별하는 형태로 구현된다.

SoundNet의 예시

Cross Modal Translation은 소리로부터 특정 얼굴을 생성하는 Task를 수행할 수 있다. Speech2Face는 Video를 학습에 활용하여, 각 얼굴과 소리를 학습한다. 이후 소리만으로 유사한 얼굴을 생성해내는 형태로 구현되어 있다.

Speech2Face의 예시

Cross Modal Resoning을 적용한 사례로는, 특정 소리가 Image의 어떤 부분과 유사한지 추정하는 응용이다. Image를 Feature Map 형태로 출력하고, Audio를 Vector로 출력한 후, Audio의 Vector의 내적을 통해 Image의 각 위치의 Score를 구해 Heat Map으로 표현하도록 구현할 수 있다.


3D Understanding

💡
우리가 살고 있는 3D 좌표계를 Computer Vision 분야에 적용시킨 다양한 사례에 대해 알아본다.

Seeing the world in 3D perspective

우리는 3D 좌표계 위에서 살고 있다. AI 역시 궁극적으로는 3D 세계를 이해하는 방향으로 발전되어야 할 것이다. AI 혹은 Computer를 3D에 접목시킨다면, 이전보다 훨씬 다양한 응용이 가능할 것이다.

우리가 3D를 이해하는 과정을 살펴보자. 우리는 3D를 직관적으로 이해하고 있지만, 사실 시각 정보는 2D의 형태로 전달된다. 사영된 2D Image를 위치에 따라 연속적으로 인식하여 3D를 이해하는 것이다. 이와 같은 이해는Computer가 3D 세계를 인식하도록 하는데에 유용한 방법이 될 수 있다.

2D Image를 3D 인식하기 위한 Trianglulation 기법의 예시

3D에 대한 인식의 방법이 정형화 되지 않은 만큼, 3D 데이터에 대한 저장 방법 역시 정형화 되지 않았다.

3D Data를 표현하고 저장하는 다양한 방식의 예시

3D Understanding의 연구를 위해 마련된 다양한 Dataset이 존재한다.

ShapeNet은 사람이 직접 디자인한 3D Image이다.
SceneNet은 실내의 가구를 Random하게 배치한 형태의 3D Image이다.
PartNet은 ShapeNet을 발전시킨 형태로, Sub-object에 대한 Annotation이 포함되어 있다.
ScanNet은 실제로 실내를 Scan한 형태의 3D Image이다.

Outdoor 3D Dataset은 자율주행과 밀접한 관계를 가지고 있어, 이와 관련된 많은 Dataset이 존재한다.

Outdoor Dataset의 예시

3D tasks

3D Image에 대한 Task는 Image의 형태만 다를 뿐, 2D Image의 Task와 유사하다. Image Recognition, Object Detection, Semantic Segmentation 등 기초적인 Task 외에도 다양한 Task가 존재한다.

3D Generation과 같은 경우에, 대표적인 모델로 Mesh R-CNN이 존재한다. 이는 2D Image를 Input으로 받아서, 유사한 형태의 3D Image를 생성해낸다.

Mesh R-CNN은 Mask R-CNN에서 3D Branch만 추가된 형태이다.

3D application example

3D Understanding의 단순한 예제로, Photo Refocusing Task를 살펴보자. 이는 Image의 Depth에 따라 다양한 조작을 하는 Image 사후 처리에 자주 사용될 수 있다.

위 Task는 다음과 같이 정리할 수 있다.

  1. 원본 Image의 Depth를 추정하고, Depth Map을 생성한다.
  1. Depth Map에 Thread hold를 지정하여, Mask를 생성한다.
  1. 원본 Image로부터 Blur한 Image를 생성한다.
  1. Mask Map과 Image를 결합한다.
  1. 각 Image를 더하여 최종 결과를 생성한다.
Original Image
Refocusing Image


Reference

'네이버 부스트캠프 AI Tech' 카테고리의 다른 글

[U] Day 37 - Lightweight II  (0) 2021.03.28
[U] Day 36 - Lightweight I  (0) 2021.03.28
[U] Day 34 - CV IV  (0) 2021.03.26
[U] Day 33 - CV III  (0) 2021.03.26
[U] Day 32 - CV II  (0) 2021.03.26

+ Recent posts