Exemple #1
0
def runPytorchModel(args):
    # Initialize network
    if args['model'] == "traphic":
        net = traphicNet(args)
    else:
        net = highwayNet(args)

    # net.load_state_dict(torch.load('trained_models/m_false/cslstm_b_pretrain2_NGSIM.tar'), strict=False)

    if args['cuda']:
        print("Using cuda")
        net = net.cuda()
        # net = net.to("cuda")

    ## Initialize optimizer
    optim = torch.optim.Adam(net.parameters(), lr=args['learning_rate'])
    crossEnt = torch.nn.BCELoss()

    if verbose:
        print("*" * 3, "Using model: ", net)
        print("*" * 3, "Optim: ", optim)
        print("*" * 3, "Creating dataset and dataloaders...")

    ## Initialize data loaders
    trSet = ngsimDataset('model/Prediction/data/TRAF/TRAFTrainSet.npy')
    valSet = ngsimDataset('model/Prediction/data/TRAF/TRAFValSet.npy')
    # trSet = ngsimDataset('./Prediction/data/TrainSetTRAF.mat')
    # valSet = ngsimDataset('./Prediction/data/ValSetTRAF.mat')
    trDataloader = DataLoader(trSet,
                              batch_size=args['batch_size'],
                              shuffle=True,
                              num_workers=8,
                              collate_fn=trSet.collate_fn)
    valDataloader = DataLoader(valSet,
                               batch_size=args['batch_size'],
                               shuffle=True,
                               num_workers=8,
                               collate_fn=valSet.collate_fn)

    if verbose:
        print("starting training...")

    if args['model'] == "traphic":
        if verbose:
            print("Training TRAPHIC")
        traphic = TraphicEngine(net, optim, trDataloader, valDataloader, args)
        traphic.start()
    else:
        if verbose:
            print("Training conv social pooling")
        social = SocialEngine(net, optim, trDataloader, valDataloader, args)
        social.start()
Exemple #2
0
def evalPytorchModel(args):
    # Initialize network
    args['eval'] = True
    if args['model'] == "traphic":
        net = traphicNet(args)
    else:
        net = highwayNet(args)

    # net.load_state_dict(torch.load('trained_models/m_false/cslstm_b_pretrain2_NGSIM.tar'), strict=False)

    if args['use_cuda']:
        print("Using cuda")
        net = net.cuda()
        # net = net.to("cuda")

    ## Initialize optimizer
    optim = torch.optim.Adam(net.parameters(), lr=args['learning_rate'])
    crossEnt = torch.nn.BCELoss()

    if verbose:
        print("*" * 3, "Using model: ", net)
        print("*" * 3, "Optim: ", optim)
        print("*" * 3, "Creating dataset and dataloaders...")

    ## Initialize data loaders
    testSet = ngsimDataset('model/Prediction/data/TRAF/TRAFTestSet.npy')
    testDataloader = DataLoader(testSet,
                                batch_size=args['batch_size'],
                                shuffle=True,
                                num_workers=8,
                                collate_fn=testSet.collate_fn)

    if verbose:
        print("evaluating...")

    net.load_state_dict(
        torch.load("model/Prediction/trained_models/{}_{}.tar".format(
            args['model'], args['name'])))

    if args['model'] == "traphic":
        if verbose:
            print("Evaluating TRAPHIC")
        traphic = TraphicEngine(net, optim, None, testDataloader, args)
        traphic.start()
    else:
        if verbose:
            print("Evaluating SOCIAL")
        social = SocialEngine(net, optim, None, testDataloader, args)
        social.start()
Exemple #3
0
start_time = datetime.datetime.now()

# Initialize network
net = highwayNet(args)
if args['use_cuda']:
    net = net.cuda()

## Initialize optimizer
trainEpochs = 10
optimizer = torch.optim.Adam(net.parameters())  #lr = ...
batch_size = 128
crossEnt = torch.nn.BCELoss()  # binary cross entropy

## Initialize data loaders
trSet = ngsimDataset('../../data/trajectory/TrainSet.mat')
valSet = ngsimDataset('../../data/trajectory/ValSet.mat')
trDataloader = DataLoader(trSet,
                          batch_size=batch_size,
                          shuffle=True,
                          num_workers=8,
                          collate_fn=trSet.collate_fn)
valDataloader = DataLoader(valSet,
                           batch_size=batch_size,
                           shuffle=True,
                           num_workers=8,
                           collate_fn=valSet.collate_fn)

## Variables holding train and validation loss values:
train_loss = []
val_loss = []
Exemple #4
0
    batch_size = 1024  # 1024 on AWS with V100, 768 on GTX 1080 TI
else:
    batch_size = 128

## Initialize data loaders
logging.info("Loading the datasets...")

newFeats = 0
behavFeats = 0
if 'X' in cmd_args.experiment:  # new features experiments
    newFeats = 3
    behavFeats = 0
    #trSet = ngsimDataset('data/TrainSetX.mat', grid_size=(19,3) )
    #valSet = ngsimDataset('data/ValSetX.mat', grid_size=(19,3) )

    trSet = ngsimDataset('data/TrainSetCVA.mat', newFeats=newFeats)
    valSet = ngsimDataset('data/ValSetCVA.mat', newFeats=newFeats)
