Esempio n. 1
0
    def __init__(self, v1_model_path, v2_model_path, v3_model_path):
        model = FrontNet(PreActBlock, [1, 1, 1])
        ModelManager.Read(v1_model_path, model)
        #state_dict = torch.load(v1_model_path, map_location='cpu')
        rospy.loginfo(v1_model_path)
        #model.load_state_dict(state_dict['model'])
        #model.load_state_dict(torch.load(v1_model_path, map_location='cpu'))
       
        self.trainer = ModelTrainer(model)
        model2 = FrontNet(PreActBlock, [1, 1, 1])
        #smodel2.load_state_dict(torch.load(v2_model_path, map_location='cpu'))
        ModelManager.Read(v2_model_path, model2)
        self.trainer2 = ModelTrainer(model2)


        self.pose_pub = rospy.Publisher("predicted_pose", PoseStamped, queue_size=1)
def main():
    logging.basicConfig(level=logging.INFO,
                        format="%(asctime)s - %(levelname)s - %(message)s",
                        datefmt="%Y-%m-%d %H:%M:%S",
                        filename="log.txt",
                        filemode='w')

    console = logging.StreamHandler()
    console.setLevel(logging.INFO)
    formatter = logging.Formatter('%(message)s')
    console.setFormatter(formatter)
    logging.getLogger('').addHandler(console)

    model = FrontNet(PreActBlock, [1, 1, 1])
    ModelManager.Read('Models/FrontNetNicky.pt', model)

    DATA_PATH = "/Users/usi/PycharmProjects/data/"

    [x_test, y_test,
     z_test] = DataProcessor.ProcessTestData(DATA_PATH + "TestNicky.pickle",
                                             60, 108)
    #x_test = x_test
    #y_test = y_test
    test_set = Dataset(x_test, y_test)
    params = {'batch_size': 1, 'shuffle': False, 'num_workers': 0}
    test_generator = data.DataLoader(test_set, **params)
    trainer = ModelTrainer(model)

    valid_loss_x, valid_loss_y, valid_loss_z, valid_loss_phi, outputs, gt_labels = trainer.ValidateSingleEpoch(
        test_generator)

    VizDroneBEV(x_test, y_test, z_test, outputs)
Esempio n. 3
0
def main():
    # Training settings
    parser = argparse.ArgumentParser(description='PyTorch FrontNet')
    args = Parse(parser)

    torch.manual_seed(args.seed)

    # [NeMO] Setup of console logging.
    logging.basicConfig(level=logging.INFO,
                        format="%(asctime)s - %(levelname)s - %(message)s",
                        datefmt="%Y-%m-%d %H:%M:%S",
                        filename="log.txt",
                        filemode='w')


    console = logging.StreamHandler()
    console.setLevel(logging.INFO)
    formatter = logging.Formatter('%(message)s')
    console.setFormatter(formatter)
    logging.getLogger('').addHandler(console)

    train_loader, validation_loader, test_loader = LoadData(args)

    # [NeMO] Loading of the JSON regime file.
    regime = {}
    if args.regime is None:
        print("ERROR!!! Missing regime JSON.")
        raise Exception
    else:
        with open(args.regime, "r") as f:
            rr = json.load(f)
        for k in rr.keys():
            try:
                regime[int(k)] = rr[k]
            except ValueError:
                regime[k] = rr[k]

    if args.gray is not None:
        model = Dronet(PreActBlock, [1, 1, 1], True)
    else:
        model = Dronet(PreActBlock, [1, 1, 1], False)

    # [NeMO] This used to preload the model with pretrained weights.
    if args.load_model is not None:
        ModelManager.Read(args.load_model, model)

    trainer = ModelTrainer(model, args, regime)
    if args.quantize:
        #logging.disable(logging.INFO)
        trainer.Quantize(validation_loader)


    #trainer.Train(train_loader, validation_loader)
    #trainer.Predict(test_loader)

    if args.save_model is not None:
        ModelManager.Write(trainer.GetModel(), 100, args.save_model)
Esempio n. 4
0
def TestInference():

    #logging.disable(logging.INFO)
    frame = cv2.imread("../Deployment/dataset/87.pgm", 0)
    frame = np.reshape(frame, (60, 108, 1))
    model = Dronet(PreActBlock, [1, 1, 1], True)
    ModelManager.Read("Models/DronetHimax108x60.pt", model)
    trainer = ModelTrainer(model)
    v1_pred = trainer.InferSingleSample(frame)
    print("output")
    print(v1_pred)
