Train
generation.Trainer
Defect Generator 모델을 학습시키기 위한 Trainer class 입니다.
학습 데이터 수 권장 사항
| MODE | 최소 이미지 수 | 비고 |
|---|---|---|
Pen |
10장 | - |
Box |
50장 | 10장으로 학습한 모델의 pen 모드로 생성한 이미지 (40장+) 활용 가능 |
Auto |
50장 | 10장으로 학습한 모델의 pen 모드로 생성한 이미지 (40장+) 활용 가능 |
Usage
# Trainer 빌드
error, message, trainer = Trainer.build(CONFIG, DATA)
assert error >= 0
# 0번 GPU로 이동
error, message, result = trainer.to_device(DEVICE)
assert error >= 0
# validation 가능한지 확인
error, message, validation_enabled = trainer.validation_enabled()
assert error >= 0
# 학습 루프: Defect Generator
error, message, _ = trainer.change_train_mode("defect")
assert error >= 0
for step in range(CONFIG["total_iterations"]):
error, message, result = trainer.train_one_step()
assert error >= 0
if (step + 1) % PRINT_INTERVAL == 0:
print(f"Train {step + 1}:", result)
if validation_enabled and (step + 1) % VALIDATION_INTERVAL == 0:
error, message, result = trainer.validate()
assert error >= 0
print(f"Validation {step + 1}:", result)
# 학습: Defect Region Proposer
error, message, _ = trainer.train_auto_mode()
assert error >= 0
# 학습 루프: Mask Generator
error, message, _ = trainer.change_train_mode("mask")
assert error >= 0
for step in range(CONFIG["total_iterations"]):
error, message, result = trainer.train_one_step()
assert error >= 0
if (step + 1) % PRINT_INTERVAL == 0:
print(f"Train {step + 1}:", result)
if validation_enabled and (step + 1) % VALIDATION_INTERVAL == 0:
error, message, result = trainer.validate()
assert error >= 0
print(f"Validation {step + 1}:", result)
# 학습 후처리 (default inference options)
error, message, post_train_process_result = trainer.post_train_process()
assert error >= 0
print("post_train_process :", post_train_process_result)
# 체크포인트 저장
error, message, _ = trainer.save_checkpoint(
checkpoint_path=CHECKPOINT_PATH,
password=PASSWORD,
metadata={"description": "demo"},
)
build(config, data)
classmethod
Trainer class의 instance를 생성합니다.
Parameters:
Returns:
| Name | Type | Description |
|---|---|---|
Trainer |
build가 완료된 generation.Trainer class의 instance를 반환합니다. |
to_device(device=None)
Trainer의 device를 변경합니다. (cpu/gpu)
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
device |
Union[device, str, int]
|
변경하고자 하는 device 입니다.
|
None
|
Returns: None: None
train_auto_mode()
오토 모드 사용을 위한 모듈들을 학습시킵니다.
change_train_mode(train_mode)
학습시킬 모듈을 변경합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
train_mode |
str
|
["defect", "mask"] 중에서 선택가능합니다. |
required |
train_one_step()
학습을 1스텝 수행하고, 결과를 반환합니다.
Returns:
validation_enabled()
Trainer가 validation이 가능한지 bool로 반환합니다.
Returns:
| Name | Type | Description |
|---|---|---|
bool |
Trainer가 validation이 가능하면 True를, 불가능하다면 False를 반환합니다. |
validate()
post_train_process()
save_checkpoint(checkpoint_path, metadata=None, password=None)
현재 Trainer의 상태를 암호화하여 저장합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
checkpoint_path |
str
|
checkpoint를 저장할 path 입니다. |
required |
metadata |
Optional[Dict]
|
checkpoint에 저장할 추가 metadata. Defaults to None. |
None
|
password |
Optional[str]
|
checkpoint 파일에서 중요한 정보를 암호화 하는데 사용되는 password 입니다. None이면 암호화하지 않습니다. Defaults to None. |
None
|
Returns: None: None
load_checkpoint(checkpoint_path, password=None, **options)
저장한 checkpoint로부터 Trainer의 상태를 불러오고, metadata를 반환합니다.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
checkpoint_path |
str
|
load할 checkpoint가 저장 되어 있는 path 입니다. |
required |
password |
Optional[str]
|
checkpoint 파일에서 중요한 정보를 복호화 하는데 사용되는 password 입니다. None이면 복호화하지 않습니다. Defaults to None. |
None
|
Returns:
| Name | Type | Description |
|---|---|---|
Dict |
dict
|
save_checkpoint에서 저장했던 metadata 입니다. |