Files
micarrsim/docs/activity-detection.md
T

9.1 KiB
Raw Blame History

전 대역 활동 검출 모델

이 문서는 위치 추정 전에 ADC 대역에서 관측되는 신호 변화를 찾는 보조 분석의 의미와 한계를 정의한다. 검출기는 Scene의 음원 주파수·위치·개수를 입력으로 받지 않으며, 검출 결과를 위치 정답이나 분석 대역으로 자동 변환하지 않는다.

Camera에서 가장 짧은 사용 순서

  1. Acoustic Camera의 분석 대역 아래 전 대역 활동 검사를 펼친다.
  2. 한 물리 마이크와 OS-CFAR, CA-CFAR 또는 Dixon spectral flux를 고른다.
  3. 전 대역 검사를 실행하고 frame의 raw 통계와 실제 판정 가능 시각 available을 확인한다.
  4. CFAR candidate가 있으면 관측 ADC center와 같은 bin으로 접히는 아날로그 FFT-grid center 가설을 직접 입력한다.
  5. 이 가설을 대역으로 추가하고 원하는 위치추정기를 별도로 실행한다.
  6. 모든 complete frame/bin 감사값은 Activity JSON으로 저장한다.

Activity 실행에는 Scene·선택 마이크·STFT·신호 합성용 최소 거리와 참조하는 audio asset만 필요하다. 위치추정 band, MUSIC source-count, backend, scan 또는 배경 image 연결 오류는 이 검출을 막지 않는다. 반대로 Scene, 선택한 마이크 응답이나 audio asset이 잘못되면 물리 입력 자체를 만들 수 없으므로 실행하지 않는다.

예를 들어 (F_s=48,mathrm{kHz})에서 관측한 ADC 1,125 Hz에는 1,125 Hz, 46,875 Hz와 49,125 Hz 등의 아날로그 가설이 대응한다. 기본 입력값 1,125 Hz는 가장 낮은 가설을 편의상 보여줄 뿐 정답 판정이 아니다. Nyquist 초과 가설도 0–1 MHz 검증 범위 안에서 별도 band로 추가할 수 있으며, 서로 다른 alias order와 spectral inversion 가설을 합치지 않는다.

관측 경계

  • 입력은 사용자가 고른 물리 마이크 채널 하나의 시간 샘플이다. 여러 채널의 waveform 평균, power 평균, 최대값, 투표는 배열 형상과 TDOA에 따라 다른 결과를 만들기 때문에 기본 알고리즘에 포함하지 않는다.
  • 실수 ADC의 관측 범위는 (0\ldots F_s/2)이다. anti-alias filter가 없는 현재 시뮬레이션에서는 (F_s/2)를 넘는 아날로그 성분도 샘플링되지만, 검출기가 보는 것은 접힌 ADC bin이다.
  • 검출된 ADC bin만으로 아날로그 alias order, spectral inversion 전의 원 주파수, 음원 수 또는 위치를 식별할 수 없다. 배열 설계 비교에서는 같은 ADC bin에 대응하는 아날로그 주파수 가설을 별도 Experiment band로 명시해 비교한다.
  • 정확한 DC와 Nyquist bin은 실수 성분 하나뿐이어서 내부 complex FFT bin과 통계 모델이 다르다. CFAR의 CUT와 reference cell에서 제외한다.

시뮬레이터와 detector의 경계

Camera는 Scene의 source와 음향 경로로 선택한 물리 마이크 하나의 수신 신호를 먼저 합성한다. 이는 시험 입력을 만드는 forward simulator이므로 source 위치·주파수와 개수를 사용한다. 그 다음 detector 함수에는 이 한 채널 sample, sample rate, STFT와 검출 설정만 전달하며 source identity·위치·주파수·개수 정답은 전달하지 않는다. Activity JSON은 이 경계를 sceneSourceTruthUsedByPhysicalSimulator: true와 sceneSourceTruthPassedToDetector: false로 구분한다.

Report는 source ID와 source별 도착 목록을 내보내지 않지만, 적용한 음향 모델, 종류별 path 수와 최대 지연 같은 집계 physical audit는 남긴다. 이 값은 source에서 파생된 정보이므로 sourceDerivedAggregatePhysicalAuditIncluded: true라고 명시한다. Detector 판정 입력과 사후 감사 metadata를 같은 의미로 부르지 않는다.

Scene mix가 peak normalization이면 선택한 한 채널의 전체 render peak로 먼저 scale한다. 선택하지 않은 마이크에는 의존하지 않지만 미래 sample에는 의존한다. 따라서 detector는 주어진 sample 이후 causal이어도 raw flux와 절대 delta event를 포함한 end-to-end 전처리는 causal이 아니다. 이 경우 UI와 JSON의 futureDependentNormalization이 true가 된다. 물리 amplitude scale을 비교하려면 Scene normalization을 none으로 둔다.

CA-CFAR와 OS-CFAR

