Leveraging Docker to Quickly Setup an Object Detection API

Adam Costenbader Cloud, Development Technologies, Docker, Tutorial 1 Comment

Attention: The following article was published over 3 years ago, and the information provided may be aged or outdated. Please keep that in mind as you read the post.

In this blog, we’re going to leverage Docker containers to quickly install an object detection software called DeepStack. We’ll also use Docker containers to install a companion software called DeepStackUI, which will help us quickly set up the data we need for processing our images.

DeepStack is an open-source software that leverages AI and provides an out-of-the-box model of objects to utilize in processing. You do not have to settle for the model they provide! You can train DeepStack to learn new objects and even to recognize specific faces and scenes.

Even if you don’t have a need for this particular software right now, the concepts we’ll cover are still valuable. It will illustrate just how quickly you can set up software with containers utilizing Docker.

If you’re looking for an excuse to utilize DeepStack in your current project, here are some ideas. You could use its powerful processing to detect …

  • If tools have been returned to the appropriate area in a workspace.
  • If a car or person has entered into an area it shouldn’t have.
  • Is your dog still in the backyard.
  • You could even set up DeepStack to do facial recognition!

Alright, let’s get to it!

Assumptions

We will assume two things for this blog.

Using Docker for DeepStack Installation

Installing DeepStack is a very simple process thanks to the magic of Docker and WSL 2.

With WSL installed, you can open the Windows menu and type “WSL” and open the WSL command prompt option presented to you.

From this prompt, we’ll execute the following line.

sudo docker run -e VISION-DETECTION=True -v localstorage:/datastore \
-p 80:5000 deepquestai/deepstack

This will take some time to finish running depending on your internet connection speeds since it will need to download and extract the container. Once it’s completed, you should see an output similar to the following.

Docker containers to install DeepStack

This indicates that the DeepStack software is running and ready for us to use!

You should now be able to test this by navigating to http://localhost. You should see a page that shows the following image in it.

DeepStack with Docker Containers

For now, leave this WSL prompt window open, and let the DeepStack container continue to run and output to it while we move ahead with the next step: installing DeepStackUI.

Using Docker for DeepStackUI Installation

Now that DeepStack is running, we could immediately start interacting with it via its API. Awesome!

However, it’s a bit difficult to know exactly what to send the API without a lot of trial and error. Luckily, yet again, we can leverage a Docker container called DeepStackUI to quickly set up the object detection commands we’d need.

DeepStackUI will provide us with a user interface in which we can quickly scaffold our image processing and object detection API parameters. It can also be incredibly helpful for debugging false positives and other detection anomalies.

Let’s get to it!

Open a new WSL command prompt by hitting the windows key, typing “WSL,” and selecting the command prompt option there.

From this new prompt window, run the following command but note that you will need to replace the DEEPSTACK_IP value (192.xxx.x.x) with the IP address of the machine that you are working on.

sudo docker run -p 8501:8501 -e DEEPSTACK_IP=’192.xxx.x.x’ robmarkcole/deepstack-ui:latest

Once the image is downloaded and extracted, the Docker container should start up and show an output similar to the following.

Docker Container to install DeepStack
Now, we can test in the browser by navigating to http://localhost:8501/. You should hopefully see an output that contains:

If this is what you’re seeing, you are now ready to start playing around!

Using DeepStack

From here, with the left-hand sidebar, we can start changing thresholds and values that will help us determine how we would want to talk to the DeepStack API. Being able to do this via a rich UI will really help speed up the development process, as we can quickly determine the values that the API expects in a visual manner.

The ROI section in the left-hand sidebar is essentially the cropping boundaries for the image that we would like DeepStack to focus on. If you adjust these slightly, you’ll start to see green lines show over the image. You can use the provided sliders to quickly create a bounding box on any specific area that you’d like DeepStack to run its object detection.

As you are adjusting these values, DeepStackUI is interacting with the DeepStack API container sending API requests. You can see this interaction by going back to your WSL command prompt from earlier where DeepStack API is running. You should see new lines showing up that look like this.

Wrapping It Up

In this blog, we utilized the strengths of Docker containers to quickly spin up two separate containers that we could utilize for our software development needs – one running the DeepStack API software and the other running a utility to help us get started with the DeepStack API.

The best part is that once we are comfortable with our setup, we could quickly and easily stop and remove the DeepStackUI utility container to free up resources all while continuing to run the DeepStack API software without interruption.

Thanks for following along, and I hope you found this blog informative!

When you are ready to finish up working with DeepStack API and DeepStack UI, you can close their WSL command prompt windows. This should stop the container from running any further.

If you’d like to learn more about utilizing Docker, check out “Azure Web Apps in Docker Containers” – another recent post on the Keyhole Dev Blog.

0 0 votes
Article Rating
Subscribe
Notify of
guest

1 Comment
Oldest
Newest Most Voted
Inline Feedbacks
View all comments