Pipeless vs Nvidia DeepStream
Tags: python, computervision, deeplearning, machinelearning
Published: 2023-09-29 19:54:06

This week I attended the YOLO Vision 2023 event and a common question when talking about Pipeless was, "what are the differences between Pipeless and Nvidia DeepStream?" So, today, I am going to elaborate on them.

> If you don’t have time to read the entire article, you can directly check the conclusions table at the end.

## What is a computer vision application?

A computer vision application is a software that takes a video stream as input, analyzes the video frame by frame (usually using a machine learning model) and produces an output. The output can be as simple as a new video stream with some modifications, like when you see bounding boxes, or more complex, like telling a robot what to do.
When you create a computer vision application you usually require a multimedia pipeline to handle the streams, and it is a common approach to use Gstreamer.

### What is GStreamer?

To provide some context, GStreamer is a framework to create media streaming applications. It is widely adopted and allows to create really complex multimedia pipelines.
GStreamer is a great solution, however, it has a steep learning curve so it requires you to have time to learn it and develop your pipelines depending on their complexity.

Both, Pipeless and Nvidia DeepStream make use of GStreamer, but in different ways.

## Nvidia DeepStream vs Pipeless

Let's comment some differences between Pipeless and Nvidia DeepStream

### GStreamer usage

Nvidia DeepStream can be seen as a bunch of GStreamer components that you can include as part of your GStreamer pipelines to incorporate computer vision tasks.
Using DeepStream components requires the developer to create the GStreamer pipelines, which is usually not an easy task.

[Pipeless](https://pipeless.ai), on the other hand, is a complete framework shipping everything a developer needs to create a computer vision application just by knowing some basics Python.
Pipeless is not a bunch of GStreamer components, instead, Pipeless uses existing open-source components and abstracts you from creating and maintaining the multimedia pipelines, allowing you to focus on your particular application and releasing you from learning GStreamer.

### Licenses and code availability

Nvidia DeepStream components are closed source, meaning they work as a black box, making it complex to debug or identify possible issues.

Pipeless is open-source, making use of the Apache License 2.0, so you can deep dive into the code if required to understand what is happening or modify it at any moment.

### Development experience

When using Nvidia DeepStream, a developer needs to learn GStreamer as part of the process, then learn how to use the DeepStream components to incorporate those to the pipeline and after all that, develop the concrete application for the particular use case.

Using Pipeless, a developer just needs to implement some hooks (Python functions) that will be automatically called at the proper time, significantly improving the development experience.

### Time to market

As mentioned above, to develop an application making use of Nvidia DeepStream, you need to first learn GStreamer. The whole process of learning and developing may depend on how skilled you are, but on average it will take you at least two or three weeks to have something functional.

In the case of Pipeless you should be able to have an application running within minutes. For example, you can create a whole application just by writing a single Python function with less than 10 lines of code.

### Extensibility

Even though Nvidia DeepStream has some plugins, they are also closed source and developed by the Nvidia team. People can’t easily register plugins to be used by others.

Pipeless contains a fully extensible plugin system. Anyone can create and register a plugin and other people will be able to use it out of the box, simply installing it with a single command. We think this will generate a great ecosystem of reusable code in the medium term.

### Scalability

Some components of Nvidia DeepStream allow you to add distributed capacities to your applications, however, you will need to modify your pipelines and configure those components properly.

Using Pipeless the scalability layer is already built-in, it processes frames in a distributed way out of the box (if you deploy more than one worker). Pipeless allows you to reach any FPS rate even without using GPUs by running several workers among different machines.

## Conclusions

The following table summarizes the mentioned points:

<table>
  <thead>
    <tr>
      <th></th>
      <th>Pipeless</th>
      <th>Nvidia DeepStream</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><b>Design</b></td>
      <td>Complete framework to enhance developer experience</td>
      <td>Bunch of GStreamer components</td>
    </tr>
    <tr>
      <td><b>Learning curve</b></td>
      <td>Inexistent</td>
      <td>High</td>
    </tr>
    <tr>
      <td><b>Code accessibility</b></td>
      <td>Open source</td>
      <td>Closed source / Private</td>
    </tr>
    <tr>
      <td><b>Time to market</b></td>
      <td>Minutes</td>
      <td>Weeks</td>
    </tr>
    <tr>
      <td><b>Extensibility</b></td>
      <td>Fully extensible by anyone</td>
      <td>Some plugins available from the Nvidia team</td>
    </tr>
    <tr>
      <td><b>Scalability</b></td>
      <td>Built-in</td>
      <td>You can add some extra components</td>
    </tr>
  </tbody>
</table>

Our mission at Pipeless is to support developers on building a new generation of vision powered applications.

{% cta https://github.com/pipeless-ai/pipeless %}
Support what we do by starring the GitHub repository
{% endcta %}

{% cta https://discord.gg/K2qxQ8uedG %}
Join the community on GitHub discussions or in our new Discord server.
{% endcta %}