Beispiel #1
0
def save_siamese_rpn():
    # load config

    rpn_path = root_dir + 'experiments/siamrpn_alex_dwxcorr_16gpu/pre_train/checkpoint_e45.pth'
    gru_rpn = root_dir + 'experiments/siamrpn_alex_dwxcorr_16gpu/config.yaml'
    cfg.merge_from_file(gru_rpn)
    # create model
    model_rpn = ModelBuilder()
    model_rpn = load_pretrain(model_rpn, rpn_path).cuda().eval()

    gru_path = root_dir + 'experiments/siamrpn_alex_dwxcorr_16gpu/gru_snapshot/gru_10.pth'
    gru_cfg = root_dir + 'experiments/siamrpn_alex_dwxcorr_16gpu/config_gru.yaml'
    cfg.merge_from_file(gru_cfg)
    # create model
    model_gru = ModelBuilder()
    model_gru = load_pretrain(model_gru, gru_path).cuda().eval()

    for key, item in model_gru.named_parameters():

        # print(key.find("grus"))
        print(key, item.shape)

    for key, item in model_rpn.named_parameters():
        # print(key.find("grus"))
        print(key, item.shape)

    model_gru_dict = model_gru.state_dict()
    model_rpn_dict = model_rpn.state_dict()

    for key in model_gru_dict:

        if key.find("grus") != -1:
            print("fix:", key)

        else:
            print("change:", key)
            model_gru_dict[key] = model_rpn_dict[key]

    # name_map={}
    # model_legacy_dict = model_legacy.state_dict()
    # model_alexnet_dict = model_alexnet.state_dict()
    # for para1,para2 in zip(model_legacy.named_parameters(),model_alexnet.named_parameters()):
    #     # print(para1[0],para1[1].shape)
    #     print(para1[0])
    #     print(para2[0])
    #     print(para1[1].shape)
    #     print(para2[1].shape)
    #     print("--"*40)
    #     # print("['{}'--->'{}']".format(para1[0], para2[0]),para1[1].shape, para2[1].shape)
    #     name_map[para1[0]]=para2[0]
    # print(name_map)
    #
    #
    # for key,val in name_map.items():
    #     model_alexnet_dict[val]=model_legacy_dict[key]

    torch.save(model_gru_dict, "siamese_gru10_rpn45.pth")
Beispiel #2
0
def save_siamese_rpn():
    # load config

    cfg.merge_from_file(args.config)
    cfg.BACKBONE.TYPE = 'alexnetlegacy'
    # create model
    model_legacy = ModelBuilder()
    # load model
    model_legacy = load_pretrain(model_legacy, args.snapshot).cuda().eval()

    cfg.BACKBONE.TYPE = 'alexnet'
    # create model
    model_alexnet = ModelBuilder()
    #
    # for key ,item in model.named_parameters():
    #     print(key,item.shape)

    for key, item in model_alexnet.named_parameters():
        print(key, item.shape)
    name_map = {}
    model_legacy_dict = model_legacy.state_dict()
    model_alexnet_dict = model_alexnet.state_dict()
    for para1, para2 in zip(model_legacy.named_parameters(),
                            model_alexnet.named_parameters()):
        # print(para1[0],para1[1].shape)
        print(para1[0])
        print(para2[0])
        print(para1[1].shape)
        print(para2[1].shape)
        print("--" * 40)
        # print("['{}'--->'{}']".format(para1[0], para2[0]),para1[1].shape, para2[1].shape)
        name_map[para1[0]] = para2[0]
    print(name_map)

    for key, val in name_map.items():
        model_alexnet_dict[val] = model_legacy_dict[key]

    torch.save(model_alexnet_dict, "siamese_alexnet_rpn.pth")