158 lines
9.1 KiB
Markdown
158 lines
9.1 KiB
Markdown
# 전 대역 활동 검출 모델
|
||
|
||
이 문서는 위치 추정 전에 ADC 대역에서 관측되는 신호 변화를 찾는 보조 분석의
|
||
의미와 한계를 정의한다. 검출기는 Scene의 음원 주파수·위치·개수를 입력으로 받지
|
||
않으며, 검출 결과를 위치 정답이나 분석 대역으로 자동 변환하지 않는다.
|
||
|
||
## Camera에서 가장 짧은 사용 순서
|
||
|
||
1. Acoustic Camera의 분석 대역 아래 **전 대역 활동 검사**를 펼친다.
|
||
2. 한 물리 마이크와 OS-CFAR, CA-CFAR 또는 Dixon spectral flux를 고른다.
|
||
3. **전 대역 검사**를 실행하고 frame의 raw 통계와 실제 판정 가능 시각
|
||
<code>available</code>을 확인한다.
|
||
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은 이 경계를
|
||
<code>sceneSourceTruthUsedByPhysicalSimulator: true</code>와
|
||
<code>sceneSourceTruthPassedToDetector: false</code>로 구분한다.
|
||
|
||
Report는 source ID와 source별 도착 목록을 내보내지 않지만, 적용한 음향 모델,
|
||
종류별 path 수와 최대 지연 같은 집계 physical audit는 남긴다. 이 값은 source에서
|
||
파생된 정보이므로
|
||
<code>sourceDerivedAggregatePhysicalAuditIncluded: true</code>라고 명시한다.
|
||
Detector 판정 입력과 사후 감사 metadata를 같은 의미로 부르지 않는다.
|
||
|
||
Scene mix가 peak normalization이면 선택한 한 채널의 **전체 render peak**로 먼저
|
||
scale한다. 선택하지 않은 마이크에는 의존하지 않지만 미래 sample에는 의존한다.
|
||
따라서 detector는 주어진 sample 이후 causal이어도 raw flux와 절대 delta event를
|
||
포함한 end-to-end 전처리는 causal이 아니다. 이 경우 UI와 JSON의
|
||
<code>futureDependentNormalization</code>이 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](https://www.rsp-italy.it/Electronics/Magazines/RCA%20Review/_contents/RCA%20Review%201968-09.pdf)를
|
||
기준선으로 삼고, OS-CFAR는 다중 target/clutter 환경을 다룬
|
||
[Rohling의 order-statistic CFAR](https://doi.org/10.1109/TAES.1983.309350)를
|
||
따른다. 비균질 배경에서의 한계는
|
||
[Gandhi–Kassam](https://doi.org/10.1109/7.7185), window leakage의 해석은
|
||
[Harris](https://doi.org/10.1109/PROC.1978.10837)를 참고한다.
|
||
|
||
## Spectral flux onset
|
||
|
||
갑자기 시작되는 broadband 또는 tonal 변화를 보는 별도 지표는
|
||
[Dixon의 linear-magnitude spectral
|
||
flux](https://www.dafx.de/paper-archive/2006/papers/p_133.pdf)를 사용한다.
|
||
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](https://www.cp.jku.at/research/papers/Boeck_etal_ISMIR_2012.pdf)를
|
||
별도 단계로 쓸 수 있다. 현재 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만 반환하지 않고
|
||
신호 합성 전에 실패한다.
|