コード例 #1
0
ファイル: run.py プロジェクト: yl2019lw/FlyIT
def train_transformer(s=2):
    train_dataset = dataset.DrosophilaDataset(mode='train', stage=s)
    val_dataset = dataset.DrosophilaDataset(mode='val', stage=s)
    test_dataset = dataset.DrosophilaDataset(mode='test', stage=s)

    cfg = util.default_cfg()
    cfg['train'] = train_dataset
    cfg['val'] = val_dataset
    cfg['test'] = test_dataset
    cfg['batch'] = 32
    cfg['lr'] = 0.00001
    cfg['model'] = 'transformer'
    cfg['model_dir'] = 'modeldir/stage%d/transformer' % s
    cfg['collate'] = dataset.fly_collate_fn
    cfg['instance'] = train._train_mi

    model_pth = os.path.join(cfg['model_dir'], 'model.pth')
    model = nn.DataParallel(transformer.E2ETransformer().cuda())
    if os.path.exists(model_pth):
        ckp = torch.load(model_pth)
        model.load_state_dict(ckp['model'])
        cfg['step'] = ckp['epoch'] + 1
        print("load pretrained model", model_pth, "start epoch:", cfg['step'])

    train.run_train(model, cfg)
コード例 #2
0
def train_pj(s=2):
    '''train the HMIML_M model'''
    train_dataset = dataset.DrosophilaDataset(mode='train', stage=s)
    val_dataset = dataset.DrosophilaDataset(mode='val', stage=s)
    test_dataset = dataset.DrosophilaDataset(mode='test', stage=s)

    cfg = util.default_cfg()
    cfg['train'] = train_dataset
    cfg['val'] = val_dataset
    cfg['test'] = test_dataset
    cfg['criterion'] = loss.FocalMSELoss()
    cfg['batch'] = 64
    cfg['scheduler'] = True
    cfg['factor'] = 0.1
    cfg['patience'] = 5
    cfg['lr'] = 0.0001
    cfg['model'] = 'ltgvgg_pj'
    cfg['model_dir'] = 'modeldir/stage%d/ltgvgg_pj' % s

    model_pth = os.path.join(cfg['model_dir'], 'model.pth')
    model = nn.DataParallel(ltgvgg.LtgVgg().cuda())
    if os.path.exists(model_pth):
        print("load pretrained model", model_pth)
        model.load_state_dict(torch.load(model_pth))

    run_train(model, cfg)
コード例 #3
0
ファイル: run.py プロジェクト: yl2019lw/FlyIT
def train_prefv_naggn(s=2):
    '''load fvextractor from pretrained resnet_si'''
    train_dataset = dataset.DrosophilaDataset(mode='train', stage=s)
    val_dataset = dataset.DrosophilaDataset(mode='val', stage=s)
    test_dataset = dataset.DrosophilaDataset(mode='test', stage=s)

    cfg = util.default_cfg()
    cfg['train'] = train_dataset
    cfg['val'] = val_dataset
    cfg['test'] = test_dataset
    cfg['batch'] = 32
    cfg['lr'] = 0.0001
    cfg['model'] = 'prefv_naggn_l2'
    cfg['model_dir'] = 'modeldir/stage%d/prefv_naggn_l2' % s
    cfg['collate'] = dataset.fly_collate_fn
    cfg['instance'] = train._train_mi

    model_pth = os.path.join(cfg['model_dir'], 'model.pth')
    model = nn.DataParallel(naggn.NAggN(agg='l2').cuda())
    if os.path.exists(model_pth):
        ckp = torch.load(model_pth)
        model.load_state_dict(ckp['model'])
        cfg['step'] = ckp['epoch'] + 1
        print("load pretrained model", model_pth, "start epoch:", cfg['step'])
    else:
        fv_model_dir = 'modeldir/stage%d/resnet_si' % s
        fv_model_pth = os.path.join(fv_model_dir, 'model.pth')
        ckp = torch.load(fv_model_pth)
        model.state_dict().update(ckp['model'])
        print("load fvextractor from pretrained resnet_si")

    # for p in model.module.fvextractor.parameters():
    #     p.require_grad = False

    train.run_train(model, cfg)
