Need to improve my accuracy

I have 200 classes and 5000 images
can anyone advise me the best model architecture?

All models I use usually get me 98% train accuracy,but test accuracy always plateaus at 74% . am i overfitting?

train split 4.5 k test split 0.5k typical model:

model=Sequential()
model.add(Conv2D(16, kernel_size = [3,3], padding = ‘same’, activation = ‘relu’, input_shape = (64,64,3)))
model.add(Conv2D(32, kernel_size = [3,3], padding = ‘same’, activation = ‘relu’))
model.add(MaxPool2D(pool_size = [2,2]))
model.add(Conv2D(32, kernel_size = [3,3], padding = ‘same’, activation = ‘relu’))
model.add(Conv2D(32, kernel_size = [3,3], padding = ‘same’, activation = ‘relu’))
model.add(MaxPool2D(pool_size = [2,2]))
model.add(Conv2D(64, kernel_size = [3,3], padding = ‘same’, activation = ‘relu’))
model.add(Conv2D(64, kernel_size = [3,3], padding = ‘same’, activation = ‘relu’))
model.add(MaxPool2D(pool_size = [2,2]))
model.add(BatchNormalization())
model.add(Flatten())
model.add(Dense(256, activation = ‘relu’, kernel_regularizer = regularizers.l2(0.001)))
model.add(Dense(201, activation = ‘softmax’))
model.compile(optimizer=‘adadelta’, loss=‘categorical_crossentropy’, metrics=[“accuracy”])
model.summary()
return model

Dataset : http://www.vision.caltech.edu/visipedia/CUB-200.html

Thanks!