else:
    trSet = ngsimDataset('data/TrainSet.mat')
    valSet = ngsimDataset('data/ValSet.mat')

trDataloader = DataLoader(trSet,
                          batch_size=batch_size,
                          shuffle=True,
                          num_workers=8,
                          collate_fn=trSet.collate_fn)
valDataloader = DataLoader(valSet,
                           batch_size=batch_size,
                           shuffle=True,
                           num_workers=8,
                           collate_fn=valSet.collate_fn)
    args['device'] = torch.device('cuda:' + str(args['gpu']))

# Evaluation metric:
# metric = 'nll'  #or rmse
metric = 'rmse'

# Initialize network
net = SocialSTGCNModel(args)
net.load_state_dict(torch.load('../saved_models/student_stgcn.tar'))

state = torch.load('../saved_models/teacher_gmm_set.tar')
gmm_dict = state['gmm_dict']

tsSet = None
if args['dset_name'] == 'ngsim':
    tsSet = ngsimDataset('../../data/TestSetNGSIM.mat', gmm_dict, args['Mq'],
                         args['z_size'])
elif args['dset_name'] == 'gta':
    tsSet = gtaDataset('../../data/TestSetGTA', args['dset_tag'], gmm_dict,
                       args['Mq'], args['z_size'])
assert tsSet != None

tsDataloader = DataLoader(tsSet,
                          batch_size=64,
                          shuffle=True,
                          num_workers=8,
                          collate_fn=tsSet.collate_fn)

lossVals = torch.zeros(25).cuda()
counts = torch.zeros(25).cuda()

for i, data in enumerate(tsDataloader):
Exemple #6
0
# Initialize network
net_vae = GCNVAE(args)
net_gmm = GMM(args)

## Initialize optimizer
pretrainEpochs = 0
trainEpochs = 1
optim_vae = torch.optim.Adam(net_vae.parameters(), lr=args['lr_vae'])
optim_gmm = torch.optim.Adam(net_gmm.parameters(), lr=args['lr_gmm'])
batch_size = 32

## Initialize data loaders
trSet = None
if args['dset_name'] == 'ngsim':
    trSet = ngsimDataset('../../data/TeacherSetNGSIM.mat')
elif args['dset_name'] == 'gta':
    trSet = gtaDataset('../../data/TeacherSetGTA', args['dset_tag'])
assert trSet != None

trDataloader = DataLoader(trSet,
                          batch_size=batch_size,
                          shuffle=True,
                          num_workers=2,
                          collate_fn=trSet.collate_fn)

## Variables holding train and validation loss values:
vae_losses = []
gmm_losses = []

for epoch_num in range(pretrainEpochs + trainEpochs):
Exemple #7
0
     #         params.requires_grad = False

if args['use_cuda']:
    net = net.cuda()


## Initialize optimizer
# pretrainEpochs = 80
# trainEpochs = 200
# batch_size = 128
optimizer = torch.optim.Adam(net.parameters(),lr=lr)
crossEnt = torch.nn.BCELoss()


## Initialize data loaders
trSet = ngsimDataset('data/TrainSet.mat')
valSet = ngsimDataset('data/ValSet.mat')
trDataloader = DataLoader(trSet,batch_size=batch_size,shuffle=True,num_workers=8,collate_fn=trSet.collate_fn)
valDataloader = DataLoader(valSet,batch_size=batch_size,shuffle=True,num_workers=8,collate_fn=valSet.collate_fn)


## Variables holding train and validation loss values:
train_loss = []
val_loss = []
prev_val_loss = math.inf

for epoch_num in range(pretrainEpochs+trainEpochs):
    if epoch_num == 0:
        print('Pre-training with MSE loss')
    elif epoch_num == pretrainEpochs:
        print('Training with NLL loss')
Exemple #8
0
args['conv_3x1_depth'] = 16
args['dyn_embedding_size'] = 32
args['input_embedding_size'] = 32
args['num_lat_classes'] = 3
args['num_lon_classes'] = 2
args['use_maneuvers'] = True  # visualize multi-model predictions
args['train_flag'] = False

# Initialize network
net = highwayNet(args)
net.load_state_dict(torch.load('trained_models/cslstm_m.tar'))
#net.load_state_dict(torch.load('trained_models/cslstm.tar'))
if args['use_cuda']:
    net = net.cuda()

data_set = ngsimDataset('data/TestSet.mat')

skip = 10

lossVals = torch.zeros(25).cuda()
counts = torch.zeros(25).cuda()

delta = 2.0
x_min = -120
x_max = 120
range_y = 20
scale = 0.4
v_w = 5
v_l = 15

else:
    metricFCT = maskedBIGERRTest

# Initialize network
batch_size = 1024
batch_size = 16
#batch_size=6

