I re-trained the network and I used random shuffling in each epoch to avoid similar grain. the result are worst. whenever I use model.eval().
at the same time, it is not justifiable to test the model by using one test image and recalculate the parameters, neither to test my images in higher mini-batch size more than one.
I think there is a problem in batch-norm implementation, if someone tested eval mode in batch-norm please comment into my experiment.