Why is the training accuracy so low?
This is because your model is underfit. Few of the reasons for this could be,
- you might be using small learning rate.
- your model architecture is simple (small) and not big enough to recognize patterns from the data. Try increasing layers.
- try removing regularization if any.
As per the best of my knowledge and assumptions, I think following could be some of the reasons for validation accuracy to be higher than training accuracy. You might consider investigating in these areas.
The dataset domain might not be consistent? This means that there might be different types of images present in you dataset. For some images (or a type of images) the model is able to learn correctly (as a result ~ 50% accuracy on train set). And for the rest of the images the model is getting confused i.e. it is difficult for the model to recognize these other 50% images. And there might be a possibility that the particular type of images that are easier for model to recognize are present in the validation set. You can ensure that the domain of train and validation sets is same.
The dataset might not be properly split? This means the domain might be consistent but the dataset has imbalanced classes? There might be a possibility that the train set might contain some classes having more instances (majority classes) and some classes having very less instances (minority classes). Generally, model gets a hard time recognizing these minority classes, hence less train accuracy. And perhaps the validation set is containing only majority classes, which are very easy for the model to recognize.
What does it mean, that the validation accuracy of the pretrained algorith is so much higher as the other one? Does it mean the pretrained is two times better then the one trained from scratch?
Yes, it means given unseen 800 images to both of the models, the pretrained model predictions are two times better then the one trained from scratch.
Edited as per the suggestion from Nikos M.