CVPR 2025 논문이다.
이번에도 Abstract와 Approach 부분만 읽어보려고 한다.
0. Abstract
최근 몇 년 동안 영상 콘텐츠 제작과 소비가 증가했다.
흥미로운 콘텐츠를 만들기 위해서는 visual과 audio 모두 신중하게 구성해야하는데, visual에 비해서 audio가 덜 발전했다.
그래서 영상에서 중요한 장면과 소리에서 강조되는 부분이 서로 맞지 않는 문제가 발생한다.
이러한 gap을 줄이기 위해서 visual-guided acoustic highlighting을 제안한다.
이게 무엇이냐? 영상에 맞도록 audio를 적절하게 highlighting 해서 더 조화로운 audio-visual 을 만드는 것이다.
(e.g, 폭발 장면에서는 폭발 소리를 두드러지게)
그래서 transformer 기반의 멀티모달 프레임워크하고 새로운 THE MUDDY MIX DATASET을 제안한다. (영화의 a랑 v 사용함)
그리고 pseudo 데이터를 만드는 프로세스(separation → adjustment → remixing, 여러 음원들로 나눈 다음 몇 개를 일부러 이상하게 조정해서 다시 섞기)를 개발해서 poorly-mixed audio를 만들었다.
이 방법이 몇 개의 baseline들보다 quantitative과 subjective 측면에서 더 좋은 평가를 받았다.
또한 contextual 가이드의 효과와 dataset 난이도에 따른 효과도 봤다.
3. Approach
Visually-guided acoustic highlighting은 visual 가이드를 이용해서 audio를 적절하게 변형해서 강조하는 것이다.
3.1에서 수식적 정의를 설명하고 3.2에서 VisAH 모델 아키텍쳐를 설명할 것이다.
3.1 Task Formulation
RGB 이미지 $T_v$개로 이루어진 visual을 $v \in \mathbb R^{T_v \times H \times W \times 3}$라고 하자.
그리고 $a \in \mathbb R^{T_a}$가 이에 대응되는 audio라고 하자.
이 $a$는 poorly mixed audio이다. 주로 현실세계에서 그냥 녹음된 상태이다.
목표는 content를 유지하면서 $a$를 적절하게 hightlight 해서 $s$라는 audio signal로 만드는 것이다.
수식으로 표현하면 아래와 같다.
$\mathrm{a}, \mathrm{v} \mapsto \mathrm{s}$
($\mathrm{a}$: poorly mixed audio, $\mathrm{v}$: visual guidance, $\mathrm{s}$: highlighted audio )
시스템 디자인 설명할 때 우리는 ($\mathrm{a}$, $\mathrm{v}$, $\mathrm{s}$) 형태의 튜플에 접근할 수 있다고 가정한다.
3.2 VisAH: Visually-guided Acoustic Highlighting
위 식을 해결하기 위해서 2가지에 집중했다.
(i) Audio backbone
poorly mixed audio를 인풋으로 넣어서 highlighted audio를 출력하는 모델 구조
(ii) Context-aware module
Video, text 등의 contextual 정보들을 활용해서 이러한 acoustic highlighting을 돕는 module
VisAH의 전체 구조는 아래와 같다.

3.2.1 Audio Backbone
전체 구조에서 (a)부분이다.

