Docker For Mac Raw Format
Docker Desktop. The preferred choice for millions of developers that are building containerized apps. Docker Desktop is a tool for MacOS and Windows machines for the building and sharing of containerized applications and microservices. Access Docker Desktop and follow the guided onboarding to build your first containerized application in minutes. Docker Engine powers millions of applications worldwide, providing a standardized packaging format for diverse applications. Docker Engine Sparked the Containerization Movement Docker Engine is the industry’s de facto container runtime that runs on various Linux ( CentOS, Debian, Fedora, Oracle Linux, RHEL, SUSE, and Ubuntu ) and Windows Server operating systems.
If you are looking out for the most effective real-time object detection algorithm which is open source and free to use, then YOLO(You Only Look Once) is the perfect answer. YOLO encompasses many of the most innovative ideas coming out of the computer vision research community. Object detection has become a critical capability of autonomous vehicle technology. Kiwibot is one such interesting example which I have been talking about. A Kiwibot is a food delivery robot equipped with six cameras and GPS to deliver the food order at the right place & at the right time. Last year it served around 40,000 food deliveries. Vectorworks 2017. Only the person who has ordered will be able to open the Kiwibot and retrieve the order through the app – all using Object detection algorithm. Isn’t it amazing?
YOLO is really very clever convolutional neural network (CNN) for doing object detection and that too in real-time. YOLO learns generalizable representations of objects so that when trained on natural images and tested on artwork, the algorithm outperforms other top detection methods. It is extremely very fast. It sees the entire image during training and test time so it implicitly encodes contextual information about classes as well as their appearance. Today it is popularly being adopted due to the reason that it achieves high accuracy while also being able to run in real-time. If you want to deep dive into YOLO, I recommend reading
https://arxiv.org/pdf/1506.02640v5.pdf
Let’s talk about Pico for On-Premises.
Pico is one interesting project I have been working since past 3 months. Its all about implementing object detection & analytics(Deep Learning) using Docker on IoT devices like Raspberry Pi & Jetson Nano in just simple 3 steps. Imagine you are able to capture live video streams, identify objects using deep learning, and then trigger actions or notifications based on the identified objects – all using Docker containers. With Pico, you will be able to setup and run a live video capture, analysis, and alerting solution prototype. A camera surveils a particular area, streaming video over the network to a video capture client. The client samples video frames and sends them over to AWS, where they are analyzed and stored along with metadata. If certain objects are detected in the analyzed video frames, SMS alerts are sent out. Once a person receives an SMS alert, they will likely want to know what caused it. For that, sampled video frames can be monitored with low latency using a web-based user interface. One of the limitation with the above approach was that it uses Cloud Deep Learning Platform called Amazon Rekognition Service which is free for the first 5,000 API calls only. Once you cross that limit, you will be charged. Hence, I started looking out for an AI platform which can run modern Deep Learning algorithm fast.
Why Yolo on Jetson Nano?
Deep learning is a field with intense computational requirements and the choice of GPU will fundamentally determine your deep learning experience. Having a fast GPU is a very important aspect when one begins to learn deep learning as this allows for rapid gain in practical experience which is key to building the expertise with which you will be able to apply deep learning to new problems. Without this rapid feedback, it just takes too much time to learn from one’s mistakes and it can be discouraging and frustrating to go on with deep learning. If you look at emerging modern libraries like TensorFlow and PyTorch, they are great for parallelizing recurrent and convolutional networks, and for convolution, you can expect a speedup of about 1.9x/2.8x/3.5x for 2/3/4 GPUs.
At just 70 x 45 mm, the Jetson Nano module is the smallest Jetson device with AI capability. This production-ready System on Module (SOM) delivers big when it comes to deploying AI to devices at the edge across multiple industries—from smart cities to robotics. Jetson Nano delivers 472 GFLOPs for running modern AI algorithms fast. It runs multiple neural networks in parallel and processes several high-resolution sensors simultaneously, making it ideal for applications like entry-level Network Video Recorders (NVRs), home robots, and intelligent gateways with full analytics capabilities. You can experience powerful and efficient AI, computer vision, and high-performance computing at just 5 to 10 watts.
If you have ever setup Yolo on Jetson Nano, I am sure you must have faced several challenges in terms of compiling Python, OpenCV & Darknet. Under this blog post, I will showcase how object detection can be simplified by using Docker container.
Preparing Jetson Nano
- Unboxing Jetson Nano Pack
- Preparing your microSD card
To prepare your microSD card, you’ll need a computer with Internet connection and the ability to read and write SD cards, either via a built-in SD card slot or adapter.
- Download the Jetson Nano Developer Kit SD Card Image, and note where it was saved on the computer.
- Write the image to your microSD card( atleast 16GB size) by following the instructions below according to the type of computer you are using: Windows, Mac, or Linux. If you are using Windows laptop, you can use SDFormatter software for formatting your microSD card and Win32DiskImager to flash Jetson Nano Image. In case you are using Mac, you will need Etcher software.
- To prepare your microSD card, you’ll need a computer with Internet connection and the ability to read and write SD cards, either via a built-in SD card slot or adapter
The Jetson Nano SD card image is of 12GB(uncompressed size).
Next, It’s time to remove this tiny SD card from SD card reader and plugin it to Jetson Board to let it boot.
Wow ! Jetson Nano comes with 18.09 by default
Yes, you read it correct. Let us try it once. First we will verify OS version running on Jetson Nano.
Verifying OS running on Jetson Nano
Verifying Docker
Updating OS Repository
Installing Docker 19.03 Binaries
You will need curl command to update Docker 18.09 to 19.03 flawlessly.
Running Jetson on 5W
Jetson Nano has two power mode, 5W and 10W. Set the powermode of the Jetson Nano to 5W by running the below CLI:
Please note that I encountered an issue while operating it on 10W as everytime I start the opendatacam container, it just gets rebooted.
Setting up a swap partition
In order to reduce memory pressure (and crashes), it is a good idea to setup a 6GB swap partition. (Nano has only 4GB of RAM)
Don’t forget to reboot the Jetson nano.
Verify your if your USB Camera is connected
I tested it with Logitech Webcam and Jetson already have required driver for this to work.
Output should be: /dev/video0 Usb ptp driver for mac.
I will be using OpenDataCam tool for object detection. It is an open source tool which quantifies and tracks moving objects with live video analysis. It runs flawlessly on Linux and CUDA GPU enabled hardware. Good news for NVIDIA Jetson fans ~ It is optimized for the NVIDIA Jetson Board series.
Interestingly, Opendatacam is shipped as a Docker container. Let us go ahead and try it out for the first time on Jetson Nano board. Follow the below steps to pull the shell script and run it for Jetson Nano.
Listing the container
By now, you should be able to access opendatacam UI under https://IP-ADDRESS:8080