예제 #1
0
def load_12ECG_model(model_input):
    """Load Physionet2017 Model
    model_input: This is an argument from running driver.py on command line. I think we just ignore it and hard-code
    out model path.
    """

    models_list = [
        'ecgnet_0_fold_0.631593191670484', 'ecgnet_1_fold_0.6370736239012214',
        'ecgnet_2_fold_0.6444454717434089', 'ecgnet_3_fold_0.6195938932528102',
        'ecgnet_4_fold_0.6149398148500164', 'ecgnet_5_fold_0.6409127451470004'
    ]

    os.makedirs(model_input + '/pretrained/', exist_ok=True)

    # load the model
    models = []
    for i in models_list:
        model_stack = Model(input_size=19000,
                            n_channels=15,
                            hparams=hparams,
                            gpu=[],
                            inference=True)
        model_stack.model_load("./inference_models/" + i + ".pt")
        model_stack.model_save(model_input + '/pretrained/' + i + ".pt")
        models.append(model_stack)

    return models
예제 #2
0
    def __init__(self):


        #load the model
        self.model = Model()
        self.model.model_load("./inference_models/ecgnet_0_fold_0.6078759902401878.pt")

        #load preprocessng pipeline

        #load thresholds
        self.postptocessing = PostProcessing(0)
예제 #3
0
 def __init__(self) -> None:
     RefreshProgramLogs()
     super().__init__()
     self.video = cv2.VideoCapture(self.source)
     self.model = Model(utilsdir=c.UTILSDIR,
                        modeldir=c.MODELDIR,
                        weights=c.WEIGHTS,
                        cfg=c.CFG,
                        labelsdir=c.LABELSDIR,
                        coco=c.COCONAMES,
                        cuda=False)
     self.active_thread_count: int = None
     self.p_time: float = 0
     self.frame_counter: int = 0
예제 #4
0
def draw_feature(path='train_log/models/best-accuracy',
                 scale=1,
                 data_set='fashion_mnist'):
    device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
    print(device)

    checkpoint = torch.load(path, map_location=device)
    data_loader_train, data_loader_test, data_train, data_test = load_dataset(
        data_set=data_set)

    net = Model(n_feature)
    net.load_state_dict(checkpoint['model_state_dict'])
    exact_list = ['feature']
    feature_extractor = FeatureExtractor(net, exact_list)
    feature_extractor.to(device)

    # get weight
    weight = checkpoint['model_state_dict']['pred.weight'].to('cpu').data
    weight_norm = weight / torch.norm(weight, dim=1, keepdim=True)
    print("weight_norm: ", torch.norm(weight, dim=1))

    # get feature
    features = []
    labels = []
    for data in data_loader_train:
        X_train, y_train = data
        X_train = Variable(X_train).to(device)
        outputs = feature_extractor(X_train)['feature'].data
        features.append(outputs)
        labels.append(y_train)
    features = torch.cat(features, dim=0).to('cpu').data
    features_norm = features / torch.norm(features, dim=1, keepdim=True)
    features = features.numpy()
    features_norm = features_norm.numpy()
    labels = torch.cat(labels, dim=0).to('cpu').data.numpy()

    # draw features
    label_list = get_label_list(data_set)

    plt.figure(1, figsize=(20, 20))
    plt.subplot(221)
    for i in range(10):
        plt.plot([0, scale * weight[i, 0]], [0, scale * weight[i, 1]],
                 color=color_list[i])
        feature = features[labels == i]
        plt.scatter(feature[:, 0],
                    feature[:, 1],
                    c=color_list[i],
                    marker='.',
                    label=label_list[i],
                    s=1)
        plt.legend()

    plt.subplot(223)
    for i in range(10):
        plt.plot([0, weight_norm[i, 0]], [0, weight_norm[i, 1]],
                 color=color_list[i])
        feature = features_norm[labels == i]
        plt.scatter(feature[:, 0],
                    feature[:, 1],
                    c=color_list[i],
                    marker='.',
                    label=label_list[i],
                    s=1)
        plt.legend()

    # get feature
    features = []
    labels = []
    for data in data_loader_test:
        X_test, y_test = data
        X_test = Variable(X_test).to(device)
        outputs = feature_extractor(X_test)['feature'].data
        features.append(outputs)
        labels.append(y_test)
    features = torch.cat(features, dim=0).to('cpu').data
    features_norm = features / torch.norm(features, dim=1, keepdim=True)
    features = features.numpy()
    features_norm = features_norm.numpy()
    labels = torch.cat(labels, dim=0).to('cpu').data.numpy()

    plt.subplot(222)
    for i in range(10):
        plt.plot([0, scale * weight[i, 0]], [0, scale * weight[i, 1]],
                 color=color_list[i])
        feature = features[labels == i]
        plt.scatter(feature[:, 0],
                    feature[:, 1],
                    c=color_list[i],
                    marker='.',
                    label=label_list[i],
                    s=1)
        plt.legend()

    plt.subplot(224)
    for i in range(10):
        plt.plot([0, weight_norm[i, 0]], [0, weight_norm[i, 1]],
                 color=color_list[i])
        feature = features_norm[labels == i]
        plt.scatter(feature[:, 0],
                    feature[:, 1],
                    c=color_list[i],
                    marker='.',
                    label=label_list[i],
                    s=1)
        plt.legend()

    title = os.path.basename(os.getcwd()) + '-' + os.path.basename(path)
    plt.suptitle(title)

    fname = 'train_log/feature-{}'.format(os.path.basename(path))
    figname = 'train_log/{}.png'.format(fname)

    os.remove(figname) if os.path.exists(figname) else None
    plt.savefig(fname)
    plt.close('all')