Esempio n. 5
0
def Test():
    model = Dronet(PreActBlock, [1, 1, 1], True)
    ModelManager.Read("Models/DronetHimax160x90.pt", model)

    trainer = ModelTrainer(model)

    #ModelManager.Read("Models/FrontNetGray.pt", model)
    [x_test, y_test] = DataProcessor.ProcessTestData(
        "/Users/usi/PycharmProjects/data/160x90HimaxStatic_12_03_20.pickle")
    test_set = Dataset(x_test, y_test)

    params = {'batch_size': 64, 'shuffle': False, 'num_workers': 1}
    test_loader = data.DataLoader(test_set, **params)
    trainer.Predict(test_loader)
Esempio n. 6
0
def TestInference():

    frame = cv2.imread("test13.pgm", 0)
    frame = frame[92:152, 108:216]
    frame = np.reshape(frame, (60, 108, 1))
    #print(frame.flatten()[:10])
    #cv2.imshow("", frame)
    #cv2.waitKey()
    model = Dronet(PreActBlock, [1, 1, 1], True)
    ModelManager.Read("Models/DronetGray.pt", model)
    # weight = model.conv.weight.data
    # weight = np.reshape(weight, (-1))
    # weight = weight[:10]
    # print(weight)
    trainer = ModelTrainer(model)
    v1_pred = trainer.InferSingleSample(frame)
    print("output")
    print(v1_pred)
def main():
    logging.basicConfig(level=logging.INFO,
                        format="%(asctime)s - %(levelname)s - %(message)s",
                        datefmt="%Y-%m-%d %H:%M:%S",
                        filename="log.txt",
                        filemode='w')

    console = logging.StreamHandler()
    console.setLevel(logging.INFO)
    formatter = logging.Formatter('%(message)s')
    console.setFormatter(formatter)
    logging.getLogger('').addHandler(console)

    model = Dronet(PreActBlock, [1, 1, 1], True)
    ModelManager.Read('../PyTorch/Models/DronetGray.pt', model)
    trainer = ModelTrainer(model)

    InferenceData(trainer)
def main():
    logging.basicConfig(level=logging.INFO,
                        format="%(asctime)s - %(levelname)s - %(message)s",
                        datefmt="%Y-%m-%d %H:%M:%S",
                        filename="log.txt",
                        filemode='w')

    console = logging.StreamHandler()
    console.setLevel(logging.INFO)
    formatter = logging.Formatter('%(message)s')
    console.setFormatter(formatter)
    logging.getLogger('').addHandler(console)


    DATA_PATH = "/Users/usi/PycharmProjects/data/160x90/"

    # Get baseline results

    picklename = "160x90HimaxMixedTest_12_03_20.pickle"
    [x_test, y_test] = DataProcessor.ProcessTestData(DATA_PATH + picklename)
    test_set = Dataset(x_test, y_test)
    params = {'batch_size': 1, 'shuffle': False, 'num_workers': 1}
    test_generator = data.DataLoader(test_set, **params)
    model = Dronet(PreActBlock, [1, 1, 1], True)
    ModelManager.Read('../PyTorch/Models/DronetHimax160x90AugCrop.pt', model)
    trainer = ModelTrainer(model)
    MSE2, MAE2, r2_score2, outputs2, gt_labels2 = trainer.Test(test_generator)

    # Get pitch values

    picklename = "160x90HimaxMixedTest_12_03_20Rot.pickle"
    r_test = DataProcessor.GetRollFromTestData(DATA_PATH + picklename)

    print(r_test)


    if picklename.find(".pickle"):
        picklename = picklename.replace(".pickle", '')


    Plot2Models(r_test, picklename, r2_score2)
Esempio n. 9
0
def Filter():
    [x_test, y_test] = DataProcessor.ProcessTestData(
        "/Users/usi/PycharmProjects/data/test_vignette4.pickle")
    x_test2 = []
    y_test2 = []
    for i in range(len(x_test)):
        gt = y_test[i]
        if ((gt[0] > 1.0) and (gt[0] < 2.0)):
            x_test2.append(x_test[i])
            y_test2.append(y_test[i])

    x_test2 = np.asarray(x_test2)
    y_test2 = np.asarray(y_test2)
    test_set = Dataset(x_test2, y_test2)

    params = {'batch_size': 64, 'shuffle': False, 'num_workers': 0}
    test_loader = data.DataLoader(test_set, **params)
    model = Dronet(PreActBlock, [1, 1, 1], True)
    ModelManager.Read("Models/DronetGray.pt", model)
    trainer = ModelTrainer(model)
    trainer.Predict(test_loader)
