Task3: 침입관제
ktt.module.intrusion_monitoring.Inferencer
영상 침입 모니터링 시스템을 위한 추론 파이프라인을 제공합니다.
주요 기능
- 비디오 클립에서 움직임 탐지 및 분석
- 프레임별 모션 점수 계산 및 히트맵 생성
- 최대 모션 프레임 추출 및 시각화
- 객체 탐지 기반 침입 확인 (미구현)
Usage
demo/demo_intrusion_monitoring_inference.py 참고
build(config)
classmethod
API 인스턴스를 생성합니다.
Parameters:
Returns:
| Name | Type | Description |
|---|---|---|
Inferencer |
Inferencer
|
빌드 완료된 침입 모니터링 추론 핸들러 인스턴스. |
infer(video_paths)
입력 비디오 클립들에 대해 침입 모니터링 추론을 수행합니다.
4단계 파이프라인을 실행합니다: 1) 비디오 로딩 및 전처리 (리사이징, 정규화) 2) 프레임 차이 기반 모션 감지 3) 모션 임계값 초과 시 객체 탐지 (미구현) 4) 결과 후처리 및 시각화 데이터 생성
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
video_paths |
list[str]
|
입력 비디오 파일 경로 리스트. 각 경로는 절대 경로 또는 상대 경로 문자열이어야 합니다. |
required |
Returns:
Note
- video_score는 topk로 집계된 대표 점수입니다.
- best_frame_score는 영상 내 최대 모션 프레임의 점수입니다.
- video_score가 motion_threshold를 초과하는 비디오만 객체 탐지를 수행합니다.
- frame_scores는 실제 프레임 인덱스를 키로 사용합니다 (sampling_stride 고려).
- best_frame_timestamp는 초 단위 타임스탬프입니다 (frame_index / fps로 계산).
- motion_heatmap은 모든 프레임의 모션을 누적한 결과로, 모션이 빈번한 영역을 파악할 수 있습니다.
- detection이 None이면 객체 탐지가 수행되지 않았음을 의미합니다.
- detection이 빈 dict {}이면 탐지는 수행되었으나 아무것도 탐지되지 않았음을 의미합니다.
- detection의 boxes_xyxy는 원본 비디오 해상도 기준으로 변환 완료되어 있습니다.
- detection의 키는 실제 프레임 인덱스를 사용합니다 (sampling_stride 고려).
- detection의 각 프레임별 리스트 필드들의 길이는 모두 동일하며, 각 인덱스는 동일한 탐지 객체를 참조합니다.
Raises:
| Type | Description |
|---|---|
ValueError
|
video_paths가 비어있는 경우. |
RuntimeError
|
모든 비디오의 유효 프레임 수가 0인 경우. |
FileNotFoundError
|
비디오 파일을 찾을 수 없는 경우. |
get_default_inference_option(model, key)
특정 추론 옵션의 기본값을 조회합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model |
str
|
"motion_detection", "detection" 중 하나. |
required |
key |
str
|
옵션 key |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Any |
Any
|
옵션 value. |
Keys
model: detection
key: DET 모델 결과 후처리 파라미터. 가능한 key는 다음과 같습니다.
{
"params.object_score_threshold": list[int], # 각 클래스의 score threshold 값. 예측 box의 score가 threshold보다 작은 경우 필터링 됩니다.
# 각 값은 [0, 100] 범위의 정수. (default [50, 30])
"params.object_area_threshold": list[int], # 각 클래스의 area threshold 값. 예측 box의 면적이 threshold보다 작은 경우 필터링 됩니다.
# 각 값은 0 이상의 정수. (default [0, 0])
"params.max_num_of_detected_objects": list[int], # 각 클래스의 최대 예측 박스 개수. 예측 box의 개수가 이 값을 넘을 경우 score가 낮은 순으로 제거됩니다.
# 각 값은 -1 이상의 정수이며, 값이 -1인 경우 개수 필터링을 적용하지 않습니다. (default [-1, -1])
}
Raises:
| Type | Description |
|---|---|
InferenceOptionKeyError
|
지정된 키가 존재하지 않는 경우. |
Usage
get_inference_option(model, key)
현재 설정된 추론 옵션 값을 조회합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model |
str
|
"motion_detection", "detection" 중 하나. |
required |
key |
str
|
옵션 key |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Any |
Any
|
옵션 value. |
Keys
get_default_inference_option과 동일합니다.
Raises:
| Type | Description |
|---|---|
InferenceOptionKeyError
|
지정된 키가 존재하지 않는 경우. |
set_inference_option(model, key, value)
추론 옵션을 설정합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model |
str
|
"motion_detection", "detection" 중 하나. |
required |
key |
str
|
옵션 key |
required |
value |
Any
|
설정할 새로운 값. |
required |
Keys
get_default_inference_option과 동일합니다.