Teaching Raspberry Pi to teach itself

For most of us, learning is a part of life. Beginning at birth, we learn how to understand emotions, walk and talk as the primary steps in learning. For machines, although learning appears to be high-tech, it is not an isolated incident. We see incidents of machine learning around us almost every day without knowing. For example, machine-learning algorithms accomplish automatic tagging of Facebook photos and spam filtering of emails. Most of machine learning is a step in the direction of achieving artificial intelligence. Recently, a lot of interest has been generated by a new area of machine learning known as deep learning.

So far, only big data centers had confined this knowledge of deep learning, as deep learning technology depends largely on huge data sets. Only the big data-mining firms such as Microsoft, Facebook and Google had access to such large amounts of data. Now, a new startup Jetpac is planning to let everyone access this technology. Any person with a computing device can use their app to access deep learning technology, as the video on their website shows (https://www.jetpac.com/deepbelief). However, you may find that this technology is not so perfect. Just as the human brain, machines too suffer from optical illusions – confusing sidewalks with crossword puzzles, flutes with spiral bound notebooks and trash bags as black swans – see it below.

Pete Warden has done a great job of porting deep learning technology to the immensely popular, credit card sized, inexpensive single board computer, the Raspberry Pi or RBPi. The factor that has helped this process is that RBPi has a GPU with roughly 20GFLOPS of computing power, according to the documentation released recently by Broadcom, the manufacturers. That enabled Pete to port his SDK of Deep Belief Image Recognition to the RBPi.

If you would like your RBPi to be able to recognize things it sees around itself, follow the instructions here. However, for running the algorithm on the RBPi, you must allocate at least 128MB of RAM to the GPU and reboot the RBPi so that the GPU can claim the memory freed-up in the process. When you first run the program deepbelief on your RBPi, it will spew out a long list of different types of objects.

Thanks to the documentation about the RBPi GPU made public by Broadcom, Pete was able to write custom assembler programs for the 12 parallel ‘QPU’ processors that lurk within the embedded GPU. Additionally, the GPU makes heavy use of mathematics, which allows the algorithm process a frame in around three seconds. The technical specs of the graphics processor were released only a few months back, which has led to a surge of community effort to turn that into useable sets of examples and compilers.

Pete had to patch one of the existing assemblers heavily so that it could support more instructions. He had to create a set of helper macros so that programming the DMA controller was easier. Once these algorithms were tuned to the GPU’s internal method of working, Pete released them as open source.