def main():
    logging.basicConfig(level=logging.INFO,
                        format="%(asctime)s - %(levelname)s - %(message)s",
                        datefmt="%Y-%m-%d %H:%M:%S",
                        filename="log.txt",
                        filemode='w')

    console = logging.StreamHandler()
    console.setLevel(logging.INFO)
    formatter = logging.Formatter('%(message)s')
    console.setFormatter(formatter)
    logging.getLogger('').addHandler(console)

    DATA_PATH = "/Users/usi/PycharmProjects/data/160x90/"
    [x_test, y_test, z_test] = DataProcessor.ProcessTestData(
        DATA_PATH + "160x90HimaxMixedTest_12_03_20.pickle", True)

    model = Dronet(PreActBlock, [1, 1, 1], True)
    ModelManager.Read('../PyTorch/Models/DronetHimax160x90Augmented.pt', model)
    trainer = ModelTrainer(model)

    VizHeatMapsByAngle(z_test, x_test, y_test, trainer)
Esempio n. 11
0
def main():
    logging.basicConfig(level=logging.INFO,
                        format="%(asctime)s - %(levelname)s - %(message)s",
                        datefmt="%Y-%m-%d %H:%M:%S",
                        filename="log.txt",
                        filemode='w')

    console = logging.StreamHandler()
    console.setLevel(logging.INFO)
    formatter = logging.Formatter('%(message)s')
    console.setFormatter(formatter)
    logging.getLogger('').addHandler(console)

    model = Dronet(PreActBlock, [1, 1, 1], True)
    ModelManager.Read('../PyTorch/Models/DronetHimax160x90.pt', model)

    DATA_PATH = "/Users/usi/PycharmProjects/data/"
    picklename = "160x90HimaxDynamic_12_03_20Shift.pickle"
    [x_test, y_test, z_test] = DataProcessor.ProcessTestData(DATA_PATH + picklename, True)

    test_set = Dataset(x_test, y_test)
    params = {'batch_size': 1,
              'shuffle': False,
              'num_workers': 1}
    test_generator = data.DataLoader(test_set, **params)
    trainer = ModelTrainer(model)

    MSE, MAE, r2_score, outputs, gt_labels = trainer.Test(test_generator)

    h = x_test.shape[2]
    w = x_test.shape[3]
    x_test = np.reshape(x_test, (-1, h, w))

    if picklename.find(".pickle"):
        picklename = picklename.replace(".pickle", '')

    VizWorldTopView(x_test, y_test, z_test, outputs, True, picklename)
Esempio n. 12
0
def main():
    # Training settings
    parser = argparse.ArgumentParser(description='PyTorch FrontNet')
    args = Parse(parser)

    torch.manual_seed(args.seed)

    # [NeMO] Setup of console logging.
    logging.basicConfig(level=logging.INFO,
                        format="%(asctime)s - %(levelname)s - %(message)s",
                        datefmt="%Y-%m-%d %H:%M:%S",
                        filename="log.txt",
                        filemode='w')

    console = logging.StreamHandler()
    console.setLevel(logging.INFO)
    formatter = logging.Formatter('%(message)s')
    console.setFormatter(formatter)
    logging.getLogger('').addHandler(console)

    train_loader, validation_loader = LoadData(args)

    # [NeMO] Loading of the JSON regime file.
    regime = {}
    if args.regime is None:
        print("ERROR!!! Missing regime JSON.")
        raise Exception
    else:
        with open(args.regime, "r") as f:
            rr = json.load(f)
        for k in rr.keys():
            try:
                regime[int(k)] = rr[k]
            except ValueError:
                regime[k] = rr[k]

    model = HannaNet(ConvBlock, [1, 1, 1], True)

    h = 96
    w = 160

    if args.trainq:
        epoch = ModelManager.Read(args.load_model, model)
        trainer = ModelTrainer(model, args, regime, teacher=True)
        trainer.TrainQuantized(train_loader, validation_loader, h, w,
                               args.epochs)

    if args.quantize and not args.trainq:
        model = nemo.transform.quantize_pact(model,
                                             dummy_input=torch.ones(
                                                 (1, 1, h, w)))
        logging.info("[ETHQ2] Model: %s", model)
        epoch, prec_dict = ModelManager.ReadQ(args.load_model, model)
        trainer = ModelTrainer(model, args, regime)
        trainer.Deploy(validation_loader, h, w, prec_dict)

    if args.save_model is not None:
        # torch.save(trainer.model.state_dict(), args.save_model)
        ModelManager.Write(trainer.GetModel(), 100, args.save_model)

    print(model)
