콘텐츠로 이동

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). 실패 시 0.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,   # 적응형 유효영역 {"mask": np.ndarray, "contour": np.ndarray | None}. 실패 시 None
    "score": float,                         # 적응형 유효영역 적합도 점수 [0,1], 없으면 -1.0
    "skeleton": np.ndarray | None,          # 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": 0.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으로 반환합니다. 에러가 발생하는 경우, 기본값(거리=0.0, 점수=-1.0 등)으로 채워진 딕셔너리를 반환하며 딕셔너리 내에 "error_code" 키에 해당 에러 코드를 설정합니다. 또한, "error_message" 키에 해당 에러 메시지를 설정합니다. Unknown Error 시 에러 메시지는 스택 트레이스를 반환합니다.

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