使用Python的计算机视觉,无需构建媒体管道
#python #tooling #machinelearning #computervision

Pipeless是一种易于使用的开源多媒体框架,重点是AI。
开发人员可以通过允许他们专注于代码,而不是构建和维护处理管道来构建和部署在几分钟内操纵音频和视频的应用程序。

例如,仅使用这些简单的代码行:

cats-code

您可以构建一个可以在任何视频中识别猫的应用程序:

本文的其余部分详细说明了什么是无管道以及如何使用它。您喜欢玩代码阅读吗?这是repo,准备运行的示例,包括examples/cats directory

问题

AI/ML在过去几年中席卷了编程世界。公共可用的计算机视觉(CV)模型的数量非常快。通过转移学习技术和诸如Keras或Pytorch之类的图书馆,每个人都可以在数小时内培训模型。 但是,多媒体的实际处理仍然很难。例如,所有这些CV模型都使用RGB/BGR数组作为图像输入。如果您想将它们与图片一起使用,则将其转换为RGB数组很简单。在视频的情况下,事情开始变得非常复杂。当您在本地开发时,它们会变得相对复杂,但是如果您尝试部署该服务,例如等待流并将其实时处理以产生某些数据或修改流本身时,则会变得更加困难。更不用说处理不同的输入媒体格式,用不同编解码器编码的流等等

无管道的运作方式

让我们使用计算机视觉示例更详细地解释上一节中概述的痛苦。想象一下,您正在构建一个在视频中检测猫的应用程序(这是现成的examples)。您需要:

  1. 视频脱落:打开容器(例如MP4)以提取单个流(视频,音频,字幕等)
  2. 解码每个流:将编码的流转换为原始流。在MP4视频流的情况下,这相当于使用H.264编码帧并将其转换为RGB帧。
  3. 处理视频:例如,您可以提供RGB图像作为计算机视觉模型的输入,以获取边界框,然后通过在猫的脸上画一个正方形来修改框架。
  4. 编码流:与解码步骤完全相反。您必须通过H.264编解码器将帧传递。
  5. 新视频:拿我们的H.264编码视频流,再次进行音频流并为其创建MP4容器,包括用于同步流的演示时间戳。

上面概述的步骤是您可以在本地使用视频的最基本管道。已经有一些工具,例如OpenCV,可以轻松地在for循环中的视频框架上迭代。但是,这非常适合学习和实验,不适合在生产中运行的真实应用。

在某个时候,您需要部署应用程序。想象一下,您有一个带有运动传感器的花园和相机,您想知道猫在任何时候的位置。当相机检测到一些动作时,该相机将发送视频。您需要将基本管道扩展到上方,以便能够识别出有新的流进行处理的何时。您还需要部署猫识别模型,并可能部署处理视频流的输入并将其传递到处理管道的RTSP服务器,最后将其发送给您。
从简单地使用公共猫识别模型开始的是,由于必须建立其他所有内容,最终变得非常困难。
这是无管道的地方。它会自动照顾所有乱七八糟的工作。通过使用无管道,您需要为上述情况做所有需要做的就是拍摄RGB图像,通过模型将其传递,绘制正方形和Voila。您刚刚挽救了生命的几周!这正是在演示部分下的文章开头显示的内容。

无管结构

无管道设计为易于部署在云中,但也能够用一个命令在本地运行它。它具有三个主要的独立组件,所有组件均通过消息使用轻质Nanomsg下一代库(NNG)传达:

  • 输入:照顾阅读/接收流,将其解码并将其分解成单个帧。它将原始框架发送给工人,以按照循环时间表进行处理。

  • Worker :照顾执行用户的应用程序(您的应用程序)。您可以部署任何数量的工人来并行处理框架,这有助于实时处理时增加流帧速率,并通过不同的计算机分配重负载。

  • 输出:照顾接收已处理的原始流,对其进行编码并将其mux插入输出容器格式,例如MP4。它允许您将视频发送到外部URI,直接在设备屏幕上播放或将其存储在文件上。

此外,无管有太多依赖性,您只需要在系统中安装一个GSTREAMER和PYTHON即可。查找要求和版本的详细列表here

路线图

现在,无管道支持一组有限的功能,但是,我们正在积极努力增加更多的功能。

您可以在README的Current State部分上了解有关当前支持的输入和输出格式的更多信息。您需要一个新的吗?创建拉动请求或要求它创建一个github问题。

当前版本是第一个版本,并且不支持自动将应用程序部署到生产中,但是,这是我们很快将带来的主要功能之一。所以,请继续关注!

We would love to get your feedback and contributions. You can also help us by starring the repository and sharing it!

GitHub logo miguelaeh / pipeless

在几分钟内构建和部署多模式感知应用程序的框架,而不必担心多媒体管道

Pipeless

Pipeless is an easy to use open source multimedia framework with a focus on AI. Developers can build and deploy apps that manipulate audio and video in just minutes by allowing them to concentrate on the code, not on building and maintaining processing pipelines.

For example, you can build thing like:

cats-output.mp4

With just with these simple lines of code:

Cats recognition code

Python 3.10

索引ð

要求â!

  • python(用3.10.12进行测试)
  • GSTREAMER 1.20.3 。使用gst-launch-1.0 --gst-version验证。安装说明here

关于MacOS

的注释

默认情况下,最新版本的MacOS(Ventura)随附Python 3.9。您可以使用:

安装3.10
  brew install python  

另外,要在MacOS中安装GSTREAMER,请使用以下代替上游说明,以确保安装所有必需的软件包:

  brew  
-