In tensorflow, there are many usable features for tasks besides just for learning. One worth mentioning is the function for rendering framed rects for given boundingboxes that can be used for fast evaluation of predictions of an image. But what if we want to get fancy? We have recently faced a task, to crop given areas from an image, process them into features and render them back onto the image. This could be done in keras or tensorflow so that it can be fast and embedded in a model. Or even possibly – overlay an image, not with framed boundingboxes, but alphablend with filled rectangles. To note, we want a feature vector rendering, not a full graphics renderer with tensorflow, which already exists (at least in the form of this example).
At Rossum, we are training large neural network models daily on powerful GPU servers and making this process quick and efficient is becoming a priority for us. We expected to easily speed up the process by simply transitioning the training to use multiple GPUs at once, a common practice in the research community.
But to our surprise, this problem is still far from solved in Keras, the most popular deep learning research platform which we also use heavily! While multi-GPU data-parallel training is already possible in Keras with TensorFlow, it is far from efficient with large, real-world models and data samples. Some alternatives exist, but no simple solution is yet available. Read on to find out more about what’s up with using multiple GPUs in Keras in the rest of this technical blogpost.