docs: explain full-band activity workflow

This commit is contained in:
2026-08-29 14:03:38 +09:00
parent 51e346a477
commit 764cf28cf8
9 changed files with 252 additions and 19 deletions
+32 -3
View File
@@ -1,8 +1,9 @@
# 데이터 계약
micarrsim의 저장 형식은 JSON Schema Draft 2020-12와 추가 관계 검증으로 정의한다. 모든 길이는 m,
시간은 s, 주파수는 Hz다. 배열 중심이 원점이고 `+x`는 오른쪽, `+y`는 위쪽, `+z`는 배열에서
장면을 향하는 우수 좌표계를 사용한다.
micarrsim의 핵심 Array·Scene·Experiment·Result 형식은 JSON Schema Draft 2020-12와 추가 관계
검증으로 정의한다. Activity와 비교 기록 같은 편의 감사 export는 이 문서에서 별도 범위를
명시한다. 모든 길이는 m, 시간은 s, 주파수는 Hz다. 배열 중심이 원점이고 `+x`는 오른쪽,
`+y`는 위쪽, `+z`는 배열에서 장면을 향하는 우수 좌표계를 사용한다.
## 파일 종류
@@ -10,6 +11,8 @@ micarrsim의 저장 형식은 JSON Schema Draft 2020-12와 추가 관계 검증
- `micarrsim.scene`: 음원·ambient recipe, 위치 ground truth와 로컬 asset manifest
- `micarrsim.experiment`: scan plane/grid, 주파수 대역, STFT와 위치 추정 설정
- `micarrsim.result`: raw/display acoustic map, 복수 peak와 source 매칭, 평가·성능 정보
- `micarrsim.activity-report`: 단일 물리 마이크의 raw CFAR 또는 spectral-flux 감사 export.
core schema 검증 대상은 아니며 위치추정 Result를 대신하지 않는다.
- `micarrsim.comparison-history`: 세션의 배열별 Result 요약을 모은 편의 export. core schema
검증 대상은 아니며 각 원본 Result JSON을 대신하지 않는다.
@@ -202,6 +205,32 @@ Nyquist 위 band의 `aliasOrderResolution`은 `not-attempted`다. MUSIC의
bin이 선택됐을 때 포함한다. noise와 asset source는 모든 band에 포함한다. 녹음 asset의
spectrum을 임의 threshold로 분류하는 미검증 multiband 알고리즘은 사용하지 않는다.
## Activity JSON
Acoustic Camera의 Activity export는 <code>schemaVersion: "1.0.0"</code>,
<code>kind: "micarrsim.activity-report"</code>인 편의 감사 문서다. 최상위에는 실제 실행
Array·Scene·Experiment ID, 생성 시각과 64자리 SHA-256 <code>inputHash</code>가 있고,
<code>report</code>에는 다음 값이 있다.
- 사용자가 선택한 원래 microphone index·id·position과 microphone fusion 없음
- sample rate/count, FFT/hop, ADC 0…Fs/2와 alias order 미결정 상태
- simulator가 Scene truth로 물리 sample을 만들었다는 사실과 detector에는 truth를 전달하지
않았다는 분리 표기
- 선택 마이크 한 채널의 normalization·clipping·음향 경로 집계와 causal 전처리 여부
- CFAR의 모든 complete frame×모든 ADC bin 또는 spectral flux의 raw ODF와 모든
frame×full-DFT-bin 양의 차이
- 알고리즘 설정·가정·보정 상태, workload와 signal-generation/detector timing
Source identity와 source별 arrival 목록은 포함하지 않지만 path 수·최대 지연 같은 source-derived
집계 physical audit는 포함하며 이를 명시한다. CFAR의 <code>untested</code> bin과 zero-threshold
ratio 상태도 삭제하지 않는다. Typed array는 JSON 숫자 배열로 변환하고 비유한 수가 생기면
문자열 <code>Infinity</code>, <code>-Infinity</code> 또는 <code>NaN</code>으로 명시한다.
Activity <code>inputHash</code>는 검출에 실제로 사용한 선택 마이크, Scene의 음향 입력
(배경 image와 비audio asset 제외), STFT, 합성 최소 거리와 detector 설정의 canonical
UTF-8 SHA-256이다. 분석 band·scan·위치추정 algorithm/backend는 detector 입력이 아니므로
hash에 넣지 않는다. Array·Scene·Experiment ID는 provenance label로 별도 보존한다.
## 재현성 hash
`result.inputHash`는 실행에 사용한 `{ array, scene, experiment }`를 객체 key 사전순으로 재귀