Exemplo n.º 1
0
def main():
    # Device
    SEED = 1
    cuda = torch.cuda.is_available()
    print("Cuda is available ?", cuda)
    torch.manual_seed(SEED)
    if cuda:
        torch.cuda.manual_seed(SEED)
    device = torch.device("cuda" if cuda else "cpu")

    # Create Train and Test Loader
    trainloader = Loader.getDataLoader(dataset_name, trainSet_dict,
                                       trainLoad_dict)
    testloader = Loader.getDataLoader(dataset_name, testSet_dict,
                                      testLoad_dict)
    classes = ('plane', 'car', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse',
               'ship', 'truck')

    # Loss Function
    criterion = nn.NLLLoss()

    # Optimizer
    model = Net().to(device)
    optimizer = optim.SGD(model.parameters(),
                          lr=LR,
                          momentum=MOMENTUM,
                          weight_decay=WEIGHT_DECAY)

    # Start training
    for epoch in range(EPOCHS):
        train_loss, train_acc = TrainModel.train(model, device, trainloader,
                                                 criterion, optimizer, epoch)
        train_losses.append(train_loss)
        train_accuracy.append(train_acc)
        test_loss, test_acc = TestModel.test(model, device, testloader,
                                             criterion)
        test_losses.append(test_loss)
        test_accuracy.append(test_acc)

    # Plot and Save Graph
    getPlottedGraph(EPOCHS,
                    train_losses,
                    train_accuracy,
                    test_losses,
                    test_accuracy,
                    name="cifar_10_plot",
                    PATH=IMAGE_PATH)

    # Save Models
    torch.save(model.state_dict(), MODEL_PATH + "model7.pth")
Exemplo n.º 2
0
def main():
    # Device
    SEED = 1
    cuda = torch.cuda.is_available()
    print("Cuda is available ?", cuda)
    torch.manual_seed(SEED)
    if cuda:
        torch.cuda.manual_seed(SEED)
    device = torch.device("cuda" if cuda else "cpu")

    # Create Train and Test Loader
    trainloader = Loader.getDataLoader(dataset_name, trainSet_dict, trainLoad_dict)
    testloader = Loader.getDataLoader(dataset_name, testSet_dict, testLoad_dict)
    classes = ('plane', 'car', 'bird', 'cat',
               'deer', 'dog', 'frog', 'horse', 'ship', 'truck')

    # Loss Function
    criterion = nn.CrossEntropyLoss()

    # Optimizer
    model = ResNet18().to(device)
    optimizer = optim.SGD(model.parameters(), lr=LR, momentum=MOMENTUM, weight_decay=WEIGHT_DECAY)
    scheduler = StepLR(optimizer, step_size=13, gamma=0.1)

    # Start training
    for epoch in range(EPOCHS):
        train_loss, train_acc = TrainModel.train(model, device, trainloader, criterion, optimizer, epoch)
        # scheduler.step()
        train_losses.append(train_loss)
        train_accuracy.append(train_acc)
        test_loss, test_acc = TestModel.test(model, device, testloader, criterion)
        test_losses.append(test_loss)
        test_accuracy.append(test_acc)

    # Plot and Save Graph
    getPlottedGraph(EPOCHS, train_losses, train_accuracy, test_losses, test_accuracy,name="cifar_10_plot_using_resnet18_v3", PATH=IMAGE_PATH)

    # Save Models
    torch.save(model.state_dict(), MODEL_PATH+"model8_v3.pth")

    #misclassified images
    ms.show_save_misclassified_images(model, device, testloader, classes, list(img_mean), list(img_std), "fig_cifar10_v1", IMAGE_PATH, 25)
Exemplo n.º 3
0
def main():
    # Create Train Loader and Test Loader
    trainloader = Loader.getDataLoader(dataset_name, trainSet_dict, trainLoad_dict)
    testloader = Loader.getDataLoader(dataset_name, testSet_dict, testLoad_dict)

    classes = ('plane', 'car', 'bird', 'cat',
               'deer', 'dog', 'frog', 'horse', 'ship', 'truck')
    # Start training
    for epoch in range(EPOCHS):
        #Train
        train_loss, train_acc = TrainModel.train(model, device, trainloader, criterion, optimizer, epoch)
        scheduler.step()
        train_losses.append(train_loss)
        train_accuracy.append(train_acc)
        #Test
        test_loss, test_acc = TestModel.test(model, device, testloader, criterion)
        test_losses.append(test_loss)
        test_accuracy.append(test_acc)

        #Save model
        state = {'epoch': epoch + 1, 'state_dict': model.state_dict(),
                 'optimizer': optimizer.state_dict()}
        torch.save(state, filename)


    # Plot and Save Graph
    getPlottedGraph(EPOCHS, train_losses, train_accuracy, test_losses, test_accuracy, name="S9_plot_final",
                        PATH=MODEL_PATH)
    # Show and Save correct classified images
    show_save_correctly_classified_images(model, testloader, device, IMAGE_PATH, name="correct_classified_imgs",
                                          max_correctly_classified_images_imgs=25, labels_list=classes)
    # Show and Save misclassified images
    show_save_misclassified_images(model, testloader, device, IMAGE_PATH, name="misclassified_imgs",
                                   max_misclassified_imgs=25, labels_list=classes)
    # Visualize Activation Map
    misclassified_imgs, correctly_classified_images = classify_images(model, testloader, device, 5)
    layers_list = ["layer1", "layer2", "layer3", "layer4"]
    display_gradcam = VisualizeCam(model, classes, layers_list)
    correct_pred_imgs = []
    for i in range(len(correctly_classified_images)):
        correct_pred_imgs.append(torch.as_tensor(correctly_classified_images[i]["img"]))
    display_gradcam(torch.stack(correct_pred_imgs), layers_list, PATH="./" + str("visualization"), metric="correct")