完成多路视频并行接入、解码、多级推理、结构化数据分析、上报、编码推流等过程,插件式/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. S3C2410——LED灯实验

    一.S3C2410输入/输出的原理 Linux主要有字符设备.块设备和网络设备3类驱动程序,我们一般编写的驱动都是字符设备驱动程序. 二.程序部分 编写程序控制3个LED灯,代码分为2个部分:控制LE ...

  2. linux fedora35 配置jdk,安装mysql,安装tomcat

    配置jdk18很简单,下载jdk,只需要.tar.gz结尾的文件就行,https://download.oracle.com/java/18/latest/jdk-18_linux-x64_bin.t ...

  3. 使用用户名密码或ssl证书获取zabbix-api token,批量操作管理zabbix-server

    概述 Zabbix API 允许你以编程方式检索和修改 Zabbix 的配置,并提供对历史数据的访问.它广泛用于: 创建新的应用程序以使用Zabbix: 将Zabbix与第三方软件集成: 自动执行常规 ...

  4. nodejs + koa + typescript 集成和自动重启

    版本说明 Node.js: 16.13.1 全局安装 TypeScript yarn global add typescript 创建项目 创建如下目录结构 project ├── src │ └── ...

  5. 『忘了再学』Shell基础 — 13、环境变量(一)

    目录 1.用户自定义的环境变量 (1)环境变量设置 (2)查询自定义环境变量 (3)删除自定义环境变量 2.系统自带的环境变量--PATH环境变量 (1)PATH环境变量 (2)PATH环境变量的作用 ...

  6. 渗透:zANTI

    Zanti简介 Zanti是由Zimperium公司打造的Android平台下的渗透测试工具包. Zanti支持两种中间人攻击方式,分别为MIMT攻击和ARP攻击,中间人内带有多个攻击模块,例如MAC ...

  7. vue生命周期加载顺序

    1.beforeCreate(创建前)表示实例完全被创建出来之前,vue 实例的挂载元素$el和数据对象 data 都为 undefined,还未初始化.此钩子函数不能获取到数据,dom元素也没有渲染 ...

  8. 手绘图解java类加载原理

    摘要:这也许是全网"最大"."最细"."最深"的java类加载原理图解了. 本文分享自华为云社区<[读书会第12期]这也许是全网&qu ...

  9. python之模块(os、sys、json、subprocess)

    目录 os模块 sys模块 json模块 subprocess模块 os模块 os模块主要是与操作系统打交道. 导入os模块 import os 创建单层文件夹,路径必须要存在 os.mkdir(路径 ...

  10. 第06组 Beta冲刺 (3/5)

    目录 1.1 基本情况 1.2 冲刺概况汇报 1.郝雷明 2. 方梓涵 3.曾丽莉 4.杜筱 5. 董翔云 6.黄少丹 7.鲍凌函 8.詹鑫冰 9.曹兰英 10.吴沅静 1.3 冲刺成果展示 1.1 ...