コード例 #4
0
def train_smallnet_si_boost_fec(s=2, k=10):
    cfg = util.default_cfg()

    train_dataset = dataset.StratifySIDataset(mode='train', stage=s, k=k)
    val_dataset = dataset.StratifySIDataset(mode='val', stage=s, k=k)
    test_dataset = dataset.StratifySIDataset(mode='test', stage=s, k=k)

    cfg['train'] = train_dataset
    cfg['val'] = val_dataset
    cfg['test'] = test_dataset

    cfg['batch'] = 64
    cfg['epochs'] = 500
    cfg['scheduler'] = True
    cfg['decay'] = 0.01
    cfg['lr'] = 0.0001
    cfg['patience'] = 20
    cfg['collate'] = default_collate
    cfg['instance'] = _train_si

    from loss import FECLoss
    cfg['criterion'] = FECLoss(alpha=64, reduction='none')

    cfg['model'] = 'smallnet_si_k%d_boost_fec1' % (k)
    cfg['model_dir'] = 'modeldir/stage%d/smallnet_si_k%d_boost_fec1' % (s, k)
    model_pth = os.path.join(cfg['model_dir'], 'model.pth')
    model = nn.DataParallel(sinet.SmallNet(k=k).cuda())
    if os.path.exists(model_pth):
        ckp = torch.load(model_pth)
        model.load_state_dict(ckp['model'])
        cfg['step'] = ckp['epoch'] + 1
        print("load pretrained model", model_pth, "start epoch:", cfg['step'])

    run_train(model, cfg)
コード例 #5
0
ファイル: train.py プロジェクト: yl2019lw/FlyIT
def _config_pj_dataset(cfg, s, k):
    train_dataset = dataset.PJDataset(mode='train', stage=s)
    val_dataset = dataset.PJDataset(mode='val', stage=s)
    test_dataset = dataset.PJDataset(mode='test', stage=s)

    cfg = util.default_cfg()
    cfg['train'] = train_dataset
    cfg['val'] = val_dataset
    cfg['test'] = test_dataset
    return cfg
コード例 #6
0
ファイル: run.py プロジェクト: yl2019lw/FlyIT
def train_resnet_pj(s=2, k=10):
    cfg = util.default_cfg()
    cfg = train._config_pj_dataset(cfg, s, k)

    cfg['model'] = 'resnet_pj_k%d' % (k)
    cfg['model_dir'] = 'modeldir/stage%d/resnet_pj_k%d' % (s, k)

    model = nn.DataParallel(sinet.SiNet(nblock=4, k=k).cuda())
    cfg = train._train_config_pj(model, cfg)

    train.run_train(model, cfg)
コード例 #7
0
ファイル: run.py プロジェクト: yl2019lw/FlyIT
def train_resnet_si(s=2, k=10, val_index=4):
    cfg = util.default_cfg()
    cfg = train._config_si_dataset(cfg, s, k)

    cfg['model'] = 'resnet_si_k%d_val%d' % (k, val_index)
    cfg['model_dir'] = 'modeldir/stage%d/resnet_si_k%d_val%d' % (s, k,
                                                                 val_index)

    model = nn.DataParallel(sinet.SiNet(nblock=4, k=k).cuda())
    cfg = train._train_config_si(model, cfg)

    train.run_train(model, cfg)
コード例 #8
0
ファイル: run.py プロジェクト: yl2019lw/FlyIT
def train_smallnet_stratify_si(s=2, k=10):
    cfg = util.default_cfg()
    cfg = train._config_stratify_si_dataset(cfg, s, k)
    import loss
    cfg['criterion'] = loss.FECLoss(alpha=64)

    model = nn.DataParallel(sinet.SmallNet(k=k).cuda())
    cfg['model'] = 'smallnet_si_k%d_fec1' % (k)
    cfg['model_dir'] = 'modeldir/stage%d/smallnet_si_k%d_fec1' % (s, k)
    cfg = train._train_config_si(model, cfg)
    cfg['scheduler'] = True
    cfg['lr'] = 0.0001

    train.run_train(model, cfg)
コード例 #9
0
ファイル: run.py プロジェクト: yl2019lw/FlyIT
def train_resnet_stratify_si(s=2, k=10):
    cfg = util.default_cfg()
    cfg = train._config_stratify_si_dataset(cfg, s, k)
    # from loss import FECLoss
    # cfg['criterion'] = FECLoss(alpha=48)
    # from loss import SFocalLoss
    # cfg['criterion'] = SFocalLoss(gamma=1)

    model = nn.DataParallel(sinet.SiNet(nblock=2, k=k).cuda())
    cfg['model'] = 'resnet18b2_si_k%d' % (k)
    cfg['model_dir'] = 'modeldir/stage%d/resnet18b2_si_k%d' % (s, k)
    cfg = train._train_config_si(model, cfg)
    cfg['scheduler'] = False

    train.run_train(model, cfg)
