存根 将 AI 应用于实时视频处理:基础知识及更多内容 - Unite.AI
关注我们.

思想领袖

将人工智能应用于实时视频处理:基础知识及更多内容

mm

发布时间

 on

作者:马克西姆鞑靼人, 数据科学 工程师于 莫比德夫.

在视频处理中使用人工智能 (AI) 并不是什么新鲜事。 如果您关注图像处理以外的领域,那么它是人工智能最常见的用例之一。 就像图像处理一样,视频处理也使用诸如 计算机视觉、物体识别、机器学习和深度学习来增强这一过程。 

无论您在哪些方面使用计算机视觉和 NLP 视频编辑 和生成,对象识别 视频内容自动标记 任务,机器学习来简化 AI视频分析,或者深度学习来加速实时 去除背景,用例日益增长。

继续阅读以了解在视频处理中使用人工智能时可以采取哪些方法。

实时视频处理的基础知识

让我们从基础开始。 实时视频处理是使用对象和面部识别的监控系统中的一项重要技术。 这也是工业领域人工智能视觉检测软件的首选流程。

那么,视频处理是如何工作的呢? 视频处理涉及一系列步骤,包括解码、计算和编码。 以下是您需要了解的内容:

  • 解码: 将视频从压缩文件转换回原始格式所需的过程。
  • 计算: 对原始视频帧执行的特定操作。
  • 编码方式: 将处理后的帧重新转换回其原始压缩状态的过程。

现在,任何视频处理任务的目标都是尽可能快速、准确地完成这些步骤。 实现这一目标的最简单方法包括:并行工作并优化算法以提高速度。 简单来说? 您需要利用文件分割和管道架构。

什么是视频文件分割?

视频文件分割允许算法同时工作,从而允许它们使用更慢、更准确的模型。 这是通过将视频分割成单独的部分然后同时处理来实现的。

您可以将视频分割视为虚拟文件生成的一种形式,而不是子文件生成。 

尽管如此,视频文件分割并不是实时视频处理的最佳选择。 究竟为什么? 这个过程让你很难暂停、恢复和 倒带 正在处理的文件。

什么是管道架构?

另一种选择是管道架构。 此过程用于分割和并行处理处理过程中执行的任务,而不是直接分割视频。

下面是一个简单示例,展示了管道架构在实践中的样子,以及如何在视频监控系统中使用它来实时检测和模糊面部。

在此示例中,管道将任务分为解码、人脸检测、人脸模糊和编码。 如果你想提高管道的速度,你可以使用管道 深度学习技术.

解码和编码解释

那么解码和编码呢? 有两种方法可以完成这些过程:软件和硬件。

您可能已经熟悉硬件加速的概念。 这一过程的实现得益于最新 NVIDIA 显卡中安装的解码器和编码器以及 CUDA 内核。

那么,在编码和解码过程的硬件加速方面,您有哪些可用选项? 以下是一些更受欢迎的选项:

  • 编译具有 CUDA 支持的 OpenCV: 使用 CUDA 编译 OpenCV 可优化解码和使用 OpenCV 的任何管道计算。 请记住,您需要用 C++ 编写它们,因为 Python 包装器不支持这一点。 但在需要使用 GPU 进行解码和数值计算而不从 CPU 内存进行复制的情况下,它仍然是更好的选择之一。
  • 使用 NVDEC/NVENC 编解码器支持编译 FFmpeg 或 GS​​treamer: 另一种选择是使用 FFmpeg 和 Gstreamer 自定义安装中包含的内置 NVIDIA 解码器和编码器。 但是,我们建议如果可能的话使用 FFmpeg,因为它需要较少的维护。 此外,大多数库都由 FFmpeg 提供支持,这意味着您将通过替换它来自动提高库的性能。
  • 使用 NVIDIA 视频处理框架: 最后的选择是使用 Python 包装器将帧直接解码为 GPU 上的 PyTorch 张量。 此选项消除了从 CPU 到 GPU 的额外复制。

人脸检测和模糊

对象检测模型(SSD 或 RetinaFace)是完成人脸检测的流行选择。 这些解决方案用于在框架中定位人脸。 并基于我们的 体验,我们倾向于更喜欢 Caffe 人脸跟踪和 TensorFlow 对象检测模型,因为它们提供了最好的结果。 此外,两者都可以使用 OpenCV 库 dnn模块.

那么,检测到人脸后接下来该怎么办? 接下来, Python 和 OpenCV基于系统将 揭示 边界框和检测置信度。 最后,对裁剪区域应用模糊算法。

如何构建人工智能驱动的实时视频处理软件?

众所周知,视频处理、支持视频处理的编解码器以及所需的硬件和软件本质上都是相当技术性的。

不过,这并不意味着您不能使用这些工具来构建您自己的实时视频处理软件。 

以下是您需要执行的操作的简要说明:

  1. 首先调整预先训练的神经网络以完成所需的任务。
  2. 配置您的云基础设施以处理视频处理并根据需要进行扩展。
  3. 构建一个软件律师来压缩流程并集成特定的用例,例如移动应用程序和管理或 Web 面板。

使用预先训练的神经网络和简单的应用程序层,为类似的视频处理软件开发 MVP 可能需要长达四个月的时间。 但是,范围和时间表取决于每个项目的详细信息。 在大多数情况下,从概念验证开发开始探索项目细节并找到最佳流程是有意义的。

Maksym 热衷于获得数据科学和机器学习方面的新见解和经验。 他对基于深度学习的技术及其在业务用例中的应用特别感兴趣。