콘텐츠로 이동

Inference

video_classification.InferenceHandler

학습한 Video Classification 모델을 사용하여 검사할 프레임을 추출하기 위한 InferenceHandler 클래스입니다.

Usage

demo/demo_inference.py 참고


build(config) classmethod

InferenceHandler 인스턴스를 생성합니다.

Parameters:

Name Type Description Default
config dict

InferenceHandler를 build 하기 위한 config가 담긴 dictionary 입니다.

{
    "checkpoint_path": str,  # 체크포인트 경로
    "password": str,
    "inference_options": Optional[Dict[str, Any]],  # 추론 옵션
    "device": Union[int, str],  # GPU 번호 (int) 또는 "cpu" (str) (기본값 "cpu")
}

required

Returns:

Name Type Description
InferenceHandler InferenceHandler

build가 완료된 video_classification.InferenceHandler 클래스의 인스턴스를 반환합니다.


infer(data, frame_timestamps)

주어진 데이터를 사용하여 추론을 수행합니다.

Parameters:

Name Type Description Default
data List[ndarray]

Inference에 사용할 데이터 입니다. 데이터는 (H, W, C) 형태와 RGB 채널의 numpy array 입니다.

required
frame_timestamps list[int]]

추론할 데이터에 대한 타임스탬프.

required

Returns:

Name Type Description
inference_status InferenceStatus

추론 상태를 반환합니다. InferenceStatus.SELECTED 이면, get_selected_frame을 호출하여 선택된 프레임을 가져올 수 있습니다.

inference_output list(InferenceOutput)

각 프레임에 대한 추론 결과를 반환합니다. list의 형태이며, 각 요소는 다음과 같은 키를 가집니다. (score, class_index, error)

InferenceStatus
  • INSPECT: 추론을 진행중이며, SELECT 과정에 있지 않습니다.
  • SELECTING: 현재 검사대상 구간이 존재하며, 검사후보를 선택 중입니다.
  • SELECTED: 검사후보를 선택했습니다.
  • ERROR: 추론 중 에러가 발생했습니다.
InferenceOutput
  • score (float): 추론 결과 검사후보의 점수입니다. (0.0 ~ 1.0)
  • class_index (int): 추론 결과의 클래스 인덱스입니다. (0 이면 검사대상이 아니며, 1 이면 검사후보 입니다.)
  • error (int): 에러 코드입니다. (0 이면 정상입니다.)
Usage
error, message, (inference_status, inference_output) = inference_handler.infer(data=sequence, timestamp=timestamp)

if inference_status == InferenceStatus.SELECTED:
    error, message, selected_frames = inference_handler.get_selected_frames()

# infer API에서 에러가 발생하는 경우, error==0, error_code=="Success"가 반환됩니다.
# 대신 inference_status가 InferenceStatus.ERROR로 설정되며, error code는 inference_output에서 확인할 수 있습니다.
# inference_output 각 요소의 값은 0.0, 0, error_code로 설정됩니다.
if inference_status == InferenceStatus.ERROR:
    error_code = inference_output[0]["error"]

get_selected_frames()

선택된 프레임들을 반환합니다.

Returns:

Type Description
list[SelectedFrameInfo]

list[SelectedFrameInfo]: 선택된 프레임들을 반환합니다. list[dict]의 형태이며, 1개 초과의 dict가 존재할 수 있고, 다음과 같은 키를 가집니다.

Keys
  • timestamp: int
  • frame: np.ndarray # 검사 시 제공했던 raw frame.
  • score: float
Usage
error, message, selected_frames = inference_handler.get_selected_frames()

print(selected_frames)
# [
#   {'timestamp': 0, 'frame': np.ndarray, 'score': 0.0},
#   {'timestamp': 1, 'frame': np.ndarray, 'score': 0.0},
]

get_default_inference_option(key)

inference 옵션의 기본 설정 값을 반환합니다.

Parameters:

Name Type Description Default
key str

옵션 key

required

Returns:

Name Type Description
Any Any

옵션 value

Keys

사용 가능한 key와 value 목록:

{
    "frame_selection_method": "highest_score",  # 프레임 선택 방법
}


get_inference_option(key)

현재 설정된 inference 옵션 값을 읽습니다.

Parameters:

Name Type Description Default
key str

옵션 key

required

Returns:

Name Type Description
Any Any

옵션 value

Keys

get_default_inference_option과 동일합니다.


set_inference_option(key, value)

inference 옵션을 설정합니다.

Parameters:

Name Type Description Default
key str

옵션 key

required
value Any

옵션 value

required
Keys

get_default_inference_option과 동일합니다.


reset()

InferenceHandler를 초기화합니다. 만약, 영상이 끊겼다가 들어올 경우 사용합니다.

Usage
inference_handler.reset()