miguelgfierro / ai_projects

AI projects
https://miguelgfierro.com/
Other
797 stars 180 forks source link

Manage grayscale images #49

Closed miguelgfierro closed 6 years ago

miguelgfierro commented 6 years ago

we can create fake RGB images from 1 channel images by replicating the channels:

data_transform = transforms.Compose([
    transforms.ToTensor(),
    transforms.Lambda(lambda x: torch.cat([x, x, x], 0))
])

source

miguelgfierro commented 6 years ago

When using MNIST, they load the image as grayscale: https://github.com/pytorch/vision/blob/master/torchvision/datasets/mnist.py#L73 img = Image.fromarray(img.numpy(), mode='L') when they load the dataset, they normalize 2 components:

    datasets.MNIST('../data', train=True, download=True,
                   transform=transforms.Compose([
                       transforms.ToTensor(),
                       transforms.Normalize((0.1307,), (0.3081,))
])),
miguelgfierro commented 6 years ago

With gray images using transform transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]):

Epoch 1/25
----------
train Loss: 0.0110 Acc: 0.1633
val Loss: 0.0098 Acc: 0.3128

Epoch 2/25
----------
train Loss: 0.0089 Acc: 0.3836
val Loss: 0.0070 Acc: 0.5857

Epoch 3/25
----------
train Loss: 0.0070 Acc: 0.5464
val Loss: 0.0048 Acc: 0.7230

Epoch 4/25
----------
train Loss: 0.0058 Acc: 0.6209
val Loss: 0.0036 Acc: 0.7910

Epoch 5/25
----------
train Loss: 0.0051 Acc: 0.6662
val Loss: 0.0030 Acc: 0.8266

Epoch 6/25
----------
train Loss: 0.0045 Acc: 0.6947
val Loss: 0.0025 Acc: 0.8509

Epoch 7/25
----------
train Loss: 0.0041 Acc: 0.7183
val Loss: 0.0022 Acc: 0.8665

Epoch 8/25
----------
train Loss: 0.0041 Acc: 0.7245
val Loss: 0.0022 Acc: 0.8683

Epoch 9/25
----------
train Loss: 0.0039 Acc: 0.7362
val Loss: 0.0022 Acc: 0.8708

Epoch 10/25
----------
train Loss: 0.0039 Acc: 0.7357
val Loss: 0.0022 Acc: 0.8719

Epoch 11/25
----------
train Loss: 0.0039 Acc: 0.7317
val Loss: 0.0021 Acc: 0.8762

Epoch 12/25
----------
train Loss: 0.0039 Acc: 0.7351
val Loss: 0.0021 Acc: 0.8731

Epoch 13/25
----------
train Loss: 0.0038 Acc: 0.7422
val Loss: 0.0020 Acc: 0.8795

Epoch 14/25
----------
train Loss: 0.0038 Acc: 0.7394
val Loss: 0.0020 Acc: 0.8795

Epoch 15/25
----------
train Loss: 0.0039 Acc: 0.7365
val Loss: 0.0020 Acc: 0.8790

Epoch 16/25
----------
train Loss: 0.0038 Acc: 0.7433
val Loss: 0.0020 Acc: 0.8783

Epoch 17/25
----------
train Loss: 0.0038 Acc: 0.7399
val Loss: 0.0020 Acc: 0.8783

Epoch 18/25
----------
train Loss: 0.0038 Acc: 0.7401
val Loss: 0.0020 Acc: 0.8801

Epoch 19/25
----------
train Loss: 0.0039 Acc: 0.7330
val Loss: 0.0020 Acc: 0.8795

Epoch 20/25
----------
train Loss: 0.0039 Acc: 0.7335
val Loss: 0.0020 Acc: 0.8785

Epoch 21/25
----------
train Loss: 0.0038 Acc: 0.7384
val Loss: 0.0020 Acc: 0.8813

Epoch 22/25
----------
train Loss: 0.0038 Acc: 0.7408
val Loss: 0.0020 Acc: 0.8798

