콘텐츠로 이동

Inference

monitoring.GlassMonitoringEngine

KCC글라스 치수측정을 위한 GlassMonitoringEngine class 입니다.

Usage

demo/demo_monitor.py 참고


build(config) classmethod

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

Parameters:

Name Type Description Default
config dict

모니터링링 엔진 빌드를 위한 설정 딕셔너리입니다.

{
    "segmentation": {
        "checkpoint_path": str, # 세그멘테이션 모델 체크포인트 경로
        "password": str, # 세그멘테이션 모델 체크포인트 패스워드
        "device": str, # 세그멘테이션 모델 체크포인트 디바이스
        "inference_options": dict | None, # 세그멘테이션 모델 인퍼런스 옵션. 기본값은 None.
    }
}

required

Returns: GlassMonitoringInferenceHandler: 빌드가 완료된 GlassMonitoringInferenceHandler 인스턴스.


process_frame(frame)

단일 프레임을 입력으로 받아 모니터링 결과를 반환합니다.

Parameters:

Name Type Description Default
frame ndarray

입력 이미지 (RGB, shape: (H, W, 3)).

required

Returns:

Name Type Description
dict dict

모니터링 결과가 담긴 딕셔너리입니다. 예시는 아래와 같습니다.

{
    "distance": float,                      # Ribbon Edge(ribbon_point)-Knurl Edge(knurl_point) 간 직선 거리(mm). 실패 시 -1.0
    "ribbon_point": dict | None,            # Ribbon Edge 기준점 좌표 {"x": int, "y": int}. 실패 시 None
    "knurl_point": dict | None,             # Knurl Edge 기준점 좌표 {"x": int, "y": int}. 실패 시 None
    "adaptive_valid_region": dict | None,   # Ribbon Edge 적응형 유효영역 {"mask": np.ndarray, "contour": np.ndarray | None}. 실패 시 None
    "score": float,                         # Ribbon Edge 적응형 유효영역 적합도 점수 [0,1], 없으면 -1.0
    "skeleton": np.ndarray | None,          # Ribbon Edge Skeleton 좌표 (N,2). 실패 시 None
    "time": dict,                           # 각 단계별 수행 시간.
                                            # "segmentation": 세그멘테이션 모델 수행 시간 (ms)
                                            # "distance_measurement": 거리 측정 시간 (ms)
                                            # "adaptive_region_monitor": 적응형 유효영역 모니터링 시간 (ms)
    "error_code": int,                      # 예외 발생 시 에러 코드. 정상 시 0
    "error_message": str,                   # 예외 발생 시 에러 메시지
}

# default output. 정상 처리되지 않은 경우 아래의 기본값을 반환합니다.
{
    "distance": -1.0,
    "ribbon_point": None,
    "knurl_point": None,
    "adaptive_valid_region": None,
    "score": -1.0,
    "skeleton": None,
    "time": {},
    "error_code": 0,
    "error_message": "",
}

Note

[에러 핸들링] 모니터링 중에 에러로 인하여 파이썬 모듈이 종료되는 것을 방지하기 위하여 process_frame 메소드는 error_code를 항상 0으로 반환합니다. 에러가 발생하는 경우, 기본값(거리=-1.0, 점수=-1.0 등)으로 채워진 딕셔너리를 반환하며 딕셔너리 내에 "error_code" 키에 해당 에러 코드를 설정합니다. 또한, "error_message" 키에 해당 에러 메시지를 설정합니다. Unknown Error 시 에러 메시지는 스택 트레이스를 반환합니다.

[예측 실패의 경우] distance 측정에 실패한 경우, log.warning에 관련 메시지가 출력되며 distance는 -1.0, ribbon_point와 knurl_point은 None을 반환하며, score와 skeleton은 기본 값을, adaptive_valid_region은 과거 프레임의 결과를 토대로 추론된 값을 반환합니다.


get_default_monitoring_option(key)

Ribbon Edge 모니터링 옵션의 기본 설정 값을 반환합니다.

Parameters:

Name Type Description Default
key str

옵션 key

required

Returns:

Name Type Description
Any Any

옵션 value

Keys

사용 가능한 key와 value 목록:

{
    "params.num_history_frame": int, # Adaptation 속도를 결정하는 파리미터 입니다.
                                     # 값은 1 이상의 정수. (default 120)
    "params.region_size_multiplier": int, # Adaptation 영역의 크기를 결정하는 파라미터 입니다.
                                          # 값은 [1, 10] 범위의 정수. (default 5)
}

사용 예시:

monitoring_engine.get_default_monitoring_option(key="params.num_history_frame")


get_monitoring_option(key)

현재 설정된 Ribbon Edge 모니터링 옵션 값을 읽습니다.

Parameters:

Name Type Description Default
key str

옵션 key

required

Returns:

Name Type Description
Any Any

옵션 value

Keys

get_default_monitoring_option의 Keys 참고


set_monitoring_option(key, value)

Ribbon Edge 모니터링 옵션을 설정합니다.

Parameters:

Name Type Description Default
key str

설정하고자 하는 옵션 key

required
value Any

성정하고자 하는 옵션 value

required

Returns:

Name Type Description
None None

None

Keys

get_default_monitoring_option의 Keys 참고.