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.
Performance Considerations
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.
Community Support
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.
6. ODROID-C2
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.
Conclusion
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.
Hi Satya Sir and Ankit Sir,
Nice article. Just wondering why Arduino with makeblock is not included in the list.
Thanks.
Hi Siddhant, amount of computation required in computer vision is generally very high and you would frequently run out of memory for most of the use-cases with Arduino.
What about a hefty i7? You can get one for 250 dollars and it’s a really powerful machine isn’t it? Maybe a bit cumbersome to install because of power supply but there are plenty of application where you do not need a battery
Ankit,
hi, excellent article. It would be nice to add a table comparing key factors among options (i.e. GPU, RAM, CPU, ports, etc…)
Best regards,
David
Thank you David! That’s an good idea. Will add one soon.
Well, all the above mentioned boards are awesome for prototyping. Considering, performance I think you should have included boards from Toradex https://www.toradex.com/products.
Udoo X86
http://www.udoo.org/udoo-x86/
Thank you. Looks impressive performance-wise. However, too early to judge for enterprise suitability. Will wait and watch :0
The ODroid C2 is $80CAD, so yet again, much better to stick with the Pi3.
As for the Banana Pro, you left off the fact that this is a very good device. I use it with 4 USB cameras, all positioned 90 degrees to each other on my robot, they all take a snap shot and find faces based on the open CV SDK in C++. The app I wrote for face detection uses a single thread to process the images (as openCV is not thread safe), but it uses a thread pool to write the images to disk, so it is very fast. The Banana pro has a a SATA connector that I have a 1TB SSD connected to, this backs up all my images. Then at the end of the week my robot goes through all the faces it didn’t recognise and we have a supervised learning session. The Banana Pro also has built in wifi (so does the Pi3 now – but the 2 didnt).
Anyway for other modules on my robot, my system is distributed using a 0MQ system. The other distributed modules are all Pi3 and Pi Zero. The Pi 3’s are for
1. Mobility and object avoidance/navigation
2. vision and image object detection
3. speech recog and synthesis
4. The mind module that controls everything,
5. A memory module with semantic networks/prolog and inference engines (and also relational DBs !).
6. Lastly I have an entertainment module Pi3 that drives a projector for films, a music system, and it plays games with me.
7. The Pi zeros are running a robot arm using generic programming techniques
All this and it is constantly evolving its personality !
See my web site, I’ve started writing it all up. http://www.roboticsfordreamers.com
I have got so much more to write up though, I just havent got the time with work etc.
Recently I meet those guys : http://rhomb.io/ , and would recommend a close follow up. basically their solution continues the Pi’s, Arduino’s, Beagleboard principle, except that the CPU is “changeable” so far at the moment support Exynos but soon might support Qualcomm, even AMDs.
That’s really great for prototyping commercial devices, since one board design might allocate different CPUs solution depending on what’s needed from the SOC.
This seems to be very unique and exciting! However, the company seems to be slightly early-stage, isn’t it? Would be keeping an eye on them.
so far they have their first batch of products almost ready for mass production, in fact i have an evaluation board with an exynos SOC. and access to the drivers for different Linux flavors, but could not have time to play with it yet.
The Asus tinker board is top of lines that comes with 4K. But it is also faster than anyone of them.
Here is link:
http://www.trustedreviews.com/news/asus-tinkerboard-release-date-price-specs-buy
wow, this was released last month! Specs are really impressive and price point quite unique in this market. We shall check it out. Thank you for pointing this out to us 🙂 .
U’re welcome.
http://www.eyesofthings.eu
Thank you Oscar. EOT looks like very promising project. How can one get hold of their factor-form board or any other board?
Q3 this year for early adopters
hey satya i am using odroid C2 for face detection and recognition using open CV but my fps is too damn low 1 or 2 fps … i tried both rasberry and and orange pi but odroid is better than them… moreover dlib doesnt perform well on odroid and the other two pies…. It would be very great if you could give me some suggestions on improving FPS
I would suggest parallella board (parallella.org).
Thank you Muncho. We plan to evaluate Parallella board and update this list. Thank you for pointing this out 🙂
I had a similar review for internal purposes and came out also with the following board and comparison:
UP, EUR 89-139, Max 2GB 32GB, Passmark 1202 (387 per core)
ASROCK J4205-ITX EUR150, NoMEM, ApolloLake Passmark:2397 (898 per core)
UP Squared N4200, EUR169-269, Max 4GB-64GB, Apollo Lake, Passmark 2048 (857 per core)
UDOO Advanced, N3160, EUR149, 4GB 32GB,CherryTrail, Passmark 1668 (477 per core)
UDOO Ultra, N3710, EUR259, 8GB 32GB, Passmark 1875 (572 per core)
UP, EUR 89-139, Max 2GB 32GB, Passmark 1202 (387 per core)
LattePanda, EUR 89, Max 2GB 32GB, Passmark 1202 (387 per core)
Other suggestions:
1. Do not believe to burst speed, It does not work for prolonged heavy load;
2. Take care of thermal design factor, we had several board overheating and resetting;
3. Take care of RAM type on the boards, DDRAM3/4 are faster
4. Take care of Multimedia extension of OpenCV (SSE4.2 / AVX) are strongly used by OpenCV
5. Check presence of CSI / CSI4X lanes on the board for embedded cams
6. Check presence of USB3 hub ports on the board
2017 Low power Intel cores are very promising, e.g.:
I7-7500U has Passmark 5261 with per core performance of 1950, which is (per core) closer
to top of line of intel i7 in 2013 (e.g. i7-4960HQ was Passmark 9770 single 2169), but with only 15W
of TDP. So we can expect 2017/17 Embeeded boards to release fully openCV enabled CPU.
NXP’s iMX6Q Processor is a good option for image processing too. NXP has development boards based on iMX6Q as well as Toradex
I don’t see anywhere the Panda Board
Why would you use the Beagle Board , when the Panda Board is designed for Video ??
http://pandaboard.org/
basically too slow or too expensive…
Great write-up, I am an enormous believer in commenting on blogs to help the weblog writers know that they’ve added something worthwhile to the world extensive web! (source roblox-cheats.com). Anyway, in my language, there are usually not much good source like this.