Skip to content

Train

enhancement.UnpairedTrainer

Enhancement 모델을 학습시키기 위한 UnpairedTrainer class 입니다.

Usage

demo/train.py 참고

build(config, data) classmethod

UnpairedTrainer class의 instance를 생성합니다.

Parameters:

Name Type Description Default
config Dict

Trainer를 build 하기 위한 config가 담겨 있는 dictionary 입니다.

{
    "network_type": str,  # network type. "v2_fast" / "v2_standard" 중 하나를 지원합니다.
    "total_iterations": int,  # 총 학습 iteration 수
    "crop_wh": int,  # 학습에 사용할 이미지 크기 (default (256, 256))
    "num_workers": int,  # 학습에 사용할 dataloader의 num_workers (default 6)
    "inspection_size_wh": Optional[List[int]],  # post_train_process에서 사용할 inspection_size_wh 입니다.
                                                # 자세한 정보는 InferenceHandler의 get_default_inference_option 함수 설명에 나와있습니다.
}

required
data Dict

Trainer가 사용 할 train/validation data가 담겨 있는 dictionary 입니다.

{
    "low_images": {
        "{image_id}": {
            "path": str,  # 저품질 이미지 경로
        },
        ...,  # times number of images
    },
    "high_images": {
        "{image_id}": {
            "path": str,  # 고품질 이미지 경로
        },
        ...,  # times number of images
    },
}

required

Returns:

Name Type Description
UnpairedTrainer UnpairedTrainer

build가 완료된 enhancement.UnpairedTrainer class의 instance를 반환합니다.

to_device(device)

Trainer의 device를 변경합니다. (cpu/gpu)

Parameters:

Name Type Description Default
device Union[device, str, int]

변경하고자 하는 device 입니다. int의 경우 해당 번호의 GPU를, "cpu" 문자열의 경우 cpu를 사용합니다.

required

Returns: None: None

train_one_step()

학습을 1스텝 수행하고, 결과를 반환합니다.

Returns:

Name Type Description
Dict Dict

학습 결과가 들어있는 dictionary를 반환합니다.

{
    "step": int,  # 현재까지 진행된 총 학습 step.
    "epoch": int,  # 현재까지 진행된 총 학습 epoch.
    "epoch_step": int,  # 현재 epoch에서 몇 번째 step인지를 나타냄.
    "loss/G": float,  # generator의 총 loss.
    "loss/D_A": float,  # discriminator A의 loss.
    "loss/D_B": float,  # discriminator B의 loss.
    "loss/G_A": float,  # generator A의 loss.
    "loss/G_B": float,  # generator B의 loss.
    "loss/cycle_A": float,  # cycle loss A.
    "loss/cycle_B": float,  # cycle loss B.
    "loss/idt_A": float,  # identity loss A.
    "loss/idt_B": float,  # identity loss B.
    "learning_rate/0": float,  # optimizer 1의 learning rate.
    "learning_rate/1": float,  # optimizer 2의 learning rate.
    "step_time(sec)": float,  # 학습을 1 step 진행하는데 걸린 총 시간.
    "data_time(sec)": float,  # 데이터를 로딩하는데 걸린 시간.
    "model_time(sec)": float,  # 모델 학습에 걸린 시간.
}

validation_enabled()

Trainer가 validation이 가능한지 bool로 반환합니다. 현재 IEN은 validation을 지원하지 않습니다.

Returns:

Name Type Description
bool bool

Trainer가 validation이 가능하면 True를, 불가능하다면 False를 반환합니다.

post_train_process(save_root)

PairedTrainer의 학습에 사용할 데이터를 생성하고, PairedTrainer의 build에 필요한 data config를 리턴합니다.

Parameters:

Name Type Description Default
save_root str

학습에 사용할 데이터를 저장할 root path 입니다.

required

Returns:

Name Type Description
Dict Dict

PairedTrainer의 build에 필요한 data config가 담겨 있는 dictionary 입니다.

{
    "train_images": {
        "{image_id}": {
            "path_low": str,  # 저품질 이미지 경로
            "path_high": str,  # 고품질 이미지 경로
        },
        ...,  # times number of images
    },
}

