Introduction
API Return Value
모든 API는 기본적으로 (error_code, return value)의 tuple을 리턴합니다.
error_code=0인 경우, 함수가 성공적으로 동작했으며return value는 실제 함수의 리턴 값입니다.error_code≠0인 경우, 함수 실행중 error가 발생했다는 뜻이며return value는 None입니다.
error_code 에 해당하는 에러 메세지를 얻으려면 core.get_error_message() 함수를 이용하세요.
core.get_error_message(error_code)
입력으로 받은 error_code에 해당하는 error_message를 반환합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
error_code |
int
|
error_code |
required |
Raises:
| Type | Description |
|---|---|
UndefinedErrorCodeError
|
정의되지 않은 error_code를 입력으로 받을 경우 발생하는 error |
Returns:
| Name | Type | Description |
|---|---|---|
str |
str
|
error_message |
API Demo Usage
-
Train API (see demo/train.py)
from core import Trainer # Trainer 빌드 error, trainer = Trainer.build(CONFIG, DATA) assert error >= 0 # 0번 GPU로 이동 error, result = trainer.to_device(DEVICE) assert error >= 0 # validation 가능한지 확인 error, validation_enabled = trainer.validation_enabled() assert error >= 0 error, total_iterations = trainer.get_total_num_iterations() print(f"total steps to train: {total_iterations}") # 학습 루프 for step in range(total_iterations): error, result = trainer.train_one_step() assert error >= 0 if validation_enabled and (step + 1) % VALIDATION_INTERVAL == 0: error, result = trainer.validate() assert error >= 0 print(result) # 학습 후처리 (thresholds 계산) error, result = trainer.post_train_process() assert error >= 0 print(result) # 체크포인트 저장 error, _ = trainer.save_checkpoint( checkpoint_path=CHECKPOINT_PATH, password=PASSWORD, metadata={"description": "demo"}, ) assert error >= 0 -
Inference API (see demo/inference.py)
from core import InferenceHandler # 인퍼런스 모듈 빌드 inferene_build_config = { "checkpoint_path": CHECKPOINT_PATH, "password": PASSWORD, "device": DEVICE, } error, inference_handler = InferenceHandler.build(inferene_build_config) assert error >= 0 # 인퍼런스 옵션 초기값 확인 error, inference_options = inference_handler.get_default_inference_options() assert error >= 0 print("get_default_inference_options:", inference_options) # 디벨로퍼: Analyze 수행 error, _ = inference_handler.set_analysis_data(images=DATA["validation_images"], labeled=True) assert error >= 0 error, analysis_steps = inference_handler.initialize_analysis() assert error >= 0 for _ in range(analysis_steps): error, _ = inference_handler.step_analysis() assert error >= 0 error, analysis_results = inference_handler.finalize_analysis() assert error >= 0 print("Analysis results:", analysis_results["summary"]) # 디벨로퍼: 인퍼런스 옵션 변경 inference_options = { "outputs": { "mask": True, "is_ng": True, "objects": True, }, "params": { "score_threshold": 1.8, "anomaly_threshold": 1.95, "area_threshold": 10, }, } error, _ = inference_handler.set_inference_options(inference_options) assert error >= 0 # 인퍼런스 옵션이 잘 변경되었는지 확인 error, inference_options = inference_handler.get_inference_options() assert error >= 0 print("inference_options:", inference_options) # 디벨로퍼: 새로운 세팅으로 Analyze 재수행 error, analysis_results = inference_handler.analyze_with_existing_data() assert error >= 0 print("Analysis results:", analysis_results["summary"]) # 디벨로퍼: 변경된 인퍼런스 옵션으로 체크포인트 다시 저장 error, _ = inference_handler.save_checkpoint( checkpoint_path=CHECKPOINT_PATH, password=PASSWORD, ) assert error >= 0 # 런타임: 저장된 체크포인트로 핸들러 빌드 error, inference_handler = InferenceHandler.build(inferene_build_config) assert error >= 0 # 런타임 검사: 후처리까지 한번에 최적화된 연산으로 수행 image_path = DATA["validation_images"][0]["path"] error, output = inference_handler.infer_and_postprocess(images=[image_path]) assert error >= 0