Epoch 23/25
----------
train Loss: 0.0038 Acc: 0.7399
val Loss: 0.0020 Acc: 0.8788

Epoch 24/25
----------
train Loss: 0.0038 Acc: 0.7399
val Loss: 0.0020 Acc: 0.8806

Epoch 25/25
----------
train Loss: 0.0037 Acc: 0.7460
val Loss: 0.0020 Acc: 0.8813
Training complete in 15m 59s
Best val Acc: 0.881330
miguelgfierro commented 6 years ago

With gray images not using transform.

Epoch 1/25
----------
train Loss: 0.0110 Acc: 0.1629
val Loss: 0.0100 Acc: 0.2565

Epoch 2/25
----------
train Loss: 0.0090 Acc: 0.3853
val Loss: 0.0070 Acc: 0.5652

Epoch 3/25
----------
train Loss: 0.0071 Acc: 0.5460
val Loss: 0.0051 Acc: 0.7064

Epoch 4/25
----------
train Loss: 0.0058 Acc: 0.6217
val Loss: 0.0036 Acc: 0.7900

Epoch 5/25
----------
train Loss: 0.0051 Acc: 0.6697
val Loss: 0.0030 Acc: 0.8274

Epoch 6/25
----------
train Loss: 0.0045 Acc: 0.6954
val Loss: 0.0025 Acc: 0.8483

Epoch 7/25
----------
train Loss: 0.0042 Acc: 0.7222
val Loss: 0.0022 Acc: 0.8624

Epoch 8/25
----------
train Loss: 0.0040 Acc: 0.7308
val Loss: 0.0022 Acc: 0.8639

Epoch 9/25
----------
train Loss: 0.0040 Acc: 0.7311
val Loss: 0.0022 Acc: 0.8668

Epoch 10/25
----------
train Loss: 0.0040 Acc: 0.7346
val Loss: 0.0021 Acc: 0.8680

Epoch 11/25
----------
train Loss: 0.0040 Acc: 0.7294
val Loss: 0.0021 Acc: 0.8701

Epoch 12/25
----------
train Loss: 0.0039 Acc: 0.7337
val Loss: 0.0021 Acc: 0.8724

Epoch 13/25
----------
train Loss: 0.0039 Acc: 0.7368
val Loss: 0.0021 Acc: 0.8721

Epoch 14/25
----------
train Loss: 0.0038 Acc: 0.7444
val Loss: 0.0021 Acc: 0.8739

Epoch 15/25
----------
train Loss: 0.0038 Acc: 0.7395
val Loss: 0.0021 Acc: 0.8742

Epoch 16/25
----------
train Loss: 0.0039 Acc: 0.7378
val Loss: 0.0020 Acc: 0.8716

Epoch 17/25
----------
train Loss: 0.0039 Acc: 0.7356
val Loss: 0.0020 Acc: 0.8772

Epoch 18/25
----------
train Loss: 0.0038 Acc: 0.7364
val Loss: 0.0021 Acc: 0.8731

Epoch 19/25
----------
train Loss: 0.0039 Acc: 0.7397
val Loss: 0.0020 Acc: 0.8767

Epoch 20/25
----------
train Loss: 0.0038 Acc: 0.7410
val Loss: 0.0020 Acc: 0.8742

Epoch 21/25
----------
train Loss: 0.0038 Acc: 0.7447
val Loss: 0.0021 Acc: 0.8708

Epoch 22/25
----------
train Loss: 0.0038 Acc: 0.7417
val Loss: 0.0020 Acc: 0.8749

Epoch 23/25
----------
train Loss: 0.0038 Acc: 0.7395
val Loss: 0.0020 Acc: 0.8757

Epoch 24/25
----------
train Loss: 0.0038 Acc: 0.7436
val Loss: 0.0020 Acc: 0.8767

Epoch 25/25
----------
train Loss: 0.0038 Acc: 0.7401
val Loss: 0.0021 Acc: 0.8734
Training complete in 15m 44s
Best val Acc: 0.877238
miguelgfierro commented 6 years ago

There is no significant difference between the 2 cases