diff --git a/bin/train.sh b/bin/train.sh index 137c911..4172765 100755 --- a/bin/train.sh +++ b/bin/train.sh @@ -1,10 +1,10 @@ #!/usr/bin/env bash -export CUDA_VISIBLE_DEVICES=2,3 +export CUDA_VISIBLE_DEVICES=0,1,2,3 RUN_CONFIG=config.yml -LOGDIR=/raid/bac/kaggle/logs/recursion_cell/test/c1234_s1_affine_warmup/se_resnext50_32x4d/ +LOGDIR=./bin/30_epochs/ catalyst-dl run \ --config=./configs/${RUN_CONFIG} \ --logdir=$LOGDIR \ diff --git a/configs/config.yml b/configs/config.yml index 9e1fe8a..a6a7968 100644 --- a/configs/config.yml +++ b/configs/config.yml @@ -24,16 +24,17 @@ stages: data_params: batch_size: 64 - num_workers: 8 + num_workers: 16 drop_last: False + # drop_last: True image_size: &image_size 512 train_csv: "./csv/train_0.csv" valid_csv: "./csv/valid_0.csv" - root: "/raid/data/kaggle/recursion-cellular-image-classification/" + root: "./data/" sites: [1] channels: [1, 2, 3, 4] - +################################################## stage0: optimizer_params: @@ -63,7 +64,7 @@ stages: reduce_metric: *reduce_metric saver: callback: CheckpointCallback - +########################################################## stage1: optimizer_params: @@ -72,12 +73,48 @@ stages: scheduler_params: scheduler: OneCycleLR - num_steps: &num_epochs 30 + num_steps: 50 lr_range: [0.0005, 0.00001] + # lr_range: [0.0015, 0.00003] warmup_steps: 5 momentum_range: [0.85, 0.95] state_params: - num_epochs: *num_epochs - - callbacks_params: *callback_params \ No newline at end of file + num_epochs: 50 + + callbacks_params: *callback_params +###################################################### + # stage2: + + # optimizer_params: + # optimizer: Nadam + # lr: 0.00001 + + # scheduler_params: + # scheduler: ReduceLROnPlateau + # patience: 2 + # # num_steps: 30 + # # lr_range: [0.0007, 0.00001] + # # warmup_steps: 0 + # # momentum_range: [0.85, 0.95] + + # state_params: + # num_epochs: 10 + + # criterion_params: + # criterion: LabelSmoothingCrossEntropy + + # callbacks_params: + # loss: + # callback: LabelSmoothCriterionCallback + # optimizer: + # callback: OptimizerCallback + # accumulation_steps: 2 + # accuracy: + # callback: AccuracyCallback + # accuracy_args: [1] + # scheduler: + # callback: SchedulerCallback + # reduce_metric: *reduce_metric + # saver: + # callback: CheckpointCallback diff --git a/src/augmentation.py b/src/augmentation.py index af456c6..3bd7db1 100644 --- a/src/augmentation.py +++ b/src/augmentation.py @@ -4,22 +4,24 @@ def train_aug(image_size=224): - policies = './csv/best_policy.data' - with open(policies, 'r') as fid: - policies = eval(fid.read()) - policies = itertools.chain.from_iterable(policies) - - aug_list = [] - for policy in policies: - op_1, params_1 = policy[0] - op_2, params_2 = policy[1] - aug = Compose([ - globals().get(op_1)(**params_1), - globals().get(op_2)(**params_2), - ]) - aug_list.append(aug) + # policies = './csv/best_policy.data' + # with open(policies, 'r') as fid: + # policies = eval(fid.read()) + # policies = itertools.chain.from_iterable(policies) + + # aug_list = [] + # for policy in policies: + # op_1, params_1 = policy[0] + # op_2, params_2 = policy[1] + # aug = Compose([ + # globals().get(op_1)(**params_1), + # globals().get(op_2)(**params_2), + # ]) + # aug_list.append(aug) return Compose([ + ChannelDropout(), + # CLAHE(), RandomRotate90(), Flip(), Transpose(), diff --git a/src/make_submission.py b/src/make_submission.py index d2bc50a..f1c779f 100644 --- a/src/make_submission.py +++ b/src/make_submission.py @@ -34,14 +34,14 @@ def predict(model, loader): def predict_all(): - test_csv = '/raid/data/kaggle/recursion-cellular-image-classification/test.csv' + test_csv = './data/test.csv' # test_csv = './csv/valid_0.csv' - for fold in [0, 1, 2, 3]: + for fold in [0,1,2,3,4]: model_name = 'se_resnext50_32x4d' - log_dir = f"/raid/bac/kaggle/logs/recursion_cell/search_channels/fold_{fold}/[1,2,3,4]/se_resnext50_32x4d/" - root = "/raid/data/kaggle/recursion-cellular-image-classification/" + log_dir = f"./bin/log/checkpoints/" + root = "./data/" sites = [1] channels = [1,2,3,4] @@ -73,7 +73,7 @@ def predict_all(): dataset=dataset, batch_size=128, shuffle=False, - num_workers=4, + num_workers=12, ) pred = predict(model, loader) @@ -90,14 +90,14 @@ def predict_all(): def predict_one(): - test_csv = '/raid/data/kaggle/recursion-cellular-image-classification/test.csv' + test_csv = './data/test.csv' # test_csv = './csv/valid_0.csv' model_name = 'se_resnext50_32x4d' - experiment = "c1234_s1_affine_warmup" + experiment = "dropout_channel" - log_dir = f"/raid/bac/kaggle/logs/recursion_cell/test/{experiment}/{model_name}/" - root = "/raid/data/kaggle/recursion-cellular-image-classification/" + log_dir = f"./bin/log/" + root = "./data/" sites = [1] channels = [1,2,3,4] diff --git a/src/models/senet.py b/src/models/senet.py index ddf156b..b9dc777 100644 --- a/src/models/senet.py +++ b/src/models/senet.py @@ -36,6 +36,7 @@ def cell_senet(model_name='se_resnext50_32x4d', num_classes=1108, n_channels=6): pretrained=True, # pool=GlobalConcatPool2d(), # classifier_factory=make_classifier + dropout_p=0.3 ) # print(model) conv1 = model._features[0].conv1