본문 바로가기

Paper

[논문] Wave U-Net : A Multi-Scale Neural Network for End-to-End Audio Source Separation(Daniel et al. 2018)

https://arxiv.org/pdf/1806.03185v1.pdf 2018년에 발표된 wave U-Net 논문을 공부하고 간단히 정리한 글입니다. 진행 중인 프로젝트에 Audio Source Separation이 필요하여 읽게 되었습니다. Audio Source Separation은 여러 sound가 혼합된 audio에서 vocal, drum, bass, others를 분리해 내는 task입니다. 

U-Net

Wave U-Net을 알아보기 전에 기반이 되는 architecture인 U-Net에 대해 간단히 알아보자. U- Net은 의학 분야에서 Image segmentation을 목적으로 만들어진 End-to-End 형식의 Conv 기반 모델이다. 

다음과 같은 U 모양의 architecture 형태로 인해 U-Net이라는 이름이 붙었다.

U-Net Architecture

앞쪽 feature map 크기가 줄어드는 부분을 Contracting path, 뒤쪽 feature map의 크기를 다시 늘려주는 부분을 Expanding path라고 한다. Contracting path에서는 입력 이미지의 추상화를 통해 고차원 정보를 포착하고 Expanding path에서는 세밀한 localization을 진행한다. 

contracting path

Contracting path에서는 2D Conv, max pooling을 반복 적용해서 매 단계마다 채널은 두 배로 늘리고 feature map 크기는 절반으로 줄인다.

Expanding path에서는 up-conv를 통해 채널을 줄이고 feature map 크기는 두 배로 늘려나간다. up-conv 방법은 up sample, transposed conv 두 가지가 있다.

two method of up-conv

위 그림을 보면 up-conv를 통해 3x3 feature map이 6x6으로 크기가 두 배 늘어났음을 알 수 있다. 또 하나 U-Net의 핵심 아이디어는 Skip Architecture(connection)이다.

위 그림의 회색 화살표를 의미한다. 매 un-conv step 마다 그 단계에 해당하는 Contracting path의 feature map을 가져와 뒤로 이어 붙인다(채널이 증가하는 개념 ; concate). Feature map 크기가 안 맞을 테니 expanding path feature map 크기에 맞춰 crop 한 뒤 붙인다. Contracting path 과정 중에 정보를 보존하여 사용하겠다는 아이디어! 

Expansive path의 마지막에선 Input Image를 skip connection 해 주고, 채널 수를 segmentation 할 label의 수로 맞춰준다(YOLO랑 비슷한 느낌!). 그리고 각 pixel 별로 softmax 값을 출력한다. 이를 위한 loss는 Cross-Entropy를 사용한다. 간단하게 U-Net을 알아봤으니 이를 waveform에 적용한 Wave U-Net으로 돌아가 보자.


Wave U-Net

Wave U-Net Architecture 

U-Net의 one-dimensional adaptation으로 Wave-U-Net 제안, U-Net은 Image domain이라 2D Conv를 사용했는데, Wave U-Net은 time domain의 signal이므로 1D Conv를 사용했다는 얘기 같다. 이를 통해 time domain에서 직접 Audio sources seperation

We show a way to provide the model with additional input context to avoid artifacts at the boundaries of output windows, in contrast to previous work

결과에 인공적인 부분(artifacts)이 생기는 것을 막기 위해 추가적인 input context를 줬다.

We replace strided transposed convolution used in previous work for upsampling feature maps with linear interpolation followed by a normal convolution to avoid artifacts.

아까 U-Net에서 살펴본 up-conv 방법 중 하나인 transposed convolution 대신 linear interpolation을 사용해 인공적인 부분(artifacts)이 생기는 것을 막았다. 

Artifacts 방지에 집중하는 이유는 다루는 데이터가 오디오이기 때문인 듯하다. 오디오는 전체적인 구조가 맞으면 괜찮은 이미지와 다르게 전체적인 구조와 지엽적인 부분 모두 정밀하게 결과가 나와야 사람이 들을 때 어색함이 없기 때문이다. 그래서 사람이 들을 때 어색한 부분 = Artifacts를 없애는 데 집중하는 것 같다.

여러 악기와 보컬을 분리하는데 좋은 성능을 보인다.

stereo와 mono source seperation 간의 차이를 보여준다

Signal-to-Distortion rate(SDR)의 문제점을 제기한다.

"Singing voice separation with deep U-Net convolutional networks"(2017) 이 논문 기반인 듯, 저 논문 모델이 성능이 더 좋다고 하고 있네?! 제한된 조건하에서 좋다고 얘기하는 듯 하다.

 


Model

구체적인 모델 내부를 살펴보자.

DS는 전체 architecture에서 down sampling(contract path) 과정, US는 up sampling(expanding path) 과정을 각각 의미한다. fd는 filter-size로 1D Conv이기 때문에 1차원 값으로 주면 된다. 이 논문에서는 15로 주고 있다. 그렇게 쭉 줄이고 채널을 늘린 상태에서 up sampling을 진행한다. 매 반복 단계 i마다 DS의 block(feature map)을 concat 해준다(skip connection). US 마지막 결과값인 ②와 input data ①을 concate하고 거기에 1x1 Conv를 통해 채널을 segmentation 할 개수와 맞춰준다. 여기서는 drum, vocal 두 개로 분리하므로 2채널로 맞춰주고 최종 16834x2 block은 위 그림과 같이 나타낼 수 있다.

 

a)는 일반적인 모델이고, b)는 Wave U-Net에서 쓰이는 모델이다.

a)는 인풋에 zero-padding(이미지에 검은색 부분)을 주어 인공적인 부분(artifacts)이 생기게 된다. 이후 upsample할 때, transposed Conv를 사용하는데 이때도 zero-padding을 주어 아웃풋에 high-frequency artifacts가 생기게 한다. 반면 b) 모델은 zero-padding을 하지 않고, transposed Conv 대신에 linear interpolation으로 unsample을 진행해 artifacts를 줄였다. 다만 패딩이 없어서 아웃풋 크기가 인풋에 비해 작아진다. linear interpolation은 주어진 값 사이의 모르는 값을 주어진 값의 평균으로 추정하는 방법이다. 예를 들어 그림을 보면, 보라색과 하늘색의 linear interpolation으로 파란색이 생겼음을 알 수 있다.

 

conclusion

- 데이터 전/후처리 없이 end-to-end audio source seperation 모델을 제안했다. 

- 이 모델이 spectral 분석을 어느 정도 수행하는지 알아보고, 입력 신호를 basis signal로 분해하는 방법을 연구해볼 수 있겠다.

- long temporal context은 feature map의 반복적인 다운샘플링과 convoultion에 의해 처리되어 서로 다른 time-scale에서의 high/low features를 결합한다.

- 사용한 데이터가 작기 때문에 Singing voice separation with deep U-Net convolutional networks(Andreas et al. ISMIR)에 사용된 큰 데이터 셋을 써보면 성능이 더 좋을 것이다.

- 여기서 사용된 MSE는 loss의 보존을 잘 반영하지 못하므로 audio source seperation을 위한 GAN 계열의 loss가 개발되면 좋겠다.


reference

https://medium.com/@msmapark2/u-net-%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0-u-net-convolutional-networks-for-biomedical-image-segmentation-456d6901b28a  

Wave U-Net   https://arxiv.org/pdf/1806.03185v1.pdf