完成多路视频并行接入、解码、多级推理、结构化数据分析、上报、编码推流等过程,插件式/pipe式编程风格,功能上类似英伟达的deepstream和华为的mxvision,但底层核心不依赖复杂难懂的gstreamer框架(少部分地方需要),框架主干部分主要使用原生C++ STL实现,目标是平台高可移植性。框架可用于:视频结构化、以图搜图、目标行为分析等应用领域。

主要功能

  • 视频接入,支持file/rtsp/udp/rtmp等主流视频流协议;
  • 多级推理,自带检测/分类/特征提取等推理插件。默认使用opencv.dnn实现,可基于其他类似tensorrt、甚至原生的pytorch/tensorflow扩展新的推理插件;
  • 目标跟踪,自带基于iou的跟踪插件,可基于其他算法扩展新的跟踪插件;
  • 行为分析,自带若干行为分析插件,比如目标跨线、拥堵/目标聚集判断;
  • 图像叠加,结构化数据和视频融合显示;
  • 消息推送,自带基于kafka的消息推送插件,可基于其他消息中间件扩展新的插件;
  • 录像/截图,自带截图/录像插件;
  • 编码输出,支持file/screen/rtmp/rtsp等主流方式输出编码结果;

主要特点

  • 可视化调试,自带pipe可视化功能,可在界面实时显示pipe的运行状态,如pipe中各个环节的fps/缓存队列大小,以及计算pipe起/止插件之间的时间延时,帮助程序员快速定位性能瓶颈位置;
  • 插件与插件之间默认采用“smart pointer”传递数据,数据从头到尾,只需创建一次,不存在拷贝操作。当然,可根据需要设置“深拷贝”方式在插件之间传递数据;
  • pipe中各通道视频的fps、分辨率、编码方式、来源均可不同,并且可单独暂停某一通道;
  • pipe中可传递的数据只有两种,一种frame_meta数据、一种control_meta数据,结构清晰明了;
  • 插件组合方式自由,在满足客观逻辑的前提下,可合并、可拆分,根据需要设计不同的pipe结构。同时自带pipe结构检查功能,识别出不合规的pipe结构;
  • pipe支持各种hook,外部通过hook可以实时获取pipe的运行情况(第1点就是基于该特性实现);
  • 基于指定基类,所有自带插件全部可自定义重新实现;
  • 框架主干代码完全基于原生C++ STL实现,跨平台编译部署简单。

目前进度

  • 2022/7/22:已完成主干框架开发,预估占总体进度的1/3。等基本完成后开源,有兴趣的朋友可以关注。

下面第一张图显示pipe构建过程,第二张图自动显示pipe结构、并实时刷新pipe运行状态:

VP视频结构化框架的更多相关文章

  1. VideoPipe可视化视频结构化框架开源了!

    完成多路视频并行接入.解码.多级推理.结构化数据分析.上报.编码推流等过程,插件式/pipe式编程风格,功能上类似英伟达的deepstream和华为的mxvision,但底层核心不依赖复杂难懂的gst ...

  2. VideoPipe可视化视频结构化框架新增功能详解(2022-11-4)

    VideoPipe从国庆节上线源代码到现在经历过了一个月时间,期间吸引了若干小伙伴的参与,现将本阶段新增内容总结如下,有兴趣的朋友可以加微信拉群交流. 项目地址:https://github.com/ ...

  3. [AI开发]基于DeepStream的视频结构化解决方案

    视频结构化的定义 利用深度学习技术实时分析视频中有价值的内容,并输出结构化数据.相比数据库中每条结构化数据记录,视频.图片.音频等属于非结构化数据,计算机程序不能直接识别非结构化数据,因此需要先将这些 ...

  4. 视频结构化 AI 推理流程

    「视频结构化」是一种 AI 落地的工程化实现,目的是把 AI 模型推理流程能够一般化.它输入视频,输出结构化数据,将结果给到业务系统去形成某些行业的解决方案. 换个角度,如果你想用摄像头来实现某些智能 ...

  5. [AI开发]视频结构化类应用的局限性

    算法不是通用的,基于深度学习的应用系统不但做不到通用,即使对于同一类业务场景,还需要为每个场景做定制.特殊处理,这样才能有可能到达实用标准.这种局限性在计算机视觉领域的应用中表现得尤其突出,本文介绍基 ...

  6. [AI开发]零代码分析视频结构化类应用结构设计

    视频结构化类应用涉及到的技术栈比较多,而且每种技术入门门槛都较高,比如视频接入存储.编解码.深度学习推理.rtmp流媒体等等.每个环节的水都非常深,单独拿出来可以写好几篇文章,如果没有个几年经验基本很 ...

  7. Spark如何与深度学习框架协作,处理非结构化数据

    随着大数据和AI业务的不断融合,大数据分析和处理过程中,通过深度学习技术对非结构化数据(如图片.音频.文本)进行大数据处理的业务场景越来越多.本文会介绍Spark如何与深度学习框架进行协同工作,在大数 ...

  8. DeepLearning.ai学习笔记(三)结构化机器学习项目--week2机器学习策略(2)

    一.进行误差分析 很多时候我们发现训练出来的模型有误差后,就会一股脑的想着法子去减少误差.想法固然好,但是有点headlong~ 这节视频中吴大大介绍了一个比较科学的方法,具体的看下面的例子 还是以猫 ...

  9. Android组件化框架设计与实践

    在目前移动互联网时代,每个 APP 就是流量入口,与过去 PC Web 浏览器时代不同的是,APP 的体验与迭代速度影响着用户的粘性,这同时也对从事移动开发人员提出更高要求,进而移动端框架也层出不穷. ...