Usage

post_train_process로 PairedTrainer의 학습에 사용할 데이터를 생성하여 build 하는 예시입니다. 상세 내용은 demo/train.py를 참고해주세요.

# PairedTrainer 학습에 사용할 데이터 생성
error, message, paired_data = unpaired_trainer.post_train_process(UNPAIRED_TRAIN_RESULTS_PATH)

# PairedTrainer 빌드
error, message, paired_trainer = PairedTrainer.build(PAIRED_CONFIG, paired_data)

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)

저장한 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 입니다.

enhancement.PairedTrainer

Enhancement 모델을 학습시키기 위한 PairedTrainer class 입니다.

Usage

demo/train.py 참고

build(config, data) classmethod

PairedTrainer class의 instance를 생성합니다.

Parameters:

Name Type Description Default
config Dict

Trainer를 build 하기 위한 config가 담겨 있는 dictionary 입니다.

{
    "network_type": str,  # network type. "v2_fast" / "v2_standard" 중 하나를 지원합니다.
    "total_iterations": int,  # 총 학습 iteration 수
    "batch_size": int,  # number of train batch size (default 16)
    "crop_wh": int,  # 학습에 사용할 이미지 크기 (default (256, 256))
    "augmentation": Optional[List[Dict]],  # 학습에 사용할 augmentation config들을 모은 list 입니다. (default None)
    "num_workers": int,  # 학습에 사용할 dataloader의 num_workers (default 6)
    "inspection_size_wh": Optional[List[int]],  # validation에서 사용할 inspection_size_wh 입니다.
                                                # 자세한 정보는 InferenceHandler의 get_default_inference_option 함수 설명에 나와있습니다.
}

required
data Dict

Trainer가 사용 할 train/validation data가 담겨 있는 dictionary 입니다.

{
    "train_images": {
        "{image_id}": {
            "path_low": str,  # 저품질 이미지 경로
            "path_high": str,  # 고품질 이미지 경로
        },
        ...,  # times number of images
    }
}

required

Returns:

Name Type Description
PairedTrainer PairedTrainer

build가 완료된 enhancement.PairedTrainer class의 instance를 반환합니다.

to_device(device)

Trainer의 device를 변경합니다. (cpu/gpu)

Parameters:

Name Type Description Default
device Union[device, str, int]

변경하고자 하는 device 입니다. int의 경우 해당 번호의 GPU를, "cpu" 문자열의 경우 cpu를 사용합니다.

required

Returns: None: None

train_one_step()

학습을 1스텝 수행하고, 결과를 반환합니다.

Returns:

Name Type Description
Dict Dict

학습 결과가 들어있는 dictionary를 반환합니다.

{
    "step": int,  # 현재까지 진행된 총 학습 step.
    "epoch": int,  # 현재까지 진행된 총 학습 epoch.
    "epoch_step": int,  # 현재 epoch에서 몇 번째 step인지를 나타냄.
    "loss/total": float,  # 학습에 사용되는 모든 loss를 모두 더한 값.
    "loss/L1Loss": float,  # l1 loss.
    "loss/VGGLoss": float,  # vgg loss.
    "learning_rate/0": float,  # optimizer의 learning rate.
    "step_time(sec)": float,  # 학습을 1 step 진행하는데 걸린 총 시간.
    "data_time(sec)": float,  # 데이터를 로딩하는데 걸린 시간.
    "model_time(sec)": float,  # 모델 학습에 걸린 시간.
}

validation_enabled()

Trainer가 validation이 가능한지 bool로 반환합니다. 현재 IEN은 validation을 지원하지 않습니다.

Returns:

Name Type Description
bool bool

Trainer가 validation이 가능하면 True를, 불가능하다면 False를 반환합니다.

post_train_process()

train 후처리를 수행하고, 해당 모델의 default inference options을 리턴합니다.

Returns:

Name Type Description
Dict Dict

각 parameter에 대한 설명은 InferenceHandler.get_default_inference_option를 참고해주세요.

{
    "params.batch_size": int,
    "params.inspection_size_wh": Optional[List[int]],
    "params.oversized_image_handling": str,
}

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)

저장한 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 입니다.