Machine Learning using NVIDIA DIGITS - Can't Classify Left or Right Direction of a Ball Throw I'm using NVIDIA DIGITS 3.0 to do training for detecting direction of a ball throw.

My Dataset contains 400+ binary images each for left and right throw with the following specs in DIGITS:


Image Type: Grayscale, JPG
Image Size: 256 x 256
Resize Transformation: Fill


My Classification Model specs:


Solver Type: NAG
Networks: GoogLeNet
The rest are default values


Problem:

I separated out 8 images (4 for left, 4 for right) from my 400+ training dataset to do testing on my model. The results returned from my classification model always classifies all 8 are left throws at 90%+ accuracy even though 4 of which are clearly right throws. 

2 of the test images are shown below. My subject always stands at the same position to throw the ball, which is more or less constant. I've tried to change various parameters in the classification model like no. of epochs, subtract image mean, etc. to no avail. 

In a previous dataset, my model classifies all throws as right throw, similarly only one direction is detected. I'm unsure whether the problem lies in my dataset images or the training model. I would greatly appreciate any advice.

Left Throw:


Right Throw:
a few things,
these images look huge. Are they resized or cropped before going into the net. Try resizing instead of cropping. Also, if you use flip/rotation augmentation that will mess up your network.

Second, in the training data what % are right and what % are left throws? ideally, you have about 50:50 in the training set. If images in training are mostly left, it might learn to guess left preferentially. 

BTW, there might be an easier way to solve this problem. First, extract small patches and classify each patch as: 1 (contains a ball) or 0 (doesn't contain a ball) - this is segmentation.

After segmentation, a simple algorithm that tells you if the ball is left of center or right of center will give you the correct answer.