Inference
safety.InferenceHandler
학습한 Object Detection/Classification 모델을 사용하여 검사를 하기 위한 InferenceHandler class 입니다.
Usage
demo/inference.py 참고
build(config)
classmethod
InferenceHandler class의 instance를 생성합니다.
Parameters:
Returns:
| Name | Type | Description |
|---|---|---|
InferenceHandler |
build가 완료된 safety.InferenceHandler class의 instance를 반환합니다. |
Note
- "event_type_map"은 event_alarm 모듈에서 사용하는 event_type str과 api에서 사용하는 event_type str을 매핑하는 dictionary 입니다.
- 백엔드에서는 사용하지 않으며, 연구소 내부적으로 사용하는 빌드 파라미터입니다.
- "detection_checkpoint_path", "classification_checkpoint_path", "reidentification_checkpoint_path"는 각 모델의 체크포인트 경로를 설정합니다.
- None인 경우 해당 버전의 default 모델을 사용합니다.
infer(images, camera_ids, timestamps)
현재 설정된 inference 옵션을 바탕으로 inference를 수행합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
images |
list[ndarray]
|
inference를 수행할 이미지들의 list (shape: [H, W, C]) |
required |
camera_ids |
list[int]
|
images의 각 image에 대한 camera_id list |
required |
timestamps |
list[int]
|
images의 각 image에 대한 timestamp list (단위: 밀리초) |
required |
Returns:
warmup()
현재 설정된 inference 옵션을 바탕으로 warmup을 수행합니다.
warmup은, 현재 inference_option이 잘 동작하는지 확인 + GPU를 첫 호출시 속도가 느린 이슈를 해결하기 위해,
현재 inference_option에 맞춰 더미 입력에 대한 InferenceHandler.infer를 호출합니다.
get_default_inference_option(model, key)
Model별 Postprocess 옵션의 기본 설정 값을 반환합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model |
str
|
"classification", "detection", 또는 "safety" |
required |
key |
str
|
옵션 key |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Any |
Any
|
옵션 value |
사용 가능한 key와 value 목록
model: detection
key: DET 모델 결과 후처리 파라미터. 가능한 key는 다음과 같습니다.
{
"params.object_score_threshold": list[int], # 각 클래스의 score threshold 값. 예측 box의 score가 threshold보다 작은 경우 필터링 됩니다.
# 각 값은 [0, 100] 범위의 정수. (default [30, 10, ... , 10])
"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 [30, -1, ... , -1])
}
model: classification
key: CLS 모델 결과 후처리 파라미터. 가능한 key는 다음과 같습니다.
{
"params.additional_scores": list[int | float], # scores_including_add를 계산할 때, scores_original에 더해지는 값입니다. 각 값은 [0, 100] 범위의 실수. (default [0.0, ... , 0.0])
}
model: safety
key: 가능한 key는 다음과 같습니다.
get_inference_option(model, key)
Model에 따른 현재 설정된 postprocess 옵션 값을 읽습니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model |
str
|
"classification", "detection" 또는 "safety" |
required |
key |
str
|
옵션 key |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Any |
Any
|
옵션 value |
Keys
get_default_inference_option과 동일합니다.
set_inference_option(model, key, value)
Model에 따른 Postprocess 옵션을 설정합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
model |
str
|
"classification", "detection" 또는 "safety" |
required |
key |
str
|
설정하고자 하는 옵션 key 입니다. |
required |
value |
Any
|
설정하고자 하는 옵션 value 입니다. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
None |
None
|
None |
Keys
get_default_inference_option과 동일합니다.
register_camera(camera_id)
검사할 camera_id를 등록합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
camera_id |
int
|
등록할 camera_id |
required |
Returns:
| Name | Type | Description |
|---|---|---|
None |
None
|
None |
Raises:
| Type | Description |
|---|---|
InvalidCameraIdError
|
camera_id가 int가 아닌 경우 발생하는 에러 |
AlreadyRegisteredCameraIdError
|
이미 등록된 camera_id를 등록하려고 할 때 발생하는 에러 |
release_camera(camera_id)
등록된 camera_id를 해제합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
camera_id |
int
|
해제할 camera_id |
required |
Returns:
| Name | Type | Description |
|---|---|---|
None |
None
|
None |
Raises:
| Type | Description |
|---|---|
UnregisteredCameraIdError
|
등록되지 않은 camera_id를 해제하려고 할 때 발생하는 에러 |
get_registered_camera_ids()
등록된 camera_id 리스트를 반환합니다.
Returns:
| Type | Description |
|---|---|
list[int]
|
list[int]: 등록된 camera_id 리스트 |
get_monitoring_area(camera_id)
등록된 camera_id에 대한 monitoring area를 반환합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
camera_id |
int
|
monitoring area를 반환할 camera_id |
required |
Returns:
| Type | Description |
|---|---|
dict[str, list[list[list[int]]]]
|
Raises: UnregisteredCameraIdError: 등록되지 않은 camera_id에 대한 정보를 요청할 때 발생하는 에러
set_monitoring_area(camera_id, monitoring_area)
등록된 camera_id에 대한 monitoring area를 설정합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
camera_id |
int
|
monitoring area를 설정할 camera_id |
required |
monitoring_area |
dict[str, list[list[list[int]]]]
|
monitoring area polygon list
형태는 |
required |
Returns:
| Name | Type | Description |
|---|---|---|
None |
None
|
None |
Raises:
| Type | Description |
|---|---|
InvalidMonitoringAreaError
|
monitoring_area가 올바르지 않을 때 발생하는 에러 |
UnregisteredCameraIdError
|
등록되지 않은 camera_id에 대해 설정할 때 발생하는 에러 |
get_default_object_options(camera_id)
등록된 camera_id에 대한 default object options를 반환합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
camera_id |
int
|
default object options를 반환할 camera_id |
required |
Returns:
Raises:
| Type | Description |
|---|---|
UnregisteredCameraIdError
|
등록되지 않은 camera_id에 대한 정보를 요청할 때 발생하는 에러 |
get_object_options(camera_id)
등록된 camera_id에 대한 object options를 반환합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
camera_id |
int
|
object options를 반환할 camera_id |
required |
Returns:
| Type | Description |
|---|---|
dict[str, dict]
|
dict[str, dict[str, Any]]: object options. 형태는 |
Raises:
| Type | Description |
|---|---|
UnregisteredCameraIdError
|
등록되지 않은 camera_id에 대한 정보를 요청할 때 발생하는 에러 |
set_object_options(camera_id, object_options)
등록된 camera_id에 대한 object options를 설정합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
camera_id |
int
|
object options를 설정할 camera_id |
required |
object_options |
dict[str, dict]]
|
object options. 형태는 |
required |
Returns:
| Name | Type | Description |
|---|---|---|
None |
None
|
None |
Raises:
| Type | Description |
|---|---|
InvalidObjectOptionsError
|
object_options가 올바르지 않을 때 발생하는 에러 |
UnregisteredCameraIdError
|
등록되지 않은 camera_id에 대해 설정할 때 발생하는 에러 |
get_default_event_options(camera_id)
등록된 camera_id에 대한 default event options를 반환합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
camera_id |
int
|
default event options를 반환할 camera_id |
required |
Returns:
get_event_options(camera_id)
등록된 camera_id에 대한 event options를 반환합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
camera_id |
int
|
event options를 반환할 camera_id |
required |
Returns:
| Type | Description |
|---|---|
dict[str, dict]
|
dict[str, dict[str, Any]]: event options. 형태는 |
Raises:
| Type | Description |
|---|---|
UnregisteredCameraIdError
|
등록되지 않은 camera_id에 대한 정보를 요청할 때 발생하는 에러 |
set_event_options(camera_id, event_options)
등록된 camera_id에 대한 event options를 설정합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
camera_id |
int
|
event options를 설정할 camera_id |
required |
event_options |
dict[str, dict]]
|
event options. 형태는 |
required |
Returns:
| Name | Type | Description |
|---|---|---|
None |
None
|
None |
Raises:
| Type | Description |
|---|---|
InvalidEventOptionsError
|
event_options가 올바르지 않을 때 발생하는 에러 |
UnregisteredCameraIdError
|
등록되지 않은 camera_id에 대해 설정할 때 발생하는 에러 |
get_default_alarm_options(camera_id)
등록된 camera_id에 대한 default alarm options를 반환합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
camera_id |
int
|
default alarm options를 반환할 camera_id |
required |
Returns:
Note
start_time==end_time인 경우, 항상 알람이 활성화 됩니다.
Raises:
| Type | Description |
|---|---|
UnregisteredCameraIdError
|
등록되지 않은 camera_id에 대한 정보를 요청할 때 발생하는 에러 |
get_alarm_options(camera_id)
등록된 camera_id에 대한 alarm options를 반환합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
camera_id |
int
|
alarm options를 반환할 camera_id |
required |
Returns:
| Type | Description |
|---|---|
dict[str, dict]
|
dict[str, dict]: alarm options. 형태는 |
Raises:
| Type | Description |
|---|---|
UnregisteredCameraIdError
|
등록되지 않은 camera_id에 대한 정보를 요청할 때 발생하는 에러 |
set_alarm_options(camera_id, alarm_options)
등록된 camera_id에 대한 alarm options를 설정합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
camera_id |
int
|
alarm options를 설정할 camera_id |
required |
alarm_options |
dict[str, dict]]
|
alarm options. 형태는 |
required |
Returns:
| Name | Type | Description |
|---|---|---|
None |
None
|
None |
Raises:
| Type | Description |
|---|---|
InvalidAlarmOptionsError
|
alarm_options가 올바르지 않을 때 발생하는 에러 |
UnregisteredCameraIdError
|
등록되지 않은 camera_id에 대해 설정할 때 발생하는 에러 |
reset()
InferenceHandler의 상태를 초기화합니다.