Introduction
API Return Value
모든 public 메서드는 (code, message, value)의 tuple을 반환합니다.
code=0인 경우, 호출이 성공했으며value는 메서드의 반환 값입니다.code<0인 경우, 호출이 실패했으며value는 None이고message에 실패 사유가 있습니다.
메서드별 Raises의 오류는 예외로 전파되지 않고 code로 반환됩니다. CatalogEntry와 CatalogData의 생성은 handler 메서드가 아니므로, 두 dataclass의 형식 위반은 예외로 직접 전파됩니다.
Error Code
실패한 호출의 code는 음수 6자리 정수이며, 절댓값의 끝 세 자리가 오류 종류입니다. 종류별 번호는 OnboardHandler와 InferenceHandler 설명의 목록에 있습니다.
Call Order
호출 순서는 온보딩, 카탈로그 조립, 추론 준비, 추론입니다. 추론은 이미지 식별과 스캔 검사 두 가지이며 하나의 InferenceHandler를 함께 사용합니다.
1. 온보딩
OnboardHandler.build로 handler를 생성합니다.validate는 부품을 등록하지 않고 온보딩 가능한 형상인지 판정합니다. 이 호출은 선택 사항입니다.onboard는 CAD 파일 경로 하나를 받아PartRecord를 반환합니다.- handler는 부품 간 상태를 보관하지 않으므로
PartRecord의 보관은 호출자가 담당합니다.
2. 카탈로그 조립
- 호출자가 부품마다 int
part_id를 부여해CatalogEntry(part_id, record)를 생성합니다. CatalogEntry목록으로CatalogData(catalog_id, parts)를 생성합니다.parts의 순서가 동점 처리 순서입니다.- 두 dataclass는
core.data.catalog.catalog_data에서import합니다.
3. 추론 준비
InferenceHandler.build로 handler를 생성합니다. build 직후에는 활성 카탈로그가 없습니다.set_catalog로CatalogData를 전달합니다. 카탈로그 교체도 같은 호출이며 모델을 다시 로드하지 않습니다.warmup은set_catalog뒤에 호출합니다.
4. 이미지 식별
identify_images는 부품 하나를 촬영한 RGB 이미지 목록을 받아 top-M candidate와 이미지별 detection을 반환합니다.- candidate의
part_id는CatalogEntry에 부여한 값입니다.
5. 스캔 검사
검사 한 건은 세 호출로 구성됩니다.
prepare_scan은 스캔 파일을 읽어 배경을 제거한ScanSurface를 반환합니다.identify_scan은 그ScanSurface의 부품 후보 순위를 활성 카탈로그에서 반환합니다.inspect_scan은ScanSurface와 호출자가 전달한PartGeometry로 pose와 표면 편차를 반환합니다.PartGeometry는 온보딩 산출물의PartRecord.geometry입니다.
Active Catalog
활성 카탈로그는 set_catalog로 전달한 CatalogData이며 이미지 식별과 스캔 식별이 함께 사용합니다.
| 메서드 | 활성 카탈로그 |
|---|---|
identify_images, identify_scan, warmup |
활성 카탈로그가 필요합니다. set_catalog 전에 호출하면 CatalogNotSetError의 code를 반환합니다. |
prepare_scan, inspect_scan |
활성 카탈로그를 읽지 않습니다. set_catalog 전에도 동작합니다. |
Inference Option
inference option의 target은 identify이며 key는 top_m, aggregate, input_resize입니다.
set_inference_option은 모델을 다시 build하지 않고 값을 설정합니다.- 지원 key와 기본값은
get_default_inference_option에 있습니다. - 현재 값은
get_inference_option으로 조회합니다. InferenceHandler.build의inference_optionkey로 초기값을 지정할 수 있습니다.