随机推荐

  1. Java安全之SnakeYaml反序列化分析

    Java安全之SnakeYaml反序列化分析 目录 Java安全之SnakeYaml反序列化分析 写在前面 SnakeYaml简介 SnakeYaml序列化与反序列化 常用方法 序列化 反序列化 Sn ...

  2. 基于dhtmlxGantt的Blazor甘特图组件

    基于dhtmlxGantt实现的甘特图组件,目前仅做到了数据展现,方法及插槽暂未实现,若需可按照dhtmlxGantt的文档及微软的Balzor文档,自行扩展. 数据发生变化后甘特图会立即发生变化. ...

  3. [保姆级教程] 如何在 Linux Kernel (V5.17.7) 中添加一个系统调用(System call)

    最近在学习 <linux Kernel Development>,本书用的linux kernel 是v2.6 版本的.看完"系统调用"一节后,想尝试添加一个系统调用, ...

  4. redis 基础1

    1.redis是什么? redis是非关系型数据库key-value数据库,开源免费.是当下NoSQL技术之一 2.redis能干吗? (1)内存存储,可以持久化,redis存储在内存中,内存的话是断 ...

  5. WinUI3开发笔记(Ⅰ)

    ·背景:自从接触了微软的WinUI3的界面,瞬间觉得C# .NetFramework不香了,于是入坑网上教程极少的WinUI3的开发...... 难 (一,安装开发环境) 具体参考微软官网说明http ...

  6. monit 配置详解(monitrc)

    monitrc是Monit的主配置文件(控制文件). monitrc的内容主要分为全局(golbal)和服务(services)两个部分. 默认情况下monitrc文件在/etc/monit目录下. ...

  7. 一个恢复CSI挂载信息的解决方法

    一个恢复CSI挂载信息的解决方法 问题描述 之前有做过一个华为OBS 的CSI插件,其基本运作原理如下图所示.CSI插件Pod挂载了主机的/var/lib/kubelet/pods目录,当创建挂载Pv ...

  8. 内网穿透frp教程 windows远程桌面连接

    鉴于ngrok不是特别好用 昨天又发现frp这个神器 在管理端还有图形界面十分友好 话不多说开始 准备工作 1.一个域名 2.一台服务器 一.域名与服务器 域名和服务器直接买就好咯 价格不高 一定要在 ...

  9. 使用 vim 快速对当前文件夹下的文件批量重命名

    前言 我们在使用 Linux 的时候,有很多种方法可以对文件进行重命名,例如 命令行 下的 mv 命令,或者是使用像 dolphin 这样的图形文件管理器.但是有时候需要对一个文件夹下的所有文件批量重 ...

  10. FastDFS 技术整理

    1.FastDFS 1.1.了解基础概念 1.1.1.什么是分布式文件系统? 全称:Distributed File System,即简称的DFS 这个东西可以是一个软件,也可以说是服务器,和tomc ...