def main():
    logging.basicConfig(level=logging.INFO,
                        format="%(asctime)s - %(levelname)s - %(message)s",
                        datefmt="%Y-%m-%d %H:%M:%S",
                        filename="log.txt",
                        filemode='w')

    console = logging.StreamHandler()
    console.setLevel(logging.INFO)
    formatter = logging.Formatter('%(message)s')
    console.setFormatter(formatter)
    logging.getLogger('').addHandler(console)

    DATA_PATH = "/Users/usi/PycharmProjects/data/160x90/"
    [x_test, y_test, z_test] = DataProcessor.ProcessTestData(DATA_PATH + "160x90HimaxMixedTrain_12_03_20.pickle", True)
    model = Dronet(PreActBlock, [1, 1, 1], True)
    ModelManager.Read('../PyTorch/Models/DronetHimax160x90Mixed.pt', model)
    trainer = ModelTrainer(model)

    df = pd.DataFrame({'x': z_test[:, 0], 'y': z_test[:, 1], 'z': z_test[:,2], 'phi': z_test[:, 3]})
    walls = SortByAngle(df)

    fig, a = plt.subplots(2, 2, figsize=(9,9))

    for w in range(len(walls)):
        zw_set = z_test[walls[w]]
        xw_set = x_test[walls[w]]
        yw_set = y_test[walls[w]]
        df_w = pd.DataFrame({'x': zw_set[:, 0], 'y': zw_set[:, 1], 'z': zw_set[:, 2], 'phi': zw_set[:, 3]})

        min = np.amin(zw_set, axis=0)
        max = np.amax(zw_set, axis=0)

        xcells = SortByCoordinates(df_w, 'x')
        ycells = SortByCoordinates(df_w, 'y')

        valid_loss = []
        samples = []

        for i in range(len(xcells)):
            for j in range(len(ycells)):
                cell = intersection(xcells[i], ycells[j])
                if len(cell) > 0:
                    x = xw_set[cell]
                    y = yw_set[cell]
                    test_set = Dataset(x, y)
                    params = {'batch_size': 1, 'shuffle': False, 'num_workers': 0}
                    test_generator = data.DataLoader(test_set, **params)

                    MSE, MAE, r2_score, y_pred, gt_labels = trainer.Test(test_generator)
                    loss = MAE[1]
                else:
                    loss = 0
                valid_loss.append(loss)
                samples.append(len(cell))

        VizHeatMap(valid_loss, a, samples, len(xcells), len(ycells), w, min, max)

    fig.tight_layout()
    fig.suptitle('Y axis Error vs Pose')
    plt.savefig("yheatmap.png")
    plt.show()
def main():
    logging.basicConfig(level=logging.INFO,
                        format="%(asctime)s - %(levelname)s - %(message)s",
                        datefmt="%Y-%m-%d %H:%M:%S",
                        filename="log.txt",
                        filemode='w')

    console = logging.StreamHandler()
    console.setLevel(logging.INFO)
    formatter = logging.Formatter('%(message)s')
    console.setFormatter(formatter)
    logging.getLogger('').addHandler(console)

    model = Dronet(PreActBlock, [1, 1, 1], True)
    ModelManager.Read('../PyTorch/Models/DronetGray.pt', model)

    DATA_PATH = "/Users/usi/PycharmProjects/data/"
    picklename = "HimaxDynamic_12_03_20.pickle"
    [x_test, y_test,
     z_test] = DataProcessor.ProcessTestData(DATA_PATH + picklename, True)
    t_test = DataProcessor.GetTimeStampsFromTestData(DATA_PATH + picklename)

    if picklename.find(".pickle"):
        picklename = picklename.replace(".pickle", '')

    x_test2 = []
    y_test2 = []
    z_test2 = []
    # for i in range(len(x_test)):
    #     gt = y_test[i]
    #     if ((gt[0] > 1.0) and (gt[0] < 2.0)):
    #         x_test2.append(x_test[i])
    #         y_test2.append(y_test[i])
    #         z_test2.append(z_test[i])
    #
    # x_test = np.asarray(x_test2)
    # y_test = np.asarray(y_test2)
    # z_test = np.asarray(z_test2)

    test_set = Dataset(x_test, y_test)
    params = {'batch_size': 1, 'shuffle': False, 'num_workers': 1}
    test_generator = data.DataLoader(test_set, **params)
    trainer = ModelTrainer(model)

    MSE, MAE, r2_score, outputs, gt_labels = trainer.Test(test_generator)

    # utils.SaveResultsToCSV(gt_labels, outputs, t_test, "wow.csv")

    model2 = Dronet(PreActBlock, [1, 1, 1], True)
    ModelManager.Read('../PyTorch/Models/DronetGrayAug120.pt', model2)
    trainer2 = ModelTrainer(model2)
    MSE, MAE, r2_score, outputs2, gt_labels2 = trainer2.Test(test_generator)

    utils.SaveResultsToCSVWithCamPoses(gt_labels, outputs2, t_test, z_test,
                                       picklename + ".csv")

    outputs2 = np.reshape(outputs2, (-1, 4))

    h = x_test.shape[2]
    w = x_test.shape[3]
    x_test = np.reshape(x_test, (-1, h, w))
    VizWorldTopView(x_test, y_test, z_test, outputs, outputs2, True,
                    picklename)