CFAR는 한 STFT frame 안의 좁은 spectral outlier를 찾는다. frame 또는 마이크 사이의 평균을 내지 않고 각 frame을 독립적으로 검사한다. 좌우 training cell을 각각 (R)개, guard cell을 각각 (G)개 쓰며 (N=2R)이다.

CA-CFAR는 training power의 평균 (Z)를 사용한다.

[ Y_b > \alpha Z,\qquad \alpha=N\left(P_{fa}^{-1/N}-1\right) ]

OS-CFAR는 training power를 오름차순 정렬한 뒤 명시한 1-based rank (k)의 (Y_{(k)})를 사용한다.

[ Y_b > \alpha Y_{(k)},\qquad P_{fa}=\prod_{j=0}^{k-1}\frac{N-j}{N-j+\alpha} ]

OS-CFAR multiplier는 이 단조식을 수치적으로 풀어 구한다. 다른 (N,k)의 값을 재사용하지 않는다. 두 방식은 독립 결과이며 합의, winner 선택 또는 위치 map 융합을 하지 않는다.

여기서 (P_{fa})는 CUT와 모든 training cell의 power가 독립·동일 평균의 지수 분포라는 square-law complex-Gaussian 모델 아래에서만 성립하는 tested CUT 하나당 명목 오경보율이다. posterior probability, confidence, frame 전체의 오경보율 또는 실측 보정값이 아니다. Hann window의 인접 bin 상관, 마이크 주파수 응답, colored noise, 잔향, noise-floor 경계와 off-bin leakage는 이 전제를 깨뜨린다. 결과에는 원 power, reference statistic, threshold, ratio와 model-derived-not-empirically-calibrated 상태를 그대로 남긴다.

full symmetric reference window를 만들 수 없는 edge bin은 reference 수를 줄이거나 wrap하지 않고 untested로 남긴다. 검출된 모든 bin을 반환하며 top-K, NMS, gap merge, persistence 또는 임의 대역 padding을 적용하지 않는다.

CA-CFAR는 Finn–Johnson의 adaptive threshold detector를 기준선으로 삼고, OS-CFAR는 다중 target/clutter 환경을 다룬 Rohling의 order-statistic CFAR를 따른다. 비균질 배경에서의 한계는 Gandhi–Kassam, window leakage의 해석은 Harris를 참고한다.

Spectral flux onset

갑자기 시작되는 broadband 또는 tonal 변화를 보는 별도 지표는 Dixon의 linear-magnitude spectral flux를 사용한다. Hamming-window STFT의 연속 frame에 대해

[ d[n,k]=\max(0,|X[n,k]|-|X[n-1,k]|),\qquad SF[n]=\sum_k d[n,k] ]

를 계산한다. per-bin 양의 차이와 합계 원값을 모두 보존하며 log compression, 전역 정규화, SuperFlux 일부 또는 마이크 융합을 섞지 않는다.

실시간 peak 선택은 Böck·Krebs·Schedl의 causal peak picker를 별도 단계로 쓸 수 있다. 현재 frame이 과거 (w_1) frame의 local maximum이고, 과거 (w_3) frame 평균보다 사용자가 지정한 (\delta)만큼 크며, 마지막 검출에서 (w_5) frame보다 멀 때 onset으로 표시한다. (\delta)는 확률이 아닌 운용 임계값이고 환경 데이터로 보정해야 한다. 논문에서 음악 데이터로 최적화한 값을 보편 default나 물리 상수로 취급하지 않는다.

Spectral flux는 onset novelty이지 지속 activity detector가 아니다. 정상 상태의 tone은 첫 상승 뒤 flux가 거의 0이 되며, slow attack은 여러 frame에 분산되어 threshold를 넘지 못할 수 있다. vibrato, tremolo와 확률적 noise 변화는 false trigger를 만들 수 있다. STFT frame을 모두 받은 뒤에야 판단할 수 있으므로 실제 availability latency는 최소 (N/F_s), 갱신 간격은 (H/F_s)다.

배열 설계에서의 사용 순서

  1. 물리 마이크 한 개와 검출 알고리즘·파라미터를 명시한다.
  2. raw ADC-bin 검출 또는 raw onset curve와 모든 설정을 비교한다.
  3. 관심 ADC bin을 선택하되, 이것을 주파수 정답이나 bandwidth 추정으로 부르지 않는다.
  4. baseband 또는 명시한 초과-Nyquist 아날로그 가설을 Experiment band로 추가한다.
  5. 같은 Scene·Array·가설에서 DAS, PHAT, GCC-PHAT, MUSIC의 raw map과 실패 양상을 비교한다. 서로 다른 band의 map은 알려진 별도 wideband 방법을 구현하기 전까지 자동 결합하지 않는다.

Activity의 독립 preflight는 합성과 detector output 상한을 먼저 계산한다. CFAR는 complete frame, frame×bin decision과 FFT butterfly hard cap을, spectral flux는 모든 frame×full-DFT-bin 차이를 보존하는 output byte 상한을 실제 함수와 같은 estimator로 검사한다. 상한을 넘으면 일부 frame이나 top-K bin만 반환하지 않고 신호 합성 전에 실패한다.