3 ms·
I disagree. One of the first projects I tried in deep learning was to tweak the LeNet-5 style MNIST example to handle 64x64 color images. It was pretty straig
by dgacmu 10y ago
I disagree. One of the first projects I tried in deep learning was to tweak the LeNet-5 style MNIST example to handle 64x64 color images. It was pretty straightforward. Pretty straightforward doesn't mean it took ten minutes; but it didn't take more than a couple of hours, for someone clueless about DNN models.
If you look at: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/models/image/mnist/convolutional.py https://github.com/tensorflow/tensorflow/blob/master/tensorf...
you could actually manage it just by changing some of the image size and classes constants. In earlier versions of that code, you'd have had to manually change a few constants that weren't extracted well. This is approximately easy, once you know your way around the python side of TensorFlow. (Which itself takes some work, but it's not rocket science.)
A better approach would probably add a third convolutional layer to continue to shrink the 80x80 input down to something easier to handle in the fully connected layer.
What's surprised me is actually how slow it is, knowing nothing about their model. My guess is they could speed it up by adding that extra convolutional layer to reduce the amount of work done in the final FC layers. The fact that they're that slow suggests the opposite of what you're noting -- I doubt they had serious assistance on the machine learning side. I'm more impressed by the amount of time it must have taken to get the physical parts working and to collect 7,000 training images!
Training MNIST itself is trivial. You can get > 99% accuracy in only a few minutes of training using a single GPU. This model should be at most 10-20x slower than MNIST (but, again, that FC layer would scale badly).
If you look at the stackoverflow tags for tensorflow, you'll see a lot of very similar problems being solved. ("I want to reuse model X on problem Y, where such and such is different").
TPUs are awesome, but you don't need them for this problem. You could run the inference at 1 cucumber per second on a laptop. And you could train it on a Titan X in a matter of hours at most.
(Source: I was and am still slightly on the Google Brain team, as a non-machine-learning person.)