Multi-modal tasks II (Visual data & Audio)¶
✅ Sound representation¶
- Spectrogram or MFCC로 음향의 특징을 추출한다.
1️⃣ Fourier transform(푸리에 변환)¶
📌 Short-time Fourier transform(STFT)¶
- 시간축(t)에 대해서 Waveform 전체를 푸리에 변환을 하게 되면 주파수(f) 축으로 옮겨지게 된다.
- 대신에 이렇게 전부다 주파수 축으로 옮기게 되면 시간에 따른 변화를 우리가 파악할 수 없게 된다.
- 그래서 제안 된것이 STFT이다. 짧은 window 구간 내에서만 푸리에 변환을 적용하는 방법이다.
- 여기서 그냥 변환하는 것이 아니라 Hamming Window랑 곱해서 결과를 도출한다. 이렇게 함으로써 가능데 부분만 초점을 맞출 수 있게 유도를 한다. 이것을 windowing이라고 한다.
- A,B는 파라미터이고 변환되는 폭은 A이고 다음 시간 간격은 B를 나타내게 된다.
- 푸리에 변환을 하는 이유는 time축에 input signal이 주어지게 되면 각 입력이 어느정도 성분으로 들어있는지 분해하기 위해서이다.
📌 Spectrogram¶
- 시간축에 따라서 spectrum을 쌓게 된다.
- 그러면 시간에 따라서 주파수 성분이 어떻게 변화하는지 눈으로 확인할 수 있게 된다.
- 이미지와 비슷한 형태를 띄게된다.
✅ Joint embedding¶
1️⃣ Sound tagging¶
- 소리를 통해서 현재의 소리가 해변가에서 일어나는 건지 아니면 교실에서 일어나는 소리인지 파악하여 장면을 인식한다.
📌 SoundNet¶
- 오디오의 표현을 어떻게 학습할지에 대한 방법론
- 비디오만 있는 데이터 셋을 가지고 기본에 미리 학습된 Visual Recognition Networks를 사용한다.
- 여기에 비디오의 frame들을 넣어준다. ImageNet CNN을 통해서 어떤 물체가 있는지, Places CNN을 통해서는 어떤 장면을 촬영하고 있는지를 출력하게 된다.
- 여기서 비디오는 항상 오디오를 동반하는데 오디오를 Raw Waveform형태로 추출해서 CNN 구조에 넣어준다.(1D CNN)
- 마지막에 2개의 head로 분리한다. 2개의 head는 각각 장면을 인식하고 물체을 인식할 수 있도로 KL를 최소화 하도록 학습을 한다.
- 이런 학습 방법을 Teacher-Student 학습 방법이라고 한다.
- 우리가 원하는 target task가 있다면 이렇게 학습된 SoundNet의 pool5를 추출하여 사용을 한다.
- pool5가 소리를 표현하는 대표적인 feature이다.
- 출력 계층의 2개의 head보다 pool5의 기능이 보다 일반화 가능한 의미 정보를 보유하고 있다.
- 2개의 head는 물체인식과 장면인식에 특화되어 있기 때문에
✅ Cross modal translation¶
1️⃣ Speech2Face¶
- 사람의 목소리를 듣고 얼굴을 상상해 내는 Networks
📌 Module networks¶
- Module network구조는 각자 담당하고 있는 미리 학습된 모델을 잘 조합을 하는 것이다.
- 먼저 VGG-Face Model을 사용하여 얼굴 이미지가 들어오면 Fixed dimention vector를 만든다.
- 그 다음 Face Decoder를 학습한다. 이건 face feature가 들어오면 정규화된 무표정의 정면의 이미지를 출력한다.
📌 Training¶
- 사람의 얼굴과 목소리를 같이 입력으로 넣는다.
- 먼저 얼굴은 미리 학습된 Face Recognition에 넣고 목소리는 우리가 만든 모델인 Speech2Face Model에 넣는다.
- 여기서 2개의 feature가 나오는데 speech feature가 face feature를 따라하게 학습이 진행된다. Joint embedding learning을 응용한거라 생각할 수 있다.
- 이때 speech feature는 face feature에 호환이 되도록 학습이 되었기 때문에 이후의 Face Decoder에 입력으로 넣을 때 따로 학습이 필요가 없어진다.
2️⃣ Image-to-speech synthesis¶
📌 Module networks 구조¶
- 이미지를 넣으면 목소리가 출력이 된다.
- 이미지가 들어오면 14x14 feature map을 만든다.
- 그 다음 Show, Atten, and Tell에서 사용했던 구조를 동일하게 사용한다.
- 근데 여기서 이미지로 부터 바로 word가 아니라 그 중간형태인 sub-word units형태로 출력을 해준다.(토큰이라고 생각)
- unit으로 부터 음성을 복원하는 unit-to-Speech Model을 따로 학습해 준다.
- 이 중간 부분이 잘 연결될 수 있게 유도를 하는데 Speech-to-Unit Model를 구성한다.
- 이 모델을 통해 unit이 나오게 되면 중간에 들어가서 사용이 된다.
- Speech-to-Unit Model를 통해서 음성이 들어오면 unit을 만들수 있고 또 Image들 넣고 unit을 만들 수 있어서 input-output관계로 학습을 할 수 있고 또 이 unit을가지고 음성을 출력하는 input-output 관계로 학습을 한다.
✅ Cross modal reasoning¶
1️⃣ Sound source localization¶
사람의 소리와 이미지를 input으로 넣으면 이 소리가 영상에서 어디서 나는지 찾는 Task이다.
💡 구현 방법¶
- 먼저 Visual net과 Audio net을 사용한다.
- 여기서 Visual net의 출력으로는 spartial feature를 유지하는 값을 출력하고 Audio net에서는 Fixed dimention vector를 출력한다.
- Sound Feature와 Visual Feature의 내적을 통해서 관계성을 들어내게 만든다.
- 그 내적 값이 Localization Score로 나타나게 된다.
📌 Fully supervised version¶
이걸 학습하려면 Fully supervised learning 방법으로 Ground Truth인 Localization map이 존재한다면 여기다 바로 loss를 걸어 줄 수있다.
📌 Unsupervised version¶
- 비디오는 항상 사운드를 pair로 가지고 다닌다.
- Visual feature 와 Localization Score를 weighted sum을 한다.
- Attended visual feature 하고 sound에서 나온 feature를 metric learn 형태로 계산
- 비디오에서 이미지와 소리가 같은 곳에서 나왔다면 비슷해야 하고 다른 비디오에서 나왔다라고 하면 이 2개의 feature가 달라야 한다는 생각으로 학습이 가능하다.
- 그걸 Sound feature랑만 비교하는 이유는 우선 Sound feature는 Sound의 전체적인 Context를 encoding하고 있다. Attended visual feature는 Localization Score에서 관심 깊게 보는 영역이 담겨있을 텐데 이 값이 Sound feature랑 같았으면 좋기 때문이다.
- 여기서 Supervised loss도 같이 사용할 수 있다.
2️⃣ Speech separation¶
'AI > 이론' 카테고리의 다른 글
Multi-modal tasks I (Visual data & Text) (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 |