Inference
generation.Inferencer
학습한 Generator 모델을 사용하여 검사를 하기 위한 Inferencer class 입니다.
Usage
# 인퍼런스 모듈 빌드
inference_build_config = {
"checkpoint_path": CHECKPOINT_PATH,
"password": PASSWORD,
"device": DEVICE,
}
error, inferencer = Inferencer.build(inference_build_config)
assert error >= 0
# 모듈 정보 확인
error, metadata = read_metadata(CHECKPOINT_PATH)
assert error >= 0
print("Inference metadata:", metadata)
# 인퍼런스 옵션 초기값 확인
n_classes = CONFIG["n_classes"]
inference_options = {
"outputs.time": False,
}
print("Default inference options:")
for key in inference_options:
error, value = inferencer.get_default_inference_option(key)
assert error >= 0
print(f" {key}: {value}")
# 디벨로퍼: Generate 수행
generated_results = {}
for image_id, image_info in data.items():
image_info["save_dir"] = os.path.join(DEMO_DIR, str(image_id))
images = {image_id: image_info}
error, results = inferencer.generate(images=images, use_saved_file=False)
assert error >= 0
if len(results[image_id]["generated_labels"]) > 0:
results[image_id]["generated_labels"][0]["accept_generated_label"] = False
generated_results.update(results)
# 유저 interaction: 생성된 결함 중 제외하고 싶은 결함 제거 작업 수행
error, _ = inferencer.update_generated_labels(generated_results)
assert error >= 0
# 인퍼런스 옵션 변경 후 다시 수행
inference_options = {
"outputs.time": False,
}
for key, value in inference_options.items():
error, default_value = inferencer.get_default_inference_option(key)
assert error >= 0
error, current_value = inferencer.get_inference_option(key)
assert error >= 0
print(key, current_value)
error, _ = inferencer.set_inference_option(key, value)
assert error >= 0
# 디벨로퍼: 인퍼런스 옵션 변경
for key, value in inference_options.items():
error, _ = inferencer.set_inference_option(key, value)
assert error >= 0
# 디벨로퍼: metadata에 inference_option 저장 (예시)
metadata["inference_options"] = inference_options
error, _ = write_metadata(CHECKPOINT_PATH, metadata)
assert error >= 0
# 인퍼런스 옵션이 잘 변경되었는지 확인
print("Inference options:")
for key in inference_options:
error, value = inferencer.get_inference_option(key)
assert error >= 0
print(f" {key}: {value}")
# 디벨로퍼: 새로운 세팅으로 Generate 재수행
for image_id, image_info in data.items():
images = {image_id: image_info}
# 만약 ["params.inspection_size_wh", "params.batch_size", "params.oversized_image_handling"] 옵션이 변경되었을 경우
# use_saved_file=False로 모델 인퍼런스를 재수행해야함!
error, results = inferencer.generate(images=images, use_saved_file=True)
assert error >= 0
build(config)
classmethod
Inferencer class의 instance를 생성합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
config |
Dict
|
Inferencer를 build 하기 위한 config가 담겨 있는 dictionary 입니다. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Inferencer | build가 완료된 generation.Inferencer class의 instance를 반환합니다. |
get_default_inference_option(key)
Inference & postprocess 옵션의 기본 설정 값을 반환합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
key |
str
|
옵션 key |
required |
Returns:
| Name | Type | Description |
|---|---|---|
Any |
Any
|
옵션 value |
get_inference_option(key)
현재 설정된 inference & postprocess 옵션 값을 읽습니다.
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 & postprocess 옵션을 설정합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
key |
str
|
설정하고자 하는 옵션 key 입니다. |
required |
value |
Any
|
설정하고자 하는 옵션 value 입니다. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
None |
None
|
None |
Keys
get_default_inference_option과 동일합니다.
generate(images, use_saved_file)
images들에 대한 generation 수행
Parameters:
Returns:
update_generated_labels(images)
생성된 결함 중, 제외하고 싶은 결함 정보에 대한 업데이트 수행
Parameters:
warmup()
현재 설정된 inference 옵션을 바탕으로 warmup을 수행합니다.