How to Quickly Create and Run a Vehicle Counting Computer Vision App

In this guide, we’ll make an app that can count vehicles in real-time utilizing object counting, a technique used in computer vision that combines object detection and object tracking. Our final computer vision application will tell us how many objects of a specific kind are currently being detected in a video stream.

San Diego traffic

Our platform at alwaysAI provides a set of open source pre-trained models in our Model Catalog. The following example uses one of the starter models with a simple algorithm in order to achieve our goal. Let's walk through how we'll get there.

 

Getting started

We can create our vehicle counting application by building upon the alwaysAI simple_object_counter starter app, which already has a lot of the functionality that we need.

First, install the alwaysAI CLI onto your development computer and then download all of the starter apps:

$ aai get-starter-apps

Now let’s try running the object counting app to see what it produces. If you're using Linux or Windows, you can run the app right on your computer, and if you use MacOS, you can run it on a supported edge device. We’re using MacOS with a Raspberry Pi for this example, so we’ll choose “Remote Edge Device” for the deployment option, and the default settings for the rest. Run the following commands and then click on the http://localhost:5000 link that appears in your terminal (after successfully starting the app) to open the Streamer window:

$ cd alwaysai-starter-apps/simple_object_counter
$ aai app deploy
$ aai app start

Point the camera at something the model has been trained to recognize (you can see this list in the app.py file of the starter app) such as “chair” or “person.” You should be able to see the counter detecting and tracking items in real time, and telling us how many items are currently being viewed by the camera.

Ready to get started? Create your account now for free.

 

Choosing a computer vision model

Although the current model has a few labels that could work for our purposes, we'll search for a computer vision model in the alwaysAI model catalog that has been trained to recognize additional types of vehicles. To do this, we can simply visit the catalog and enter various things that we want our model to recognize in the search box. Let’s type in “truck bus car motorcycle” to see what we get.

vehicle screenshot

The first model that appears is the ssd_mobilenet_v1_coco_2018_01_28 model, and when I click “See more” I can see that the labels match our use case, since it can detect all four types of vehicles that we specified.

 

Adding the new model

Next, we’ll switch the model that we’re using in our app. To add the new model, run this command in the terminal:

$ aai app models add alwaysai/ssd_mobilenet_v1_coco_2018_01_28

And to remove the old model, run:

$ aai app models remove alwaysai/mobilenet_ssd

The second part of changing the model is to open the app.py file in the simple_object_counter starter app, and paste the new model in the code at the beginning of the function.

Before change:

def main():
    obj_detect = edgeiq.ObjectDetection("alwaysai/mobilenet_ssd")
    obj_detect.load(engine=edgeiq.Engine.DNN)

After change:

def main():
    obj_detect = edgeiq.ObjectDetection("alwaysai/ssd_mobilenet_v1_coco_2018_01_28")
    obj_detect.load(engine=edgeiq.Engine.DNN)

We’ll also change the list of objects to the labels we want our application to recognize.

OBJECTS = ["person", "chair", "sofa", "pottedplant"]


def main():
    obj_detect = edgeiq.ObjectDetection("alwaysai/mobilenet_ssd")
    obj_detect.load(engine=edgeiq.Engine.DNN)
OBJECTS = ["car", "truck", "bus", "motorcycle"]


def main():
    obj_detect = edgeiq.ObjectDetection("alwaysai/mobilenet_ssd")
    obj_detect.load(engine=edgeiq.Engine.DNN)

After making these changes, we’ll need to set up our Pi camera so that it’s pointing at some vehicles, and then deploy and run the app again to see what we get.

$ aai app deploy
$ aai app start

You should now be able to see our updated app correctly identifying and reporting the number of vehicles in view of the camera.

 

Conclusion

We’ve walked through a simple example of building upon the alwaysAI object counter starter app by changing the model and the application code. This example application could be repurposed to count many different types of objects, depending on the intended use case.

Creating a working application that incorporates computer vision is easier than ever before with the software provided by alwaysAI, which gives developers access to pre-trained computer vision models along with basic starter applications for various tasks, including object detection, image classification, pose estimation and more — simplifying what was previously an arduous and lengthy process for developers. We can’t wait to see what you build with alwaysAI!

Get started now

We are providing professional developers with a simple and easy-to-use platform to build and deploy computer vision applications on edge devices. 

Get started