コード例 #10
0
ファイル: run.py プロジェクト: yl2019lw/FlyIT
def train_smallnet_stratify_pj_fecq(s=2, k=10):
    cfg = util.default_cfg()
    cfg = train._config_stratify_pj_dataset(cfg, s, k)

    model = nn.DataParallel(sinet.SmallNet(k=k).cuda())
    from loss import FECLoss
    cfg['criterion'] = FECLoss(alpha=8)
    cfg['model'] = 'smallnet_pj_k%d_fec0.25' % (k)
    cfg['model_dir'] = 'modeldir/stage%d/smallnet_pj_k%d_fec0.25' % (s, k)
    cfg = train._train_config_pj(model, cfg)
    cfg['scheduler'] = False
    cfg['lr'] = 0.0001
    cfg['epochs'] = 1000

    train.run_train(model, cfg)
コード例 #11
0
ファイル: run.py プロジェクト: yl2019lw/FlyIT
def train_tinynet_stratify_si(s=2, k=10):
    cfg = util.default_cfg()
    cfg = train._config_stratify_si_dataset(cfg, s, k)

    from loss import FECLoss
    cfg['criterion'] = FECLoss(alpha=32)
    cfg['model'] = 'tinynet_si_k%d_fec0.5' % (k)
    cfg['model_dir'] = 'modeldir/stage%d/tinynet_si_k%d_fec0.5' % (s, k)
    cfg['collate'] = default_collate
    cfg['instance'] = train._train_si

    model = nn.DataParallel(sinet.TinyNet(k=k).cuda())

    cfg = train._train_config_si(model, cfg)

    train.run_train(model, cfg)
コード例 #12
0
ファイル: train.py プロジェクト: yl2019lw/FlyIT
def _config_si_dataset(cfg, s, k, val_index):
    train_dataset = dataset.SIDataset(mode='train',
                                      stage=s,
                                      k=k,
                                      val_index=val_index)
    val_dataset = dataset.SIDataset(mode='val',
                                    stage=s,
                                    k=k,
                                    val_index=val_index)
    test_dataset = dataset.SIDataset(mode='test',
                                     stage=s,
                                     k=k,
                                     val_index=val_index)

    cfg = util.default_cfg()
    cfg['train'] = train_dataset
    cfg['val'] = val_dataset
    cfg['test'] = test_dataset
コード例 #13
0
def _allrun_config_pj(k=10):
    cfg = util.default_cfg()

    train_dataset = alldataset.PJDataset(mode='train', k=k)
    val_dataset = alldataset.PJDataset(mode='val', k=k)
    test_dataset = alldataset.PJDataset(mode='test', k=k)

    cfg['train'] = train_dataset
    cfg['val'] = val_dataset
    cfg['test'] = test_dataset

    cfg['batch'] = 32
    cfg['epochs'] = 500
    cfg['scheduler'] = True
    cfg['decay'] = 0.01
    cfg['lr'] = 0.0001
    cfg['patience'] = 20
    cfg['collate'] = default_collate
    cfg['instance'] = train._train_si

    return cfg
コード例 #14
0
ファイル: run.py プロジェクト: yl2019lw/FlyIT
def run_kfold_test(k=10):
    for s in [6, 5, 4, 3, 2]:
        test_dataset = dataset.SIDataset(mode='test', stage=s, k=k)

        s_dir = 'modeldir/stage%d' % s
        s_score = []
        s_label = []
        for val_index in [4, 3, 2, 1, 0]:
            m_dir = '%s/resnet_si_k%d_val%d' % (s_dir, k, val_index)

            model_pth = os.path.join(m_dir, 'model.pth')

            model = nn.DataParallel(sinet.SiNet(nblock=4, k=k).cuda())
            ckp = torch.load(model_pth)
            model.load_state_dict(ckp['model'])

            cfg = util.default_cfg()
            cfg['test'] = test_dataset
            cfg['batch'] = 128
            cfg['collate'] = default_collate
            cfg['instance'] = train._train_si
            cfg['model'] = m_dir

            np_score, np_label = train.run_test_score(model, cfg)
            s_score.append(np_score)
            s_label.append(np_label)

        m_score = np.mean(np.stack(s_score, axis=0), axis=0)
        print("m_score", m_score.shape, 'np_label', np_label.shape)
        np_pd = (m_score > 0.5).astype(np.int)

        mean_dir = '%s/resnet_si_k%d_mean' % (s_dir, k)
        if not os.path.exists(mean_dir):
            os.mkdir(mean_dir)
        pth = os.path.join(mean_dir, 'metrics.csv')
        util.write_metrics(pth, np_label, np_pd, np_score)