ACCDOA와 Multi-ACCDOA
ACCDOA의 개념과 도입 배경
SELD(Sound Event Localization and Detection)는 ‘어떤 소리 이벤트가 언제 발생했고(SED)’, ‘어디서 나는가(DOA)’를 동시에 예측해야 합니다. 기존에는 두 가지 목표를 동시에 해결하기 위해 다중 출력(branch) 혹은 다단계 구조를 사용했습니다. 예를 들어 SELDnet과 같은 two-branch 방식은 하나의 신경망에 SED 분류 출력과 DOA 회귀 출력을 별도로 두고, 두 손실 함수를 가중합하여 최적화했습니다. 이러한 접근은 두 과제를 균형 있게 학습시키기 위한 가중치 튜닝이 필요하고, 잘못 조율되면 한쪽 성능이 희생되는 문제가 있었습니다. 한편 두 과제를 완전히 분리해 별도 네트워크로 훈련하면 멀티모델로 인한 시스템 복잡도와 파라미터 수 증가 문제가 있습니다. 이러한 한계를 해결하기 위해 Activity-Coupled Cartesian DOA, 즉 ACCDOA가 제안되었습니다.
ACCDOA는 소리 이벤트의 활성도(activity)를 DOA 벡터의 길이(노름)에 부여하여, SED와 DOA 정보를 단일 출력 벡터로 통합합니다. 이 접근의 가장 큰 이점은 SELD를 단일 회귀 목표로 다룰 수 있다는 점입니다. 별도의 분류/회귀 브랜치가 없어 멀티태스크 간 가중치 밸런싱이 필요 없고, 네트워크를 하나로 단순화하여 전체 모델 규모를 줄일 수 있습니다. 실제로 DCASE Challenge의 2020, 2021에서 ACCDOA 기반 단일-타깃 학습은 기존 two-branch 방식보다 적은 파라미터로도 더 나은 성능을 보여주었습니다. 이러한 결과로 DCASE 2021 챌린지의 공식 baseline에서도 SELDnet의 출력 포맷을 ACCDOA로 교체하여 성능 향상을 달성하였습니다. ACCDOA의 개념은 소리 이벤트 발생 여부와 방향을 하나의 3차원 벡터로 나타내는 것입니다. 각 사운드 이벤트 클래스별로 x, y, z 3개의 출력을 두어 해당 클래스의 카르테시안 좌표계 상 단위 DOA 벡터를 예측합니다. 이벤트가 활성화된 경우 출력 벡터는 1, 이벤트가 없으면 0에 가깝게 만듭니다. 이를 통해 벡터의 길이가 그 클래스의 활동도를 나타내고 방향은 DOA 각도를 나타내도록 학습됩니다.
- 클래스 (c), 프레임 (t)에서 목표 ACCDOA 벡터
ϕ: 방위각, θ: 고도각
신경망의 출력층은 이러한 벡터를 예측하도록 구성되어, 총 출력 차원은 클래스 × 3이 됩니다. 이를 통해 벡터의 길이가 그 클래스의 활동도를 나타내고 방향은 DOA 각도를 나타내도록 학습됩니다. 즉, 출력 벡터의 노름(norm)이 1이면 해당 소리 이벤트가 존재하며, 벡터의 방위는 소리의 방향을 가리킵니다. 반대로 노름이 0이면 해당 클래스 소리가 없는 것입니다. 이러한 ACCDOA 출력은 자연스럽게 SED와 DOA를 한 번에 예측하므로 멀티태스크 문제를 단일 회귀 문제로 변환합니다.
% 1) 클래스 c, 시간 프레임 t에서의 ACCDOA 벡터 정의
% 2) 단위 DOA 벡터 u_{c,t} (azimuth φ, elevation θ 기준)
% 3) ACCDOA 손실 함수 (MSE)
% 4) 예측된 활동성 추출 (threshold τ)