Rotated MNIST data and a shallow CNN achieves 99.48 % accuracy in less than 1 hour, using a core-i7 CPU machine (no GPU)! The result is as good as this google paper but the model is much simpler. https://papers.nips.cc/paper/5854-spatial-transformer-networks.pdf
You can run the test.py to test the saved model
For testing you just need keras; for training openCV (cv2), imutils and keras are required