Audio 백본은 input output이 같은 모양이 되도록 설계되었기 때문에 이에 맞는 U-Net을 사용했다.
그리고 2가지 audio input형태(Frequency 도메인, Time 도메인)를 하나의 audio backbone에 통합한다.
- Frequency 도메인: 소리 고유의 frequency 패턴을 파악. Audio-visual 분리 task에서 자주 사용됨 (e.g.이게 무슨 소리인가)
- Time 도메인: 최종 waveform을 더 정확하게 복원. Audio 분리 task에서 자주 사용됨 (e.g.어떻게 들리는가)
HybridDemucs 구조를 기반으로 spectrogram, waveform을 각각 처리하는 U-Net 모델을 구현했다.
Spectrogram U-Net Encoder.
$a$에 대해서 window_size=4096, hop_length=1024로 STFT해서 spectrogram을 얻는다.
그 *magnitude spectrogram만 사용하고 이를 $A$라고 한다.
* Magnitude spectrogram: Spectrogram에서 크기만 뽑은 것
기존의 HybridDemucs는 $A$를 정규화해줬는데 우리는 안 한다. 모델이 효과음에 덜 민감해지기 때문이다.
2D convolution(time * frequency)을 사용한다.
Magnitude encoder는 5 layer로 구성되어있고, 4배씩 줄이다가 마지막에 8배 줄여서 1로 맞춘다.
Waveform U-Net Encoder.
디테일을 파악하기 위한 residual path로 작용한다.
여기서는 $a$를 정규화 한다. 1D convolution(time)을 사용한다.
다른 거는 spectrogram U-Net Encoder랑 같다.
Latent Highlighting Module.
$f _wav$ + $f_mag$ 한 다음 encoder에 통과시켜서 길이를 1/2로 만든 $f_a$를 생성한다.
$f_a$랑 contextual information $c$ (=$\hat{f_{vid}}$, $\hat{f_{text}}$)를 함께 활용해서 transformer로 $\hat{f_a}$를 만든다. 수식으로 표현하면 아래와 같다.
$\hat{f_a} = \mathcal{H}_\theta (f_a, c)$
Waveform/Spectrogram U-Net Decoder.
앞에서 1/2로 만들었던 거를 decoder에 통과시켜서 다시 2배 한 다음에 Mag Dec랑 Wav Dec에 넣는다.
그러면 Mag Dec가 Ratio Mask $M$(강조되는 정보)을 출력하고, 이거를 원래 Mag spectrogram $A$랑 곱해서 iSTFT로 waveform을 복원한다.
얘랑 waveform decoder에서 나온 애랑 합쳐서 최종적으로 $\hat{s}$를 출력한다.
3.2.2 Latent Highlighting Transformer
전체 구조에서 (b)부분이다.

앞에서 나온 $\mathcal{H}_\theta$를 자세하게 설명한다.
2가지 관점을 고려한다.
- (i) Audio는 전체적인 정보를 담지만 visual은 더 좁은 영역의 정보를 담기 때문에 visual context를 가이드로 활용한다.
- (ii) 영상정보만으로 부족할 수 있기 때문에 text caption 모달리티를 추가해서 사용한다.
Context Encoding.
수식으로 나타내면 아래와 같다.
$\hat{f_i} = \mathcal{E}_i(\mathcal{G}_i(f_i))$
차례대로 설명하자면, 영상 $v$를 CLIP ViT-L/14로 feature vector들로 변환한다. $f_{vid}$
그리고 InternVL2-8B로 $v$의 text caption을 뽑은 다음 T5-XXL로 feature vector들로 변환한다. $f_{text}$
얘네들을 각각 선형 projection $G_{vid}$, $G_{text}$에 통과시켜서 차원을 $C_i$에서 $C$로 만든다.
그러고 각각 positional encoding 준 다음 transformer encoder $E_{vid}$, $E_{text}$에 통과시켜서 $\hat{f_{vid}}$, $\hat{f_{text}}$를 얻는다.
Context-aware Acoustic Highlighting.
수식으로 나타내면 아래와 같다.
$\hat{f_a} = f_a + \mathcal{Z}(\mathcal{D}(f_a, \hat{f_i}))$
차례대로 설명하자면, $f_a$를 Q로, $\hat{f_{vid}}$, $\hat{f_{text}}$를 K, V로 해서 transformer decoder $\mathcal{D}$에 통과시킨 다음 *zero-initialized convolutional layer $\mathcal{Z}$에 통과시킨다.
* Zero-initialized convolutional layer: weight=0, bias=0으로 시작시켜서 학습 좀 안정적으로 되게 함
그 다음에 얘를 $f_a$를 더해서 최종 $\hat{f_a}$를 만든다. 얘가 바로 최종적으로 강조되는 feature이다!
3.2.3 Training and Inference
예측된 오디오 $\hat{s}$랑 정답 오디오 $s$ 사이의 multiscale STFT (MR-STFT) loss를 사용한다.
각각의 amplitude spectrogram 간의 $L$1 거리로 계산된다.
수식으로 나타내면 아래와 같다.
$\mathcal{L}$ = MR-STFT($\hat{s}$, $s$)
window_size=2048, 1024, 512 이다. 다양한 window로 다양한 주파수 반영함을 알 수 있다.
사실 waveform 또는 spectrogram 기반 loss 등등 다른 복잡한 loss도 사용할 수 있는데
그냥 단순한 loss를 사용해도 학습은 충분히 잘 이루어짐을 알 수 있다.
그래서 test의 input과 output이 아래와 같다.
Input: Baddly mixed audio + 해당 video frames
Output: Well-highlighted audio !!
4. THE MUDDY MIX DATASET
영화의 오디오를 변형해서 badly mixed output을 생성한다.다. 영화 오디오가 잘 믹싱된 상태이기 때문이다.
CMD 데이터셋(영화 3,605개, 클립 33,976개) 중 Action 장르를 활용한다. (∵Action 장르 오디오 소스가 풍부하기 때문)
클립 1개에 2분인데 얘를 10초 단위로 나눠서 사용한다.
10초 단위 1개에서는 1fps로 10프레임을 추출한다.
Separate, Adjust, and Remix.
고품질 오디오 $s$가 주어지면 아래와 같이 3단계를 통해서 poorly mixed output을 생성한다.