logging.info("Loading the datasets...")
newFeats = 0
behavFeats = 0
if 'X' in cmd_args.experiment:
    newFeats = 3
    behavFeats = 0
    #tsSet = ngsimDataset('data/TestSetV.mat', newFeats=newFeats)
    tsSet = ngsimDataset('data/TestSetCVA.mat', newFeats=newFeats)
else:
    tsSet = ngsimDataset('data/TestSet.mat')

tsDataloader = DataLoader(tsSet,
                          batch_size=batch_size,
                          shuffle=False,
                          num_workers=0,
                          collate_fn=tsSet.collate_fn)

net = highwayNet(params, newFeats=newFeats, behavFeats=behavFeats)

net_path = os.path.join(args['model_dir'], 'best.pth.tar')
assert os.path.isfile(net_path), "No net file found at {}".format(net_path)
#net.load_state_dict(torch.load('trained_models/cslstm_m.tar'))
utils.load_checkpoint(net_path, net)
Exemple #10
0
args['model_path'] = 'trained_models/m_false/cslstm_b_pretrain2_NGSIM.tar'
args['dataset_path'] = 'data/TestSetTRAF.mat'
args['ours'] = True

# Evaluation metric:
metric = 'rmse'  #nll or rmse


# Initialize network
net = highwayNet(args)
batch_size = 128
net.load_state_dict(torch.load(args['model_path']),strict=False)
if args['use_cuda']:
    net = net.cuda()

tsSet = ngsimDataset(args['dataset_path'])
tsDataloader = DataLoader(tsSet,batch_size=batch_size,shuffle=True,num_workers=8,collate_fn=tsSet.collate_fn)

lossVals = torch.zeros(args['out_length']).cuda()
counts = torch.zeros(args['out_length']).cuda()


for i, data in enumerate(tsDataloader):
    st_time = time.time()
    hist, upp_nbrs, nbrs, upp_mask, mask, lat_enc, lon_enc, fut, op_mask = data

    # Initialize Variables
    if args['use_cuda']:
        hist = hist.cuda()
        nbrs = nbrs.cuda()
        upp_nbrs = upp_nbrs.cuda()
Exemple #11
0
args['input_embedding_size'] = 32

args['train_flag'] = False

# Evaluation metric:

metric = 'rmse'

# Initialize network
net = highwayNet(args)
net.load_state_dict(torch.load('trained_models/sta_lstm_10272020.tar'))
if args['use_cuda']:
    net = net.cuda()

tsSet = ngsimDataset('../../data/trajectory/TestSet.mat')
tsDataloader = DataLoader(tsSet,
                          batch_size=128,
                          shuffle=True,
                          num_workers=8,
                          collate_fn=tsSet.collate_fn)  #

lossVals = torch.zeros(5).cuda()
counts = torch.zeros(5).cuda()
lossVal = 0  # revised by Lei
count = 0

vehid = []
pred_x = []
pred_y = []
T = []
assert args['h_dim2'] == args['z_dim']

args['device'] = torch.device('cpu')
if args['use_cuda']:
    args['device'] = torch.device('cuda:' + str(args['gpu']))

# Initialize network
net_vae = GCNVAE(args)
net_vae.load_state_dict(torch.load('../saved_models/teacher_vae.tar'))

net_gmm = GMM(args)
net_gmm.load_state_dict(torch.load('../saved_models/teacher_gmm.tar'))

## Initialize data loaders
batch_size = 32
trSet = ngsimDataset('../../data/TrainSet.mat')
trDataloader = DataLoader(trSet,
                          batch_size=batch_size,
                          shuffle=False,
                          num_workers=2,
                          collate_fn=trSet.collate_fn)

## Infer mu_q, sigma_q and dump the dict
gmm_count = 0
gmm_dict = {}
avg_time = 0

net_vae.training = False
for i, data in enumerate(trDataloader):
    st_time = time.time()
    data_list, graph_list = data
Exemple #13
0
# Initialize network
net = highwayNet(args)
if args['use_cuda']:
    print('cuda success!')
    net = net.cuda()

## Initialize optimizer
trainEpochs = 10
optimizer = torch.optim.Adam(net.parameters())  #lr = ...
batch_size = 128
crossEnt = torch.nn.BCELoss()  # binary cross entropy

cav_ratio = 0.4  # change CAV percentage here -1 means CAV market place = 0, no neighbor CAV
t_h = 30  # historical step 30
trSet = ngsimDataset('../../data/trajectory/TrainSet_us101.mat',
                     t_h=t_h,
                     CAV_ratio=cav_ratio)
valSet = ngsimDataset('../../data/trajectory/ValSet_us101.mat',
                      t_h=t_h,
                      CAV_ratio=cav_ratio)
trDataloader = DataLoader(trSet,
                          batch_size=batch_size,
                          shuffle=True,
                          num_workers=8,
                          collate_fn=trSet.collate_fn)
valDataloader = DataLoader(valSet,
                           batch_size=batch_size,
                           shuffle=True,
                           num_workers=8,
                           collate_fn=valSet.collate_fn)