I’m very pleased to announce that I’ve managed to port the Deep Belief image recognition SDK to the Raspberry Pi! I’m excited about this because it shows that even tiny, cheap devices are capable of performing sophisticated computer vision tasks. I’ve talked a lot about how object detection is going to be commoditized and ubiquitous, but this is a tangible example of what I mean, and I’ve already had folks digging into some interesting applications; detecting endangered wildlife, traffic analysis, satellites, even intelligent toys.
I can process a frame in around three seconds, largely thanks to heavy use of the embedded GPU for heavy lifting on the math side. I had to spend quite a lot of time writing custom assembler programs for the Pi’s 12 parallel ‘QPU’ processors, but I’m grateful I could get access at that low a level. Broadcom only released the technical specs for their graphics chip in the last few months, and it’s taken a community effort to turn that into a usable set of examples and compilers. I ended up heavily patching one of the available assemblers to support more instructions, and created a set of helper macros for programming the DMA controller, so I’ve released those all as open source. I wish more manufacturers would follow Broadcom’s lead and give us access to their GPUs at the assembler level, there’s a lot of power in those chips but it’s so hard to tune algorithms to make use of them without being able to see how they work.
Download the library, give it a try, and let me know about projects you use it on. I’m looking forward to hearing about what you come up with!
Pingback: Four short links: 10 June 2014 - O'Reilly Radar
Is there a hardware diagram for it?
Reblogged this on My Blog.
Pingback: GPGPU hacking on the Pi | Raspberry Pi
Pingback: GPGPU hacking on the Pi | Faweiz Blog
Pingback: Machine Learning with Raspberry Pi | scientistnobee
Dear Pete,
I wrote a blog post following our mail conversations.
http://scientistnobee.wordpress.com/2014/06/20/machine-learning-with-raspberry-pi/
Pingback: Electronic Hobbies | GPGPU hacking on the Pi
So wich link to download?
Great work man, i’m thinking about some WATCH_DOGS-Styled stuff like recognition of Cameras n’ Stuff.
Pingback: GPGPU hacking on the Pi | Raspberry Pi » Geko Geek
Amazing work!
Pingback: Raspberry Pi Spotter | scientistnobee
what do you think about this platform? http://www.parallella.org/
Pingback: ใช้ GPU บน Raspberry Pi มาช่วยประมวลผล | Unofficial of Raspberry Pi Fan in Thailand
Hi,
I just tried your SDK. After downloading it, I extracted and enter $HOME/src in order to compile it:
sudo make TARGET=pi GEMM=piqpu
Then I copied the two files jpcnn and libjpcnn.so into the directory $HOME/LinuxLibrary. Then run sudo ./install.sh. Fine!
Now I compiled the example with Linux and run it to test the lena image. The output is somehow strange, since everything is zero except that the class Euopean hoopoe.
A snippet of the output:
790 0.000000 maze
791 0.000000 pajama
792 0.000000 purse
793 0.000000 parachute
794 0.000000 matchstick
795 0.000000 puffer
796 0.000000 swimming trunks
797 0.000000 volcano
798 0.000000 ptarmigan
799 0.000000 armadillo
800 0.000000 cuirass
801 0.000000 frying pan
802 0.000000 scale
803 0.000000 leatherback turtle
804 0.000000 chainlink fence
805 0.000000 tile roof
806 0.000000 pretzel
807 0.000000 burrito
808 0.515223 Euopean hoopoe
809 0.000000 cassette
810 0.000000 maraca
811 0.000000 rule
812 0.000000 jersey
813 0.000000 sunscreen
814 0.000000 espresso
815 0.000000 vase
816 0.000000 gorilla
817 0.000000 spider monkey
Do you have any idea?
Pingback: ใช้ GPU บน Raspberry Pi มาช่วยประมวลผล | Unofficial of Raspberry Pi Fan in Thailand
Pingback: Image Recognition on the Raspberry Pi 2 « Pete Warden's blog
Pingback: Deep learning on the Raspberry pi – Raspberry Pi News
Will this run on an older pi ie model a ?
Pingback: Developing an open source optical sorter for coffee
Impressive job Pete!
when I entered “sudo ./deepbelief” as the last command it gave me the error, “Can’t open device file: /var/lib/jpcnn/char_dev”. Do you know what I could do to fix it? Greatly appreciated!
Pingback: Raspberry Pi ve Makine Öğrenmesi - Python Özgür Kod Paylaşım - Makine Öğrenmesi Sitesi