Exemplo n.º 1
0
def model_accuracy(models, image_paths, target_paths, results_dir):
    accList = []
    for model in models:
        print('Path to model {}'.format(model))
        base_model = os.path.basename(model)
        batch_size = get_batch(base_model)
        train_loader, valid_loader, test_loader = ConvNet.train_valid_test_split(
            image_paths, target_paths, batch_size)
        print('Model: {}'.format(base_model))
        match = re.search('arch(\d+)', base_model)
        net_size = match.group(1)
        net_size = int(net_size)
        lr = re.search('lr(\d+\.\d+)', base_model)
        lr = float(lr.group(1))
        batch = get_batch(base_model)
        net = ConvNet.Net(net_size)
        net = nn.DataParallel(net)
        net.load_state_dict(
            torch.load(model, map_location=lambda storage, loc: storage))
        #net.cuda()
        accuracy = ConvNet.model_eval(test_loader, net, batch, lr, net_size,
                                      results_dir)
        accList.append(accuracy)
    maxInd = accList.index(max(accList))
    print('Highest accuracy: {} for model: {}'.format(accList[maxInd],
                                                      models[maxInd]))
    models[maxInd]
    return maxInd
Exemplo n.º 2
0
def main():
    startTime = time.time()
    device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
    model = ConvNet.Net().to(device)
    criterion = nn.MSELoss()
    optimizer = optim.SGD(model.parameters(), lr=0.001, momentum=0.9)
    epochs = 90

    for epoch in range(1, epochs + 1):
        ConvNet.train(model, device, train_data, criterion, optimizer, epoch)
        ConvNet.test(model, device, criterion, test_data)

    print(50 * "-")
    print('Finished Training')
    endTime = time.time()
    elapsedTime = int(endTime - startTime)
    showTime(elapsedTime)
    final_prediction = b[:, :, 0]
    labels = (final_prediction > 0.5).astype(np.int)
    return labels


if __name__ == '__main__':
    args = parser.parse_args()

    rasterfn = args.inpfile
    base = os.path.basename(rasterfn)
    fname = os.path.splitext(base)[0]
    newRasterfn = '/exports/csce/eddie/geos/groups/geos_cnn_imgclass/data/AerialImageDataset/predict_raster/predict_{}.tif'.format(
        fname)
    base_model = os.path.basename(args.model)
    match = re.search('arch(\d+)', base_model)
    net_size = match.group(1)
    net_size = int(net_size)
    net = ConvNet.Net(net_size)
    net = nn.DataParallel(net)
    device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')
    net.to(device)
    if torch.cuda.is_available():
        net.load_state_dict(torch.load(args.model))
    else:
        net.load_state_dict(
            torch.load(args.model, map_location=lambda storage, loc: storage))

    toTensor = transforms.ToTensor()
    array = image_loader(rasterfn)
    array2raster(rasterfn, newRasterfn, array)