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)
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)
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)
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)
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)
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)
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)
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)