123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- import os.path as osp
- import paddle
- import paddlers as pdrs
- from paddlers import transforms as T
- from custom_model import CustomModel
- from custom_trainer import make_trainer
- DATA_DIR = 'data/levircd/'
- EXP_DIR = 'exp/levircd/custom_model/'
- train_transforms = T.Compose([
-
- T.DecodeImg(),
-
- T.RandomFlipOrRotate(
-
- probs=[0.35, 0.35],
-
- probsf=[0.5, 0.5, 0, 0, 0],
-
- probsr=[0.33, 0.34, 0.33]),
-
- T.Normalize(
- mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]),
- T.ArrangeChangeDetector('train')
- ])
- eval_transforms = T.Compose([
- T.DecodeImg(),
-
- T.Normalize(
- mean=[0.5, 0.5, 0.5], std=[0.5, 0.5, 0.5]),
- T.ArrangeChangeDetector('eval')
- ])
- train_dataset = pdrs.datasets.CDDataset(
- data_dir=DATA_DIR,
- file_list=osp.join(DATA_DIR, 'train.txt'),
- label_list=None,
- transforms=train_transforms,
- num_workers=0,
- shuffle=True,
- with_seg_labels=False,
- binarize_labels=True)
- val_dataset = pdrs.datasets.CDDataset(
- data_dir=DATA_DIR,
- file_list=osp.join(DATA_DIR, 'val.txt'),
- label_list=None,
- transforms=eval_transforms,
- num_workers=0,
- shuffle=False,
- with_seg_labels=False,
- binarize_labels=True)
- test_dataset = pdrs.datasets.CDDataset(
- data_dir=DATA_DIR,
- file_list=osp.join(DATA_DIR, 'test.txt'),
- label_list=None,
-
- transforms=eval_transforms,
- num_workers=0,
- shuffle=False,
- with_seg_labels=False,
- binarize_labels=True)
- model = make_trainer(CustomModel, in_channels=3)
- lr_scheduler = paddle.optimizer.lr.StepDecay(
- learning_rate=0.002, step_size=35000, gamma=0.2)
- optimizer = paddle.optimizer.Adam(
- parameters=model.net.parameters(), learning_rate=lr_scheduler)
- model.train(
- num_epochs=50,
- train_dataset=train_dataset,
- train_batch_size=8,
- eval_dataset=eval_dataset,
-
- save_interval_epochs=5,
-
- log_interval_steps=50,
- save_dir=EXP_DIR,
-
- early_stop=False,
-
- use_vdl=True,
-
- resume_checkpoint=None)
- model = pdrs.tasks.load_model(osp.join(EXP_DIR, 'best_model'))
- model.evaluate(test_dataset)
|