1
$\begingroup$

I have added some Gaussian noise to CIFAR10 training and test set. I am using VGG16 and ResNet34 as the model to be used for training.
Under normal training conditions, where the standard CIFAR10 is used(without any Gaussian noise), the training happens as expected. The model does not overfit when trained using the right transforms and data augmentation. I am able to achieve 95% training accuracy and 91% test accuracy.

But if I add minor Gaussian noise to the entire training and test set and train the model using the same transforms, the model overfits considerably. The training accuracy reached 98% whereas the test accuracy does not go past 80%.

My initial reasoning for this was that I used color jittering for the transforms during normal training(when using clean data). But since color jittering is similar to gaussian noise, it does not prove to be an effective image augmentation technique when the model is being trained on data with gaussian noise.

I added salt and pepper noise as additional augmentation techniques when trying to train on the noise data, but it does not have any effect and continues to overfit.

For the hyperparameters:
I am using the Adam Optimizer, tried SGD as well.
I tried various learning rates 0.1, 0.01, 0.02, 0.025, 0.005, 0.001 along with step schedulers to reduce the learning rate.
I experimented with weight decays from 1e-04 to 1e-06.

The transforms I used for clean data training are:

transforms = transforms.Compose(
[transforms.RandomHorizontalFlip(), 
transforms.RandomRotation(15), 
transforms.RandomAffine(degrees=15, shear=15, scale=(0.85,1.15)), transforms.ColorJitter(brightness=0.15, contrast=0.15, saturation=0.15, hue=0.15), transforms.ToTensor(), 
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)) 
])

The transforms I tried when trying to train the models from scratch on the gaussian noise data are:

transforms = transforms.Compose(
[transforms.RandomHorizontalFlip(), 
transforms.RandomRotation(15), 
transforms.RandomAffine(degrees=15, shear=15, scale=(0.85,1.15)), transforms.ColorJitter(brightness=0.15, contrast=0.15, saturation=0.15, hue=0.15), 
SaltPepperNoiseTransform(prob=0.1, amount=0.05), 
SpeckleNoiseTransform(std=0.15),
transforms.ToTensor(), 
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)) 
])

I experimented with different values for each augmentation I applied.

How can I achieve the same training and test accuracy when training the model from scratch on the Gaussian noise training and Gaussian noise test data as I did on training from scratch on clean CIFAR 10 training and test data ?

Any tips or advice will be helpful.

$\endgroup$

0

You must log in to answer this question.