At Big Vision LLC, we receive requests for a lot of consulting projects where the solution needs to be delivered on a small single board computer like the Raspberry Pi. For example, one company wants to build a vision system for accurately detecting the state of railroad crossing signals ( a pair of alternating red lights ). Another company wants to build a system for detecting drones from a camera mounted on an aircraft. A third company is developing a solution for retailers for real-time in-store analytics. As you can imagine different applications call for different solutions. In this post, we will provide a quick review of the various options available for delivering embedded vision on single board computers.
With the tremendous progress made in the field of Computer Vision and availability of cheap computation in recent years, Computer Vision is at an inflection point where our devices are just beginning to get “eyes” beginning with our cars. More and more computer vision algorithms are being deployed for vision on the edge use cases like drones, security cameras, mobile applications, retail analytics, etc.
There are many popular devices that are commonly used for running computer vision algorithms by early adopters. However, when it comes to an industrial application, long-term viability becomes a very important factor. In this article, I have analyzed some of the most suitable devices for computer vision and assessed how you should go about choosing a device for your industrial computer vision application.
Deep Learning vs Traditional Computer Vision
Deep learning based algorithms are very robust and powerful in general and work with real world noise and variations for most use-cases. However, they need massive computing power usually provided by a good Nvidia GPU attached to a good CPU. This is not only expensive but in a lot of cases, it’s not possible to connect a GPU to an embedded system. However, this is changing rather quickly with Nvidia releasing Jetsons for edge computing. Also, some researchers and start-ups are looking to run deep learning on the CPU.
Depending on your use-case, the performance of a device may or may not be critical. Performance requirements can vary quite a lot. Consider the two scenarios — (a) Analyzing the footage of a security camera at the restricted area in a busy airport, (b) Demographic analysis of visitors in a retail store. In scenarios b), you could run your algorithm at just 5 frames per second (FPS) but in scenario (a) a higher FPS is critical. Scenario (a) also places a much greater demand for accuracy. Knowing these performance requirements are key to using a suitable device for your use-case.
Computer vision has made huge progress in last few years and is evolving very fast. New frameworks are still being written, new networks and datasets are being released, and new chips are being designed at a historically unprecedented pace. The following tweet by Andrej Karpathy succinctly makes this point.
The eco-system is rewriting itself every year, and you don’t want to be stuck with a loser.
The support of the community and that of large organizations often decide the winners.From this point of view some of the devices like Raspberry Pi, Jetson Tk1 & Tx1 have a huge advantage.
Community support/Large organizations’ pull are going to be key factors in deciding the winners. From this point of view, some of the devices like Raspberry Pi, Jetson Tk1 & Tx1 have a huge advantage.
Here is a list of a few devices that are being used for computer vision use-cases:
1. Nvidia Jetson TX1
Loaded with 64-bit quad-core ARM Cortex-A57 CPU with a 256-core Maxwell GPU, Nvidia Jetson TX1 is one of the most powerful devices in the market for embedded computer vision. What makes it more impressive is that it consumes just 10W of power to deliver 1 Teraflop 16FP performance. At $495, it is slightly pricey, but with Nvidia putting all its force behind it, you have a growing eco-system to make this the right choice for high-end computer vision applications.
2. Nvidia Jetson TK1
Nvidia Jetson TK1 is the predecessor of Jetson TX1 and is available at $192. If you think the pricing is odd, think again. With 192-core Kepler GK20a GPU, it is priced at $1 per CUDA core and it delivers a performance of 300 GigaFlops. Tk1 doesn’t have onboard WiFi or Bluetooth. However, these can be added via USB or the mini-PCIe port.
3. Raspberry Pi 3
Raspberry Pi 3 (RasPi3) has been a significant upgrade on Raspberry Pi 2. With 1.2 GHZ quad-core ARM Cortex A53, new RasPi3 is the go-to device for traditional computer vision on a budget applications (usually using OpenCV). It can output a video at full 1080p. Not only has Google hinted on betting on RaPi3, it has also provided Tensorflow support for it. An active and growing community and recent interest shown by Google makes this a real viable choice for computer vision.
4. Beagleboard: BeagleBone Black
BeagleBone Black is popular for IoT applications. As compared to Raspberry Pi which has a single 26-pin header that can be used as 8 GPIO pins, or as a serial bus, the Beaglebone Black has two 48-socket headers that can be utilized for virtually limitless I/O hardware. It also includes a number of analog I/O pins that allow it to connect to a variety of sensor hardware that can’t be used with an out-of-the-box Raspberry Pi. With double the price and inferior performance, BeagleBone Black isn’t an excellent choice for computer vision as video decoding, 3D rendering, and general GUI performance is much better on Raspberry Pi 3.
5. Orange Pi
Orange Pi has slightly better hardware than Raspberry Pi for the price point. It also has some features missing from Raspberry Pi like SATA, Gigabit Ethernet, IR, and mic. However, the lack of an eco-system and the unavailability of support has kept this otherwise decent piece of hardware away from the computer vision community.
Sold by Hardkernel, At $39, this is a serious contender against Raspberry Pi. It packs double the ram and much faster processor than RasPi 3. Features like Gigabit Ethernet and 4K video support make it superior to Raspberry Pi 3. Software support and the strength of the community is nowhere close to Raspberry Pi. However, this card boasts of a small but dedicated community and that is always a good sign. Another plus point for ODROID-C2 is its easy availability as opposed to Raspberry Pi.
7. Banana Pi
Banana Pi has the same processing per dollar as that of Raspberry Pi. However, the eco-system around Raspberry Pi doesn’t make it worth trying to do computer vision on Banana Pi.
Note: There are a few more devices like Intel Edison that are more suitable for IoT use cases and hence have been ignored for this post. Arduino board is another device that is extremely popular and a lot of hobbyists and students run some computer vision algorithms on it. However, we believe that Arduino is more suitable for Internet of Things but not computer vision due to its lower technical specifications(specifically very low RAM availability). Also, solutions providers like Movidius have not been included.
All in all, Raspberry Pi 3, Jetson TK1 and Jetson TX1 are clearly ahead of the game today with huge communities and companies behind them. ODROID-C2 is the dark horse that could be a good alternative to Raspberry Pi. Still, the market is quite nascent with too many big companies still working hard to make a dent in this market. Please let us know in comments which device are you using for computer vision.
Subscribe & Download Code
If you liked this article and would like to download code (C++ and Python) and example images used in all posts of this blog, please subscribe to our newsletter. You will also receive a free Computer Vision Resource Guide. In our newsletter, we share OpenCV tutorials and examples written in C++/Python, and Computer Vision and Machine Learning algorithms and news.