1. Separation.
실제 오디오가 다양한 소스로 구성되기 때문에 이를 다 분리하기는 쉽지 않으므로.. 크게 3가지 소스(speech, music, sound effects)로 나눈다.
이때 DnR v3 데이터셋으로 학습된 3-stem separation model을 사용한다.
이렇게 분리된 3가지 소스하고 residual하고 더해서 새로운 badly mixed output을 생성한다. 수식으로 나타내면 아래와 같다.
$s = \hat{s_h} + \hat{s_m} + \hat{s_e} + \hat{s_r}$
* $s_r$을 더하는 이유: $s$를 맞춰주기 위해! 이렇게 하면 separation이 부정확해도 데이터는 안정적으로 생성됨
2. Adjustment.
이렇게 분리된 각 소리의 상대적 크기를 조정해서 영상하고 맞지 않게 highlight 된 오디오를 만든다.
music // speech // sound effects + residual 로 구성된다.
각 소리의 원래 음량을 측정한 다음 제일 큰 애한테 'Suppress' 액션을, 다른 애들한테는 'Highlight' 액션을 준다.
각각 high(+-12dB), moderate(+-9dB), low(+-6dB)를 랜덤으로 준다.
3. Remixing.
이렇게 한 다음에 3개 소스를 linear하게 합쳐서 poorly mixed audio를 만든다.
5. Experiments
5.1 Experimental Setting
Implementation Details.
44.1kHZ stereo -> 평균내서 mono
RTX 4090 2개로 18시간 걸림 (batch_size=12, Adam, lr=1e-4, epoch=200)
영상 feature $C_{vid}$ = 768, $C_{text}$ = 4096
Evaluation Metrics.
다음과 같은 3개 지표를 사용한다.
① Waveform distance
가장 간단한 방법이다. Time-frequency는 *MAG(magnitude distance)를 쓰고 time은 **ENV(envelope distance)를 쓴다.
* MAG: Spectrogram 사이의 차이를 계산함
** ENV: Amplitude만 뽑아서 비교함
② Semantic alignment
Pre-trained된 ***PaSST을 사용해서 라벨 분포의 KL divergence를 본다.
*** PaSST: 오디오를 보고 이게 어떤 소리인지 확률로 알려주는 모델임. (e.g. speech 0.5, music 0.3, effect 0.2)
그리고 ImageBind을 사용해서 audio-visual 간 관련성을 cosine similarity로 본다. 이를 IB score라고 한다.
수식으로 나타내면 아래와 같다.
$\DeltaIB = IB(v,s) - IB(v,\hat{s})$
③ Temporal alignment
예측과 정답 오디오 사이의 분포를 정렬하는 최소 비용을 W-dis(Wasserstein distance)로 측정한다.
5.2 Baselines
완전히 똑같은 task가 없어서 아래 방법으로 적절하게 변형해서 비교했다.
- Poorly Mixed Input (아무것도 안 함)
- 그냥 비교를 위한 최소 기준으로 사용됨
- DnRv3 + CDX (규칙 기반)
- 분리 -> 통계적으로 볼륨 조절 -> 합치기
- e.g. 보통 speech는 이정도 크기이고 music은 이정도 크기더라~
- Learn2Remix (학습 기반)
- audio만 보고 학습해서 remix. 여기서는 ConvTasNet이 사용되었는데 연구에서는 더 발전된 SepReformer를 사용함
- Listen, Chat and Edit (다른 modality 기반)
- text같은 다른 모달리티로 명령
---
뒤에 결과 부분은 생략했다. 원래 architecture까지만 읽으려고 했는데 읽다보니 궁금해져서 읽게 되었다. 뒤에 보면서 아 지금 무슨 모델이 있고 어떤 데이터셋을 사용하고 어떻게 학습 환경을 구축하는지 알게 된다.
여유가 되면 꼭 뒤까지 읽어야겠다.
끝~ 화이팅!